Theme Manager’s adapter registry determines which targets can generate theme sources, which can apply a selected source, and the order each pipeline uses. A generated source is the tool-specific file Theme Manager owns; a live destination is the config or package path the adapter updates during selection.
Git & diff
Environment Any supported environment
Generated filename material_dark_lazygit_theme.yml
Generated source ~/.config/lazygit/themes/{theme}_{mode}_lazygit_theme.yml
Live destination ~/.config/lazygit/theme.yml Setup After selecting, open ~/.config/lazygit/theme.yml. Merge its keys beneath gui.theme in ~/.config/lazygit/config.yml. Restart Lazygit. gui:
theme:
# paste the keys from ~/.config/lazygit/theme.yml here Caveat
This integration still needs a manual merge for each changed selection; the fixed theme.yml is a staging file, not a live import.
Environment Any supported environment
Generated filename material_dark.gitconfig
Generated source ~/.config/delta/themes/{theme}_{mode}.gitconfig
Live destination ~/.config/delta/theme.gitconfig Setup Add the include to ~/.gitconfig. Keep your normal Delta feature settings; the selected theme fragment supplies its named feature. [include]
path = ~/.config/delta/theme.gitconfig
[delta]
features = material_dark Caveat
If you select differently named themes, keep the [delta] features value aligned with the generated feature name.
Multiplexers & layouts
Environment Any supported environment
Generated filename material_dark.kdl
Generated source ~/.config/zellij/themes/{theme}_{mode}.kdl
Live destination ~/.config/zellij/theme.kdl and config.kdl How it works Run tman select. Existing theme, theme_dark, and theme_light entries are replaced without touching unrelated config. After selection Theme Manager clears Zellij’s cache, waits for config reload, then best-effort switches a live session to the selected mode.
Environment Any supported environment
Generated filename material_dark.kdl
Generated source ~/.config/zellij/layouts/material_generated/{theme}_{mode}.kdl
Live destination ~/.config/zellij/layouts/default.kdl How it works Run tman select before opening a new Zellij session that uses the default layout. Terminal emulators
Environment Termux only
Generated filename material_dark.properties
Generated source ~/.termux/colors/{theme}_{mode}.properties
Live destination ~/.termux/colors.properties How it works Run tman select inside Termux. Desktop runs skip this adapter.
Environment Outside Termux
Generated filename material_dark
Generated source ~/.config/ghostty/themes/{theme}_{mode}
Live destination ~/.config/ghostty/theme Setup Add the theme entry to ~/.config/ghostty/config. Select normally with tman; the theme filename stays stable. theme = "theme" After selection Theme Manager sends SIGUSR2 to running Ghostty processes. Colors and blur reload live; macOS opacity changes still require quitting and reopening Ghostty.
Environment Outside Termux
Generated filename material_dark.toml
Generated source ~/.config/alacritty/material_themes/{theme}_{mode}.toml
Live destination ~/.config/alacritty/theme.toml Setup Add the import to alacritty.toml. Run tman select, then reload Alacritty if your version does not notice the file change. general.import = ["theme.toml"]
Environment Outside Termux
Generated filename material_dark.toml
Generated source ~/.config/rio/themes/{theme}_{mode}.toml
Live destination ~/.config/rio/theme.toml Setup If your Rio version supports importing a theme file, point it at ~/.config/rio/theme.toml. Otherwise copy the generated [colors] values into ~/.config/rio/config.toml after selecting. Caveat
Rio’s configuration syntax has changed across releases; verify the import syntax against your installed version.
Environment Outside Termux
Generated filename material_dark.toml
Generated source ~/.config/wezterm/themes/{theme}_{mode}.toml
Live destination ~/.config/wezterm/theme.toml and config/theme.lua Setup Require config.theme from wezterm.lua. Assign its color_scheme to the active WezTerm config. local Theme = require("config.theme")
config.color_scheme = Theme.color_scheme After selection Selection rewrites config/theme.lua. WezTerm applies the new scheme when it reloads its configuration.
Environment Outside Termux
Generated filename material_dark.conf
Generated source ~/.config/kitty/material_themes/{theme}_{mode}.conf
Live destination ~/.config/kitty/light-theme.auto.conf and dark-theme.auto.conf How it works Run tman select. Theme Manager replaces both auto-theme files with the selected variant. After selection Theme Manager runs kitty @ load-config. If Kitty is not running, the reload is skipped without blocking the selection.
Shell & search
Environment Any supported environment
Generated filename material_dark.yml
Generated source ~/.config/eza/themes/{theme}_{mode}.yml
Live destination ~/.config/eza/theme.yml Setup Read the selected YAML mapping. Convert its values to an EZA_COLORS / LS_COLORS string and export that string from your shell config. export EZA_COLORS="di=34:fi=0:ln=36:…" Caveat Emits reference YAML; convert it to EZA_COLORS before use.
Theme Manager does not currently automate the YAML-to-EZA_COLORS conversion.
Environment Any supported environment
Generated filename material_dark.sh
Generated source ~/.config/fzf/material_themes/{theme}_{mode}.sh
Live destination ~/.config/fzf/theme.sh Setup Add the source line to ~/.zshrc, ~/.bashrc, or the shell file that configures FZF. Source your shell config again after selecting, or open a new shell. source ~/.config/fzf/theme.sh Caveat
Source theme.sh after other FZF_DEFAULT_OPTS assignments so the generated options are not overwritten.
Environment Any supported environment
Generated filename material_dark.toml
Generated source ~/.config/atuin/themes/generated/{theme}_{mode}.toml
Live destination ~/.config/atuin/themes/tman.toml Setup Generate and select a theme so tman.toml exists. Add [theme] name = "tman" to ~/.config/atuin/config.toml. tman generate --last
tman select --theme material --dark
# ~/.config/atuin/config.toml
[theme]
name = "tman" After selection Theme Manager validates the document (name tman, [colors], all 15 Meaning keys as #RRGGBB) and atomically replaces tman.toml. atuin search is a fresh process behind the shell keybinding, so the next history search is already recolored — no signal, no restart.
Caveat Select validates the TOML against Atuin's Meaning set and atomically replaces tman.toml; the next atuin search process reads it.
Atuin themes set foreground colors only, so every value is contrast-checked against the palette's terminal background on a tiered scale — 8:1 for command text, 7.5:1 for the warning and error alerts, 7:1 for the syntax and status hues, 5.5:1 for timestamps and comments. WCAG's 4.5 minimum is scoped to large text and leaves light palettes washed out at TUI font sizes, so nothing here sits that low; the tiers also keep commands dominant and metadata recessive, which a single flat floor inverts on light backgrounds. Greys may therefore differ from the palette's raw outline. A theme Atuin cannot parse silently degrades to the unstyled (none) theme; add debug = true to the [theme] block to see the reason. ATUIN_THEME_DIR and ATUIN_CONFIG_DIR relocate the directory and are honoured.
File managers
Environment Any supported environment
Generated filename material_dark.toml
Generated source ~/.config/yazi/material_themes/{theme}_{mode}.toml
Live destination ~/.config/yazi/theme.toml How it works Run tman select, then reopen Yazi if it is already running.
Environment Termux only
Generated filename material_dark.xml
Generated source ~/.config/mixplorer/themes/{theme}_{mode}.xml
Live destination /data/data/com.mixplorer.silver/files/theme/properties.xml How it works Run from Termux on a rooted device with su available. Grant the requested root access. After selection Theme Manager preserves or assigns permissions, copies through su, and force-stops MiXplorer. Reopen the app to see the new theme.
Caveat Termux-only; apply uses a privileged, non-atomic su copy and preserves or assigns file permissions.
The adapter is skipped outside Termux and cannot work on an unrooted device.
Editors & IDEs
Environment Outside Termux
Generated filename material.jar
Generated source ~/.config/jetbrains/themes/{theme}.jar
Live destination Each IDE’s plugins/themes/material-theme.jar How it works Run tman select after installing IntelliJ IDEA, WebStorm, PyCharm, PhpStorm, RubyMine, or GoLand. Restart the IDE and choose the installed theme in Appearance settings the first time.
Environment Any supported environment
Generated filename material_dark.lua
Generated source ~/.config/nvim/colors/{theme}_{mode}.lua
Live destination ~/.config/nvim/lua/settings/current.lua Setup Require settings.current. Choose its lightmode_theme or darkmode_theme according to vim.o.background. local current = require("settings.current")
vim.cmd.colorscheme(vim.o.background == "light"
and current.lightmode_theme
or current.darkmode_theme) After selection Selection updates the pointer while preserving the independently selected light and dark themes. Re-source the config or run :colorscheme in a live Neovim session.
Environment Any supported environment
Generated filename material.vsix
Generated source ~/.vscode/extensions/material-themes-generated/{theme}.vsix
Live destination No select-time destination Setup Generate the desired theme. Install the VSIX once with the code CLI. Choose its light or dark theme from Preferences: Color Theme; reinstall or reload after regeneration when required. code --install-extension ~/.vscode/extensions/material-themes-generated/material.vsix After selection VS Code activates the installed extension’s selected theme after window reload. This target is intentionally excluded from tman select.
Developer UIs & agents
Environment Outside Termux
Generated filename material_dark.json
Generated source ~/.config/opencode/themes/generated/{theme}_{mode}.json
Live destination ~/.config/opencode/themes/tman.json Setup Set theme to tman in the OpenCode config. Run tman select normally after that. { "theme": "tman" } After selection Theme Manager validates and atomically replaces tman.json, then sends SIGUSR2 only to live interactive OpenCode TUI processes.
Caveat Select validates and atomically replaces tman.json, then signals interactive TUI processes with SIGUSR2.
Environment Outside Termux
Generated filename material_dark.json
Generated source ${PI_CODING_AGENT_DIR:-$HOME/.omp/agent}/themes/generated/{theme}_{mode}.json
Live destination ${PI_CODING_AGENT_DIR:-$HOME/.omp/agent}/themes/tman.json Setup Generate and select a valid theme before launching OMP for the first time. Set both theme.dark and theme.light to tman. tman generate --last
tman select --theme material --dark
omp config set theme.dark tman
omp config set theme.light tman After selection Theme Manager validates, atomically replaces, and touches tman.json. OMP’s built-in watcher repaints live sessions without a signal or restart.
Caveat Select validates and atomically replaces tman.json, then touches it for the built-in file watcher.
Project config and --config overlays can override the global slots. Diagnose with omp config get theme.dark, omp config get theme.light, and omp config path.
Environment Any supported environment
Generated filename material_dark.json
Generated source ${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}/themes/generated/{theme}_{mode}.json
Live destination ${PI_CODING_AGENT_DIR:-$HOME/.pi/agent}/themes/tman.json Setup Generate and select a theme so tman.json exists. Set "theme": "tman" in Pi's settings.json, or pick tman once in /settings → Theme. tman generate --last
tman select --theme material --dark
# ~/.pi/agent/settings.json
{ "theme": "tman" } After selection Theme Manager validates the document against Pi's schema (51 required tokens, no extra tokens, #RRGGBB values, name tman), atomically replaces tman.json, and touches it. Pi's active-theme watcher repaints running sessions without a signal or restart.
Caveat Select validates against Pi's theme schema and atomically replaces tman.json, then touches it for Pi's active-theme watcher.
Pi falls back to its built-in dark theme — and watches nothing — if the configured theme file is missing, so create it first. A trusted project's .pi/settings.json overrides the global theme, and PI_CODING_AGENT_DIR is read by both Pi and Oh My Pi: setting it collapses their themes directories into one where a single tman.json cannot satisfy both schemas.
Ghostty, OpenCode, Oh My Pi, Pi, Kitty, and Termux use adapter-specific reload behavior. WezTerm writes an additional Lua pointer. JetBrains installs a mode-independent package path when a supported IDE is discovered. The catalogue above is generated from the current registry and links each entry to its implementation.