Skip to content

v1.29.0

Choose a tag to compare

@github-actions github-actions released this 15 Sep 00:54
· 29 commits to main since this release
46236cf

feat(theme): add dg theme, switching every themed app together

devgeta installed one hardcoded Gruvbox look and advertised a dg change --theme=... command that was never registered. That look is now a named,
switchable theme, and a second one ships beside it: dg theme set tokyonight
restyles the terminal, tmux, Neovim and both AI coders together, and
dg theme set default puts everything back exactly as it was.

  • dg theme shows the current theme and what else is available, dg theme list lists them, and dg theme set <name> switches every themed app that
    is actually installed — Alacritty, Ghostty, tmux, Neovim, OpenCode, Claude
    and i3 — printing a reason for each one it skips.
  • A theme is now one palette file (configs/themes/<name>.yaml) rather than a
    hardcoded color in seven templates, so adding one needs no Go or template
    changes. default records the colors that were already installed verbatim,
    so upgrading and running dg theme set default changes nothing you can see.
  • The switch is transactional. The theme is validated before anything is
    touched, each app's exact config paths are backed up, any failure rolls the
    whole machine back, and current_theme is written last — so a failed switch
    cannot leave a half-themed machine or a config naming a theme you don't
    have. A switch interrupted by Ctrl-C is recovered automatically by the next
    dg theme set, dg configure or dg install, which says what it restored.
  • Themes carry a wallpaper. Both shipped themes come with one, so a fresh
    install has it on any machine, and dg theme set-wallpaper <path> records
    your own for the current theme instead — copied into
    ~/.config/devgeta/wallpapers/ under a content-addressed name, so two
    images that happen to share a filename never overwrite each other. Applying
    it is best-effort (AppleScript on macOS, feh on Linux/i3) and never fails
    the switch; feh is not installed by devgeta, so on Linux the warning names
    the command that installs it.
  • The root help no longer advertises dg change --theme=... --font=..., which
    was never a real command.

Behavior changes: dg theme set is the only way to change current_theme —
dg config get/set current_theme is refused as an unknown setting, because it
names deploy state rather than a preference. dg theme set now also changes
your desktop wallpaper, since both shipped themes declare one; override it per
machine with dg theme set-wallpaper. Neovim's init.lua now requires a
generated devgeta.theme shim instead of naming a colorscheme module
directly. Release binaries grow by about 1.7 MB, which is the two wallpapers.

Full Changelog: v1.28.0...v1.29.0