Add README
This commit is contained in:
parent
4a189df142
commit
32f7ed1a4e
1 changed files with 196 additions and 0 deletions
196
README.md
Normal file
196
README.md
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
# tinted-niri
|
||||
|
||||
This repository is meant to work with [tinted-theming/home](https://github.com/tinted-theming/home). It provides templates that can be used with base16 and base24 color schemes to generate functional theme snippets for [Niri](https://github.com/YaLTeR/niri), a scrollable-tiling Wayland compositor.
|
||||
|
||||
Modeled after [tinted-theming/base16-i3](https://github.com/tinted-theming/base16-i3).
|
||||
|
||||
## What this themes
|
||||
|
||||
Each file in `themes/` is a KDL snippet setting only Niri's color properties:
|
||||
|
||||
- `layout { focus-ring { active-color base0B, inactive-color base03, urgent-color base08 } }`
|
||||
- `layout { border { width 3, active-color base0B, inactive-color base03, urgent-color base08 } }`
|
||||
- `window-rule { match is-window-cast-target=true ... }` for screencast targets:
|
||||
- `focus-ring { active-color base0E, inactive-color base08 }`
|
||||
- `border { on, inactive-color base08 }`
|
||||
- `shadow { color base08F0 }`
|
||||
- `tab-indicator { active-color base0E, inactive-color base08 }`
|
||||
|
||||
Example (`themes/base16-default-dark.kdl`):
|
||||
|
||||
```kdl
|
||||
layout {
|
||||
focus-ring {
|
||||
active-color "#a1b56c"
|
||||
inactive-color "#585858"
|
||||
urgent-color "#ab4642"
|
||||
}
|
||||
|
||||
border {
|
||||
width 3
|
||||
active-color "#a1b56c"
|
||||
inactive-color "#585858"
|
||||
urgent-color "#ab4642"
|
||||
}
|
||||
}
|
||||
|
||||
window-rule {
|
||||
match is-window-cast-target=true
|
||||
|
||||
focus-ring {
|
||||
active-color "#ba8baf"
|
||||
inactive-color "#ab4642"
|
||||
}
|
||||
|
||||
border {
|
||||
on
|
||||
inactive-color "#ab4642"
|
||||
}
|
||||
|
||||
shadow {
|
||||
color "#ab4642F0"
|
||||
}
|
||||
|
||||
tab-indicator {
|
||||
active-color "#ba8baf"
|
||||
inactive-color "#ab4642"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
All other Niri settings (gaps, widths, binds, outputs, etc.) stay in your own config. Niri merges included files per-property, so only the colors above are overridden.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Niri with top-level `include` support (v25.11+)
|
||||
- [tinty](https://github.com/tinted-theming/tinty) (recommended)
|
||||
|
||||
## Usage (recommended: tinty)
|
||||
|
||||
1. Install and sync tinty:
|
||||
|
||||
```sh
|
||||
tinty sync
|
||||
```
|
||||
|
||||
2. Add this item to `~/.config/tinted-theming/tinty/config.toml`:
|
||||
|
||||
```toml
|
||||
[[items]]
|
||||
path = "https://github.com/alezunino/tinted-niri"
|
||||
name = "tinted-niri"
|
||||
themes-dir = "themes"
|
||||
hook = "cp -f \"$TINTY_THEME_FILE_PATH\" ~/.config/niri/tinted-niri.kdl"
|
||||
supported-systems = ["base16", "base24"]
|
||||
```
|
||||
|
||||
Then sync again:
|
||||
|
||||
```sh
|
||||
tinty sync
|
||||
```
|
||||
|
||||
3. Include the theme file from your Niri config. In `~/.config/niri/config.kdl`, at the top level (not inside any other block), and after your own `layout { }` block so the theme takes precedence:
|
||||
|
||||
```kdl
|
||||
include "~/.config/niri/tinted-niri.kdl"
|
||||
```
|
||||
|
||||
Includes are positional: settings in the included file override settings defined prior to the `include` line, and can themselves be overridden by settings defined after it. Included files are watched, so Niri live-reloads when tinty rewrites the file — no restart needed.
|
||||
|
||||
4. Apply a scheme:
|
||||
|
||||
```sh
|
||||
tinty apply base16-default-dark
|
||||
tinty apply base24-tokyo-night-dark
|
||||
```
|
||||
|
||||
Validate your config if anything looks off:
|
||||
|
||||
```sh
|
||||
niri validate
|
||||
```
|
||||
|
||||
## Usage (manual, without tinty)
|
||||
|
||||
Download any pre-generated theme and include it:
|
||||
|
||||
```sh
|
||||
curl https://raw.githubusercontent.com/alezunino/tinted-niri/main/themes/base16-default-dark.kdl > ~/.config/niri/tinted-niri.kdl
|
||||
```
|
||||
|
||||
```kdl
|
||||
// ~/.config/niri/config.kdl, top level
|
||||
include "~/.config/niri/tinted-niri.kdl"
|
||||
```
|
||||
|
||||
To try another scheme, just overwrite `tinted-niri.kdl`:
|
||||
|
||||
```sh
|
||||
curl https://raw.githubusercontent.com/alezunino/tinted-niri/main/themes/base16-catppuccin-mocha.kdl > ~/.config/niri/tinted-niri.kdl
|
||||
```
|
||||
|
||||
Niri picks up the change automatically.
|
||||
|
||||
If you want Niri to start even when the theme file is missing, use an optional include:
|
||||
|
||||
```kdl
|
||||
include optional=true "~/.config/niri/tinted-niri.kdl"
|
||||
```
|
||||
|
||||
## Templates
|
||||
|
||||
Defined in `templates/config.yaml`:
|
||||
|
||||
```yaml
|
||||
base16-default:
|
||||
extension: .kdl
|
||||
filename: "themes/{{ scheme-system }}-{{ scheme-slug }}.kdl"
|
||||
|
||||
base24-default:
|
||||
extension: .kdl
|
||||
filename: "themes/{{ scheme-system }}-{{ scheme-slug }}.kdl"
|
||||
supported-systems: [base24]
|
||||
```
|
||||
|
||||
- `templates/base16-default.mustache`: base16 template
|
||||
- `templates/base24-default.mustache`: base24 template
|
||||
|
||||
## Themes
|
||||
|
||||
`themes/` contains pre-generated `.kdl` files for every scheme, named `base16-<slug>.kdl` and `base24-<slug>.kdl` (e.g. `base16-default-dark.kdl`, `base24-tokyo-night-dark.kdl`).
|
||||
|
||||
They are built with [tinted-theming/home](https://github.com/tinted-theming/home) from the templates above.
|
||||
|
||||
## Customization
|
||||
|
||||
Because Niri merges includes per-property, keep your layout details in `config.kdl` and let the theme supply only colors:
|
||||
|
||||
```kdl
|
||||
layout {
|
||||
gaps 8
|
||||
border {
|
||||
width 2
|
||||
}
|
||||
}
|
||||
|
||||
// Theme colors win for focus-ring / border colors defined in the theme.
|
||||
include "~/.config/niri/tinted-niri.kdl"
|
||||
|
||||
// Anything after the include wins over the theme, e.g. force your own width:
|
||||
// layout {
|
||||
// border {
|
||||
// width 2
|
||||
// }
|
||||
// }
|
||||
```
|
||||
|
||||
Note the border special case from the Niri docs: writing `layout { border {} }` with no properties in an included file does nothing. This template always sets explicit colors (and `width 3` / `on` where needed), so it applies correctly as an include.
|
||||
|
||||
## Contributing
|
||||
|
||||
To regenerate themes, use the tinted-theming builder per [tinted-theming/home](https://github.com/tinted-theming/home). Do not edit files in `themes/` by hand — edit the `.mustache` templates instead.
|
||||
|
||||
## License
|
||||
|
||||
MIT — see [LICENSE](LICENSE).
|
||||
Loading…
Reference in a new issue