Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4a5f8cbb39 | |||
| eb02be9582 | |||
| 74c22552df |
45
README.md
45
README.md
@@ -30,12 +30,12 @@ both of which have fixed hue values and vary from 10% to 98% lightness.
|
|||||||
Monotone curves have fixed chroma, whereas the accent curves' chroma varies
|
Monotone curves have fixed chroma, whereas the accent curves' chroma varies
|
||||||
smoothly as a function of lightness within sRGB gamut bounds.
|
smoothly as a function of lightness within sRGB gamut bounds.
|
||||||
|
|
||||||
| Chroma curves | Color trajectories |
|
| Chroma curves | Color trajectories |
|
||||||
|---|---|
|
|-------------------------------------------------------|------------------------------------------|
|
||||||
|  |  |
|
|  |  |
|
||||||
|
|
||||||
| Palette |
|
| Palette |
|
||||||
|---|
|
|--------------------------------|
|
||||||
|  |
|
|  |
|
||||||
|
|
||||||
Chroma curves are designed specifically to establish a distinct role for each
|
Chroma curves are designed specifically to establish a distinct role for each
|
||||||
@@ -60,8 +60,8 @@ varying only in lightness from dark to light grey.
|
|||||||
|
|
||||||
## Themes
|
## Themes
|
||||||
|
|
||||||
| Dark themes | Light themes |
|
| Dark themes | Light themes |
|
||||||
|---|---|
|
|----------------------------------------|------------------------------------------|
|
||||||
|  |  |
|
|  |  |
|
||||||
|
|
||||||
Themes are derived from the `monobiome` palette by selecting a monotone base
|
Themes are derived from the `monobiome` palette by selecting a monotone base
|
||||||
@@ -78,10 +78,10 @@ to the background.
|
|||||||
The following plots show the intersection of the sphere centered at a fixed
|
The following plots show the intersection of the sphere centered at a fixed
|
||||||
background color (`alpine` biome with a lightness of 20) under variable radii:
|
background color (`alpine` biome with a lightness of 20) under variable radii:
|
||||||
|
|
||||||
| | `-l 20 -d 0.3` | `-l 20 -d 0.4` | `-l 20 -d 0.5` |
|
| | `-l 20 -d 0.3` | `-l 20 -d 0.4` | `-l 20 -d 0.5` |
|
||||||
|---|---|---|---|
|
|---------------------|---------------------------------------------------|---------------------------------------------------|---------------------------------------------------|
|
||||||
| Color visualization |  |  |  |
|
| Color visualization |  |  |  |
|
||||||
| Editor preview |  |  |  |
|
| Editor preview |  |  |  |
|
||||||
|
|
||||||
In short, the base lightness (`-l`) dictates the brightness of the background,
|
In short, the base lightness (`-l`) dictates the brightness of the background,
|
||||||
and the contrast (`-d`) controls how perceptually distinct the accent colors
|
and the contrast (`-d`) controls how perceptually distinct the accent colors
|
||||||
@@ -146,11 +146,6 @@ the `monobiome` CLI:
|
|||||||
Running these commands in sequence from the repo root should work
|
Running these commands in sequence from the repo root should work
|
||||||
out-of-the-box, after having installed the CLI tool.
|
out-of-the-box, after having installed the CLI tool.
|
||||||
|
|
||||||
The `monobiome` CLI
|
|
||||||
produces the scheme file for requested parameters, and the [`symconf`][3] CLI
|
|
||||||
pushes palette colors through the scheme and into the app templates to yield a
|
|
||||||
concrete theme.
|
|
||||||
|
|
||||||
## Applications
|
## Applications
|
||||||
This repo provides palette-agnostic theme templates for `kitty`,
|
This repo provides palette-agnostic theme templates for `kitty`,
|
||||||
`vim`/`neovim`, and `fzf` in the `templates/` directory. Pre-generated
|
`vim`/`neovim`, and `fzf` in the `templates/` directory. Pre-generated
|
||||||
@@ -178,7 +173,7 @@ One can set these themes for the provided applications as follows:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Themes are generated using the [`kitty` theme
|
Themes are generated using the [`kitty` theme
|
||||||
template](templates/apps/kitty/templates/active.theme).
|
template](templates/kitty/active.theme).
|
||||||
|
|
||||||
- `vim`/`neovim`
|
- `vim`/`neovim`
|
||||||
|
|
||||||
@@ -193,7 +188,7 @@ One can set these themes for the provided applications as follows:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Themes are generated using the [`vim` theme
|
Themes are generated using the [`vim` theme
|
||||||
template](templates/apps/nvim/templates/theme.vim).
|
template](templates/nvim/theme.vim).
|
||||||
|
|
||||||
- `fzf`
|
- `fzf`
|
||||||
|
|
||||||
@@ -206,7 +201,7 @@ One can set these themes for the provided applications as follows:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Themes are generated using the [`fzf` theme
|
Themes are generated using the [`fzf` theme
|
||||||
template](templates/apps/fzf/templates/active.theme).
|
template](templates/fzf/active.theme).
|
||||||
|
|
||||||
- Firefox
|
- Firefox
|
||||||
|
|
||||||
@@ -214,13 +209,11 @@ One can set these themes for the provided applications as follows:
|
|||||||
add-ons][2], and switch between light/dark schemes based on system settings.
|
add-ons][2], and switch between light/dark schemes based on system settings.
|
||||||
You can also download raw XPI files for each theme in `app-config/firefox/`,
|
You can also download raw XPI files for each theme in `app-config/firefox/`,
|
||||||
each of which is generated using the [Firefox `manifest.json`
|
each of which is generated using the [Firefox `manifest.json`
|
||||||
template](templates/apps/firefox/templates/none-dark.manifest.json).
|
template](templates/firefox/auto-manifest.json).
|
||||||
|
|
||||||
Static [light][4] and [dark][5] themes are additionally available (i.e., that
|
Static [light][4] and [dark][5] themes are additionally available (i.e., that
|
||||||
don't change with system settings).
|
don't change with system settings).
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## CLI installation
|
## CLI installation
|
||||||
A brief theme generation guide was provided in the [Generation
|
A brief theme generation guide was provided in the [Generation
|
||||||
section](#generation), making use of the `monobiome` CLI. This tool can be
|
section](#generation), making use of the `monobiome` CLI. This tool can be
|
||||||
@@ -232,7 +225,7 @@ uv tool install monobiome
|
|||||||
pipx install monobiome
|
pipx install monobiome
|
||||||
```
|
```
|
||||||
|
|
||||||
The `monobiome` has provides three subcommands:
|
`monobiome` provides three subcommands:
|
||||||
|
|
||||||
- `monobiome palette`: generate palette files from raw parameterized curves
|
- `monobiome palette`: generate palette files from raw parameterized curves
|
||||||
|
|
||||||
@@ -295,6 +288,14 @@ The `monobiome` has provides three subcommands:
|
|||||||
output file to write filled template
|
output file to write filled template
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Config management
|
||||||
|
The `monobiome` CLI tool attempts to provide the minimal functionality needed
|
||||||
|
to produce customized themes for individual applications. If seeking a more
|
||||||
|
holistic, system-wide approach, you might consider using [`symconf`][3], a
|
||||||
|
general-purpose application config manager. `symconf` provides the templating
|
||||||
|
subsystem used for `monobiome` internals, and can be configured to apply live
|
||||||
|
theme updates to many apps with a single command line invocation.
|
||||||
|
|
||||||
|
|
||||||
[1]: https://github.com/isa/TextMate-Themes/blob/master/monoindustrial.tmTheme
|
[1]: https://github.com/isa/TextMate-Themes/blob/master/monoindustrial.tmTheme
|
||||||
[2]: https://addons.mozilla.org/en-US/firefox/collections/18495484/monobiome/
|
[2]: https://addons.mozilla.org/en-US/firefox/collections/18495484/monobiome/
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ def register_parser(subparsers: _SubparserType) -> None:
|
|||||||
type=str,
|
type=str,
|
||||||
default="hex",
|
default="hex",
|
||||||
choices=["hex", "oklch"],
|
choices=["hex", "oklch"],
|
||||||
help="Color notation to export (either hex or oklch)",
|
help="color notation to export (either hex or oklch)",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-f",
|
"-f",
|
||||||
@@ -25,13 +25,13 @@ def register_parser(subparsers: _SubparserType) -> None:
|
|||||||
type=str,
|
type=str,
|
||||||
default="toml",
|
default="toml",
|
||||||
choices=["json", "toml"],
|
choices=["json", "toml"],
|
||||||
help="Format of palette file (either JSON or TOML)",
|
help="format of palette file (either JSON or TOML)",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-o",
|
"-o",
|
||||||
"--output",
|
"--output",
|
||||||
type=str,
|
type=str,
|
||||||
help="Output file to write palette content",
|
help="output file to write palette content",
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.set_defaults(func=handle_palette)
|
parser.set_defaults(func=handle_palette)
|
||||||
|
|||||||
@@ -16,13 +16,13 @@ def register_parser(subparsers: _SubparserType) -> None:
|
|||||||
"mode",
|
"mode",
|
||||||
type=str,
|
type=str,
|
||||||
choices=["dark", "light"],
|
choices=["dark", "light"],
|
||||||
help="Scheme mode (light or dark)"
|
help="scheme mode (light or dark)"
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"biome",
|
"biome",
|
||||||
type=str,
|
type=str,
|
||||||
choices=list(monotone_h_map.keys()),
|
choices=list(monotone_h_map.keys()),
|
||||||
help="Biome setting for scheme."
|
help="biome setting for scheme"
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-m",
|
"-m",
|
||||||
@@ -30,7 +30,7 @@ def register_parser(subparsers: _SubparserType) -> None:
|
|||||||
type=str,
|
type=str,
|
||||||
default="oklch",
|
default="oklch",
|
||||||
choices=["wcag", "oklch", "lightness"],
|
choices=["wcag", "oklch", "lightness"],
|
||||||
help="Metric to use for measuring swatch distances."
|
help="metric to use for measuring swatch distances"
|
||||||
)
|
)
|
||||||
|
|
||||||
# e.g., wcag=4.5; oklch=0.40; lightness=40
|
# e.g., wcag=4.5; oklch=0.40; lightness=40
|
||||||
@@ -39,13 +39,13 @@ def register_parser(subparsers: _SubparserType) -> None:
|
|||||||
"--distance",
|
"--distance",
|
||||||
type=float,
|
type=float,
|
||||||
default=0.40,
|
default=0.40,
|
||||||
help="Distance threshold for specified metric",
|
help="distance threshold for specified metric",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-o",
|
"-o",
|
||||||
"--output",
|
"--output",
|
||||||
type=str,
|
type=str,
|
||||||
help="Output file to write scheme content",
|
help="output file to write scheme content",
|
||||||
)
|
)
|
||||||
|
|
||||||
# these params remain rooted in lightness; no need to accommodate metric
|
# these params remain rooted in lightness; no need to accommodate metric
|
||||||
@@ -58,13 +58,13 @@ def register_parser(subparsers: _SubparserType) -> None:
|
|||||||
"--l-base",
|
"--l-base",
|
||||||
type=int,
|
type=int,
|
||||||
default=20,
|
default=20,
|
||||||
help="Minimum lightness level (default: 20)",
|
help="minimum lightness level (default: 20)",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--l-step",
|
"--l-step",
|
||||||
type=int,
|
type=int,
|
||||||
default=5,
|
default=5,
|
||||||
help="Lightness step size (default: 5)",
|
help="lightness step size (default: 5)",
|
||||||
)
|
)
|
||||||
|
|
||||||
# gaps
|
# gaps
|
||||||
@@ -72,19 +72,19 @@ def register_parser(subparsers: _SubparserType) -> None:
|
|||||||
"--fg-gap",
|
"--fg-gap",
|
||||||
type=int,
|
type=int,
|
||||||
default=50,
|
default=50,
|
||||||
help="Foreground lightness gap (default: 50)",
|
help="foreground lightness gap (default: 50)",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--grey-gap",
|
"--grey-gap",
|
||||||
type=int,
|
type=int,
|
||||||
default=30,
|
default=30,
|
||||||
help="Grey lightness gap (default: 30)",
|
help="grey lightness gap (default: 30)",
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--term-fg-gap",
|
"--term-fg-gap",
|
||||||
type=int,
|
type=int,
|
||||||
default=65,
|
default=65,
|
||||||
help="Terminal foreground lightness gap (default: 60)",
|
help="terminal foreground lightness gap (default: 60)",
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.set_defaults(func=handle_scheme)
|
parser.set_defaults(func=handle_scheme)
|
||||||
|
|||||||
Reference in New Issue
Block a user