Themes & Profiles

Profiles define behavior, themes define visual style, and alias packs remain independent.

Configuration model

~/.config/pysh/config.toml

[profile]

active = "developer"


[theme]

active = "tokyo-night"


[alias_packs]

enabled = ["git", "python"]

Built-in profiles

  • ✓default — current PySH default behavior
  • ✓minimal — quiet prompt and minimal visual noise
  • ✓developer — daily software-engineering profile
  • ✓server — remote/server-oriented profile with prominent host state
  • ✓presentation — clean readable profile for demos
  • ✓plain — no icons and low ANSI dependence

Built-in themes

  • ✓default
  • ✓minimal
  • ✓dark
  • ✓light
  • ✓catppuccin-mocha
  • ✓catppuccin-latte
  • ✓tokyo-night
  • ✓nord
  • ✓gruvbox-dark
  • ✓solarized-dark
  • ✓solarized-light
  • ✓plain

Custom themes

Custom themes live under [themes.NAME]. A theme can inherit from a built-in base and override prompt and syntax-highlight colors.

Custom theme

[themes.my-dark]

base = "dark"

description = "Personal dark terminal palette"


[themes.my-dark.colors.prompt]

user = "aqua"

host = "yellow"

cwd = "lime"

git = "fuchsia"

symbol = "white"


[themes.my-dark.colors.highlight]

builtin = "aqua"

alias = "fuchsia"

comment = "gray"

heredoc = "yellow"

Alias packs

Built-in alias packs include git, python, project, and files. Packs are opt-in and additive; project-local packs are not auto-enabled.

No-color and terminal fallbacks

  • ✓NO_COLOR disables ANSI color
  • ✓PYSH_COLOR=0 disables ANSI color
  • ✓TERM=dumb uses the documented plain/readline fallback behavior
  • ✓The plain theme avoids icons and minimizes ANSI dependence
  • ✓Theme selection never changes command parsing or execution semantics

Accessibility

Note: PySH themes must remain readable on light and dark terminals, work without a Nerd Font requirement, distinguish errors from normal status, and preserve usable structure when color is disabled.

Preview a theme

Non-executing preview

$ config_theme preview nord

Theme preview renders representative prompt, diagnostic, paste-preview, reverse-search, and syntax-highlight lines without executing commands or writing configuration files.