Files
tinty-wrapper/README.md
T
2026-09-18 00:33:06 +02:00

198 lines
4.4 KiB
Markdown

# tint
A small wrapper around [Tinty](https://github.com/tinted-theming/tinty) that manages light/dark theme pairs and applies the selected theme to Ghostty, Zed, Herdr, and OMP.
## Requirements
This setup targets macOS and requires:
- [Homebrew](https://brew.sh/)
- Go 1.26 or newer
- Tinty 0.34 or newer
- [`dark-notify`](https://github.com/cormacrelf/dark-notify) for automatic switching when macOS changes appearance
- `make` from the Xcode Command Line Tools
Install the required tools:
```sh
xcode-select --install
brew tap tinted-theming/tinted
brew install tinty go
brew install cormacrelf/tap/dark-notify
```
Ghostty, Zed, Herdr, and OMP are optional consumers. Install only the applications you use.
## Install
From this directory, run:
```sh
make install
```
The installer:
- Builds `~/.local/bin/tint`.
- Installs `config.toml` under `$XDG_CONFIG_HOME/tinted-theming/tinty`, or `~/.config/tinted-theming/tinty` when `XDG_CONFIG_HOME` is unset.
- Copies `state.toml` only when no state file already exists.
- Creates `~/.config/herdr/config.toml` if needed.
- Runs `tinty sync` to download the configured theme repositories.
- Creates and loads a `dark-notify` LaunchAgent for automatic macOS appearance switching.
Add the binary directory to your shell path:
```sh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
```
Verify the installation:
```sh
which tint
tinty --version
tint
```
## Automatic light/dark switching
`make install` creates and loads `~/Library/LaunchAgents/dev.tinty.dark-notify.plist`. The agent starts at login, restarts if it exits, and invokes `tint light` or `tint dark` whenever macOS changes appearance.
Confirm that the agent is running:
```sh
launchctl print "gui/$(id -u)/dev.tinty.dark-notify"
```
Inspect its output if an application does not update:
```sh
tail -f ~/Library/Logs/dark-notify.log
```
## Application setup
### Ghostty
The Tinty hook writes:
```text
~/.config/ghostty/themes/tinted-theming
```
Select it in the Ghostty configuration:
```text
theme = tinted-theming
```
The hook sends `SIGUSR2` to reload Ghostty after applying a theme.
### Zed
The wrapper writes:
```text
~/.config/zed/themes/tinty-current.json
```
After applying the first theme, select `Tinty Current` in Zed.
### Herdr
The wrapper maintains a generated `[theme.custom]` block in:
```text
~/.config/herdr/config.toml
```
When the `herdr` executable is available, the wrapper also runs `herdr server reload-config`.
### OMP
The wrapper writes:
```text
~/.omp/agent/themes/tinty-current.json
```
Configure OMP to use `tinty-current` where required.
## Usage
Show the current pair and available commands:
```sh
tint
```
Select a named pair:
```sh
tint swamp
```
Apply one side of the current pair:
```sh
tint light
tint dark
```
Set both sides:
```sh
tint light:base16-swamp-light dark:base16-swamp-dark
```
Save and favorite a named pair:
```sh
tint pair swamp dark:base16-swamp-dark light:base16-swamp-light
tint favorite swamp
```
Force appearance selection for scripts or troubleshooting:
```sh
TINTY_PAIR_APPEARANCE=light tint swamp
TINTY_PAIR_APPEARANCE=dark tint swamp
```
## Update
After changing or updating the wrapper source:
```sh
make install
```
Existing `state.toml` content is preserved.
## Uninstall
```sh
make uninstall
```
This unloads and removes the LaunchAgent, log, and `tint` binary. It also removes configuration, state, and the empty Herdr configuration only when they were originally created by `make install`; pre-existing user files are preserved. Tinty itself and its shared data remain installed.
## Licensed under GPL-3.0
In plain terms:
- Anyone may use, copy, modify, and sell the software.
- Distributed copies must remain GPL-3.0.
- Modified versions must clearly say they were changed.
- Distributing binaries requires providing the corresponding source code.
- Recipients receive the same rights to modify and redistribute.
- Distributors cannot add restrictions that contradict the GPL.
- Patent rights cannot be used to make the software effectively proprietary.
- Hardware distributors cannot prevent users from installing modified versions.
- The software comes without warranty or liability.
- Private use and private modifications impose no publication requirement.
- Merely using the software over a network does not require publishing changes; that requirement belongs to the AGPL.
For details, see the actual [LICENSE](LICENSE).