Automatically switch Ghostty and Neovim themes based on sunrise/sunset times.
brew install lucianlavric/tap/sunthemecurl -fsSL https://raw.githubusercontent.com/lucianlavric/suntheme/main/install.sh | bashcargo install sunthemeNote: After
cargo install, ensure~/.cargo/binis in your PATH:echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc # or ~/.zshrc source ~/.bashrc
# Initial setup - configures location and themes
suntheme init
# Start automatic theme switching daemon
suntheme start| Command | Description |
|---|---|
suntheme init |
Interactive setup for location and themes |
suntheme start |
Start daemon for automatic switching |
suntheme stop |
Stop the daemon |
suntheme status |
Show daemon status and current theme |
suntheme toggle |
Toggle between light/dark |
suntheme set <light|dark> |
Set specific mode |
suntheme sun |
Display today's sunrise/sunset times |
suntheme themes |
Change theme configuration |
- Location-based sun times: Fetches sunrise/sunset times from sunrise-sunset.org API based on your location
- Daily caching: Sun times are cached daily to minimize API calls
- Ghostty: Modifies your Ghostty config file and triggers a reload
- Neovim: Writes to a state file that Neovim watches for changes
- macOS: Accessibility permissions required for Ghostty auto-reload (prompted during setup)
- Linux: Auto-reload works via SIGUSR2 signal (no extra dependencies)
- Neovim 0.9+: For file watching support
- Ghostty: Any recent version
Config is stored at:
- macOS:
~/Library/Application Support/suntheme/config.toml - Linux:
~/.config/suntheme/config.toml
[location]
latitude = 43.6532
longitude = -79.3832
[themes.ghostty]
light = "tokyonight-day"
dark = "tokyonight"
[themes.neovim]
light = "tokyonight-day"
dark = "tokyonight"Themes with both Ghostty and Neovim support:
| Theme | Ghostty (dark/light) | Neovim Plugin |
|---|---|---|
| Tokyo Night | tokyonight / tokyonight-day |
folke/tokyonight.nvim |
| Gruvbox | gruvbox-dark / gruvbox-light |
ellisonleao/gruvbox.nvim |
| Catppuccin | catppuccin-mocha / catppuccin-latte |
catppuccin/nvim |
| Nord | nord |
shaunsingh/nord.nvim |
| Dracula | dracula |
dracula/vim |
| Rose Pine | rose-pine / rose-pine-dawn |
rose-pine/neovim |
| Kanagawa | kanagawa |
rebelot/kanagawa.nvim |
| Solarized | solarized-dark / solarized-light |
maxmx03/solarized.nvim |
Note: For Neovim, use the same theme name for both light and dark (e.g.,
gruvbox). Thebackgroundsetting handles the variant automatically.
- Windows support
- Linux support
- iTerm2 support
- VS Code support
- System theme support
- Gradient transition between light and dark themes to mimic sunrise/sunset
MIT