Skip to content

CLI Reference

Complete reference for all Themis commands and options.

These options work with any command:

OptionDescription
-c, --config <PATH>Path to config directory (default: ~/.config/themis)
-v, --verboseEnable debug logging
--helpShow help for any command
--versionShow version

Load a profile and apply it to all enrolled applications.

Terminal window
themis load nord
themis load my-dark --dry-run

Arguments:

  • <PROFILE> - Name of the profile (without .yaml extension)

Options:

OptionDescription
--dry-runPreview changes without writing files or running commands

Exit Codes:

  • 0 - All apps configured successfully
  • 1 - One or more apps failed (partial success)

Show the currently loaded profile.

Terminal window
themis status

Output:

Current profile: nord
Last loaded: 2024-01-15T10:30:00Z

If no profile has been loaded:

No state found. Run 'themis load <profile>' first.

Create the initial configuration directory structure.

Terminal window
themis init

Creates:

~/.config/themis/
├── themis.yaml # Main config with example enrollment
├── profiles/
│ └── example.yaml # Sample profile
├── palettes/ # Empty directory for user palettes
└── templates/ # Empty directory for templates

Running init again is safe - it won’t overwrite existing files.

Validate configuration files and references.

Terminal window
themis verify

Checks:

  • YAML syntax in all config files
  • Template file paths exist
  • Palette references in profiles exist
  • Profile syntax is valid

Exit Codes:

  • 0 - All checks passed
  • 1 - Errors found

Check that enrolled applications have proper include patterns configured.

Terminal window
themis doctor

Checks for each enrolled app:

  • App’s main config file exists
  • Config includes the Themis-generated partial

Example Output:

kitty: ✓ includes .themis.conf
waybar: ✗ missing include for style.css

Exit Codes:

  • 0 - All apps properly configured
  • 1 - One or more apps missing includes

Generate shell completions.

Terminal window
themis completions bash
themis completions zsh
themis completions fish

Arguments:

  • <SHELL> - Shell type: bash, zsh, or fish

Usage:

Terminal window
# Bash
eval "$(themis completions bash)"
# Zsh
eval "$(themis completions zsh)"
# Fish
themis completions fish | source

These are honored identically on Linux and macOS.

VariableDescription
THEMIS_CONFIG_DIROverride config directory (same as -c)
XDG_CONFIG_HOMEBase for config dir (default: ~/.config)
XDG_STATE_HOMEBase for state dir (default: ~/.local/state)
XDG_DATA_DIRSSystem palette search roots (default: /usr/local/share:/usr/share)

See the Configuration Reference for the full per-OS path layout, including the Homebrew prefixes searched for system palettes on macOS.

Terminal window
# Initialize and create first profile
themis init
vim ~/.config/themis/profiles/dark.yaml
# Preview changes
themis load dark --dry-run
# Apply profile
themis load dark
# Check status
themis status
# Validate configuration
themis verify
# Check app setup
themis doctor
# Use custom config directory
themis -c ~/my-themes load special