Synchronize app themes with KDE Plasma's light/dark mode.
Theminator is a daemon that listens for KDE's day/night theme changes and automatically applies matching themes to your applications.
- Ghostty - writes theme config, sends reload signal
- VS Code - updates
workbench.colorThemein settings.json - Neovim - writes Lua colorscheme file
- KDE - applies Plasma color schemes
- Wallpaper - sets desktop wallpaper per theme
# Install with uv
uv tool install .
# Or install in editable mode for development
uv tool install --editable .-
Copy example config to your config directory:
mkdir -p ~/.config/theminator/themes cp examples/config.toml ~/.config/theminator/ cp examples/themes/*.toml ~/.config/theminator/themes/
-
Install the required themes in each app:
- Ghostty: themes are built-in
- VS Code: install Catppuccin/Solarized extensions
- Neovim: install colorscheme plugins
- KDE: install color schemes from System Settings
-
Edit
~/.config/theminator/config.tomlto match your setup. -
For Ghostty, add this line to your main config (
~/.config/ghostty/config):config-file = theminator-colors -
For Neovim, require the generated file in your config:
pcall(require, "theminator_colors")
# Apply a specific theme
theminator apply catppuccin-mocha
# List available themes
theminator list
# Show current status
theminator status
# Run as daemon (reacts to KDE light/dark changes)
theminator daemonCopy the systemd service file and enable it:
cp examples/theminator.service ~/.config/systemd/user/
systemctl --user enable --now theminator.servicelight_theme = "catppuccin-latte"
dark_theme = "catppuccin-mocha"
[apps.ghostty]
enabled = true
output = "~/.config/ghostty/theminator-colors"
reload_cmd = "pkill -USR1 ghostty"
[apps.vscode]
enabled = true
output = "~/.config/Code - OSS/User/settings.json"
[apps.neovim]
enabled = true
output = "~/.config/nvim/lua/theminator_colors.lua"
[apps.kde]
enabled = true
[apps.wallpaper]
enabled = truename = "Catppuccin Mocha"
variant = "dark"
wallpaper = "~/.wallpapers/catppuccin-mocha.png"
[apps]
ghostty = "catppuccin-mocha"
vscode = "Catppuccin Mocha"
neovim = "catppuccin-mocha"
kde = "CatppuccinMochaBlue"- Python 3.11+
- KDE Plasma 6 (uses D-Bus portal for light/dark detection)
- D-Bus session bus