Theme / terminal / keyboard

A consistent workspace, across tools.

Color tokens live in one place and are loaded by the shell and Lua configurations. WezTerm follows the same light or dark choice, while Neovim can read that choice when it starts.

Shared state

One palette, several consumers.

The files under home/.config/theme supply base tokens to Zsh, Neovim and WezTerm.

SOURCE / 01

Color tokens

colors.env defines the base tokens; colors.zsh and colors.lua expose them to shell and Lua code.

SHELL / 02

Theme command

theme light and theme dark update runtime state, shell colors and the theme signal shared with WezTerm.

APPS / 03

Editor & terminal

Neovim reads NVIM_THEME; WezTerm uses the shared palette and theme_mode for tabs and panes.

WezTerm

More than a color scheme.

The terminal configuration groups palette, UI, keys and plugins in separate Lua modules. smart-splits connects its panes with the editor.

runtime example
theme dark
theme light

# Optional editor override
NVIM_THEME=light nvim

# Theme state
~/.local/state/dotfiles/theme

Other modules

Keyboard and supporting tools.

Karabiner holds the macOS-only key rules and automatic configuration snapshots. tmux, IdeaVim and custom scripts are documented separately in the repository.

MACOS FIRST

Review before copying

Some Karabiner rules call AppleScript, macOS tools or absolute paths. The repository documentation flags these as settings to review on another machine.