Skip to content

Integrations

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

Lazygit

The generated file is a gui.theme snippet; Lazygit does not automatically read Theme Manager’s applied path.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

Setup

  1. After selecting, open ~/.config/lazygit/theme.yml.
  2. Merge its keys beneath gui.theme in ~/.config/lazygit/config.yml.
  3. Restart Lazygit.
gui:
  theme:
    # paste the keys from ~/.config/lazygit/theme.yml here

Delta

Include the stable gitconfig fragment once.

Generate: yes Apply: yes
Environment
Any supported environment
Generated filename
material_dark.gitconfig
Generated source
~/.config/delta/themes/{theme}_{mode}.gitconfig
Live destination
~/.config/delta/theme.gitconfig
Adapter source
View on GitHub

Setup

  1. Add the include to ~/.gitconfig.
  2. Keep your normal Delta feature settings; the selected theme fragment supplies its named feature.
[include]
    path = ~/.config/delta/theme.gitconfig

[delta]
    features = material_dark

Multiplexers & layouts

Zellij

Theme Manager copies the palette and maintains Zellij’s three theme selection keys.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

How it works

  1. Run tman select. Existing theme, theme_dark, and theme_light entries are replaced without touching unrelated config.

Zellij plugins

Generated plugin styling is installed as Zellij’s default layout.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

How it works

  1. Run tman select before opening a new Zellij session that uses the default layout.

Terminal emulators

Termux

Termux reads its fixed colors.properties path directly.

Generate: yes Apply: yes
Environment
Termux only
Generated filename
material_dark.properties
Generated source
~/.termux/colors/{theme}_{mode}.properties
Live destination
~/.termux/colors.properties
Adapter source
View on GitHub

How it works

  1. Run tman select inside Termux. Desktop runs skip this adapter.

Ghostty

Point Ghostty at the permanent theme name, not at an individual generated theme.

Generate: yes Apply: yes
Environment
Outside Termux
Generated filename
material_dark
Generated source
~/.config/ghostty/themes/{theme}_{mode}
Live destination
~/.config/ghostty/theme
Adapter source
View on GitHub

Setup

  1. Add the theme entry to ~/.config/ghostty/config.
  2. Select normally with tman; the theme filename stays stable.
theme = "theme"

Alacritty

Import Theme Manager’s stable theme file once; every later selection replaces that file.

Generate: yes Apply: yes
Environment
Outside Termux
Generated filename
material_dark.toml
Generated source
~/.config/alacritty/material_themes/{theme}_{mode}.toml
Live destination
~/.config/alacritty/theme.toml
Adapter source
View on GitHub

Setup

  1. Add the import to alacritty.toml.
  2. Run tman select, then reload Alacritty if your version does not notice the file change.
general.import = ["theme.toml"]

Rio

Theme Manager stages a stable TOML file, but Rio theme inclusion depends on the Rio version you run.

Generate: yes Apply: yes
Environment
Outside Termux
Generated filename
material_dark.toml
Generated source
~/.config/rio/themes/{theme}_{mode}.toml
Live destination
~/.config/rio/theme.toml
Adapter source
View on GitHub

Setup

  1. If your Rio version supports importing a theme file, point it at ~/.config/rio/theme.toml.
  2. Otherwise copy the generated [colors] values into ~/.config/rio/config.toml after selecting.

WezTerm

Load the generated Lua pointer once; Theme Manager updates its color_scheme value on selection.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

Setup

  1. Require config.theme from wezterm.lua.
  2. Assign its color_scheme to the active WezTerm config.
local Theme = require("config.theme")
config.color_scheme = Theme.color_scheme

Kitty

Kitty already reads its light and dark auto-theme files.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

How it works

  1. Run tman select. Theme Manager replaces both auto-theme files with the selected variant.

Shell & search

Eza

The generated YAML is a color reference, not a file Eza consumes directly.

Generate: yes Apply: yes
Environment
Any supported environment
Generated filename
material_dark.yml
Generated source
~/.config/eza/themes/{theme}_{mode}.yml
Live destination
~/.config/eza/theme.yml
Adapter source
View on GitHub

Setup

  1. Read the selected YAML mapping.
  2. 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:…"

FZF

Source the stable shell fragment after your base FZF options.

Generate: yes Apply: yes
Environment
Any supported environment
Generated filename
material_dark.sh
Generated source
~/.config/fzf/material_themes/{theme}_{mode}.sh
Live destination
~/.config/fzf/theme.sh
Adapter source
View on GitHub

Setup

  1. Add the source line to ~/.zshrc, ~/.bashrc, or the shell file that configures FZF.
  2. Source your shell config again after selecting, or open a new shell.
source ~/.config/fzf/theme.sh

Atuin

Pin one stable theme name; Atuin re-reads that file every time the history search opens.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

Setup

  1. Generate and select a theme so tman.toml exists.
  2. Add [theme] name = "tman" to ~/.config/atuin/config.toml.
tman generate --last
tman select --theme material --dark
# ~/.config/atuin/config.toml
[theme]
name = "tman"

File managers

Yazi

Yazi reads its fixed theme.toml path directly.

Generate: yes Apply: yes
Environment
Any supported environment
Generated filename
material_dark.toml
Generated source
~/.config/yazi/material_themes/{theme}_{mode}.toml
Live destination
~/.config/yazi/theme.toml
Adapter source
View on GitHub

How it works

  1. Run tman select, then reopen Yazi if it is already running.

MiXplorer

On rooted Android devices, Theme Manager installs the selected XML directly into MiXplorer’s private storage.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

How it works

  1. Run from Termux on a rooted device with su available.
  2. Grant the requested root access.

Editors & IDEs

JetBrains

Theme Manager discovers supported installed IDEs and installs a theme plugin JAR into each one.

Generate: yes Apply: yes
Environment
Outside Termux
Generated filename
material.jar
Generated source
~/.config/jetbrains/themes/{theme}.jar
Live destination
Each IDE’s plugins/themes/material-theme.jar
Adapter source
View on GitHub

How it works

  1. Run tman select after installing IntelliJ IDEA, WebStorm, PyCharm, PhpStorm, RubyMine, or GoLand.
  2. Restart the IDE and choose the installed theme in Appearance settings the first time.

Neovim

Load Theme Manager’s per-mode pointer from your Neovim configuration.

Generate: no Apply: yes
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
Adapter source
View on GitHub

Setup

  1. Require settings.current.
  2. 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)

VS Code

VS Code receives a packaged extension; tman select does not install or switch it.

Generate: yes Apply: no
Environment
Any supported environment
Generated filename
material.vsix
Generated source
~/.vscode/extensions/material-themes-generated/{theme}.vsix
Live destination
No select-time destination
Adapter source
View on GitHub

Setup

  1. Generate the desired theme.
  2. Install the VSIX once with the code CLI.
  3. 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

Developer UIs & agents

OpenCode

Pin OpenCode to Theme Manager’s permanent proxy theme name.

Generate: yes Apply: yes
Environment
Outside Termux
Generated filename
material_dark.json
Generated source
~/.config/opencode/themes/generated/{theme}_{mode}.json
Live destination
~/.config/opencode/themes/tman.json
Adapter source
View on GitHub

Setup

  1. Set theme to tman in the OpenCode config.
  2. Run tman select normally after that.
{ "theme": "tman" }

Oh My Pi

Create the proxy before OMP starts, then pin both automatic appearance slots to it.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

Setup

  1. Generate and select a valid theme before launching OMP for the first time.
  2. 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

Pi

Create the bridge theme before pinning it, then point Pi's settings at that one name.

Generate: yes Apply: yes
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
Adapter source
View on GitHub

Setup

  1. Generate and select a theme so tman.json exists.
  2. 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" }

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.