feat(desktop): let Stylix manage tmux and fish theming (task 0022)

Narrow the terminal tools excluded from Stylix to nvim alone. nvim keeps
its dedicated gbprod/nord.nvim colorscheme, which is richer than the
base16 mapping Stylix would apply.

tmux and fish are now Stylix-managed. Drop the hand-written Nord colours
from the tmux status bar so Stylix themes the status and pane styles,
keeping the minimal layout (session name plus window list) reapplied
after Stylix so it still wins.
This commit was merged in pull request #14.
This commit is contained in:
2026-07-22 11:38:34 -04:00
parent 27a28b1ae7
commit 6d1afa41ed
3 changed files with 12 additions and 24 deletions

View File

@@ -16,7 +16,7 @@ The theming is reversible per target, so individual surfaces can migrate toward
- [x] Stylix is a flake input, wired into the host build. - [x] Stylix is a flake input, wired into the host build.
- [x] A desktop theming module resolves a single Nord base16 scheme and applies it to GTK, Qt, cursor, and system fonts. - [x] A desktop theming module resolves a single Nord base16 scheme and applies it to GTK, Qt, cursor, and system fonts.
- [x] A single static Nord wallpaper is set by Stylix; no dynamic, animated, or cycling wallpaper. - [x] A single static Nord wallpaper is set by Stylix; no dynamic, animated, or cycling wallpaper.
- [x] Stylix targets for nvim, tmux, and fish are off, leaving their existing themes untouched. - [x] The Stylix target for nvim is off, leaving its existing theme untouched (narrowed from nvim + tmux + fish during review, see notes).
- [x] neogaia builds green under `nix flake check`, and an eval probe confirms the resolved scheme is Nord. - [x] neogaia builds green under `nix flake check`, and an eval probe confirms the resolved scheme is Nord.
## Implementation Notes ## Implementation Notes
@@ -31,9 +31,12 @@ The theming is reversible per target, so individual surfaces can migrate toward
nvim here is configured through nixvim, so the Stylix target that would theme it is `nixvim`. nvim here is configured through nixvim, so the Stylix target that would theme it is `nixvim`.
Disabling `neovim` would have been a no-op and left nvim themed. Disabling `neovim` would have been a no-op and left nvim themed.
- **fish is disabled at two levels.** - **Only nvim is excluded from Stylix (narrowed during review).**
fish is enabled both at system level (`programs.fish`, for `/etc/shells` and vendor completions) and in home-manager, so its theming has a target in each scope. The task first turned the nvim, tmux, and fish targets all off.
Both are turned off, so the hand-written fish theme stands. In review the operator narrowed that to nvim alone, so tmux and fish are now Stylix-managed.
nvim stays off because its `gbprod/nord.nvim` colorscheme is a purpose-built, treesitter-aware theme, richer than the generic base16 mapping Stylix's neovim target would apply.
fish had no colour theme of its own, so handing it to Stylix is a clean addition.
tmux carried a hand-written Nord status bar, so its colour lines are removed from `extra.conf` and Stylix now themes the status and pane styles, while the operator's minimal layout (session name plus window list, empty right side) is kept and reapplied after Stylix so it still wins.
- **Cursor generation switched on explicitly.** - **Cursor generation switched on explicitly.**
home-manager now wants `home.pointerCursor.enable` set explicitly rather than inferring it from the presence of cursor settings, so the module sets it to silence the deprecation and keep the build warning-clean (bar the pre-existing benign nixvim `nixpkgs.follows` notice). home-manager now wants `home.pointerCursor.enable` set explicitly rather than inferring it from the presence of cursor settings, so the module sets it to silence the deprecation and keep the build warning-clean (bar the pre-existing benign nixvim `nixpkgs.follows` notice).

View File

@@ -42,10 +42,6 @@ in
package = pkgs.jetbrains-mono; package = pkgs.jetbrains-mono;
name = "JetBrains Mono"; name = "JetBrains Mono";
}; };
# fish is also installed at system level, so its theming has a target
# here of its own.
targets.fish.enable = false;
}; };
home-manager.users.${user} = { home-manager.users.${user} = {
@@ -53,13 +49,9 @@ in
# whose generation must be switched on explicitly. # whose generation must be switched on explicitly.
home.pointerCursor.enable = true; home.pointerCursor.enable = true;
# nvim, tmux, and fish are configured through home-manager and keep their # nvim keeps its dedicated Nord colorscheme, which is richer than the
# own hand-written themes, so their Stylix targets stay off. # base16 mapping Stylix would apply, so its target stays off.
stylix.targets = { stylix.targets.nixvim.enable = false;
fish.enable = false;
tmux.enable = false;
nixvim.enable = false;
};
}; };
}; };
} }

View File

@@ -32,18 +32,11 @@ set -ag terminal-overrides ",*:RGB"
setw -g monitor-bell on setw -g monitor-bell on
set -g bell-action none set -g bell-action none
# Minimal status bar (session name + window list only), styled with Nord # Minimal status bar: session name plus window list only.
# colours. # Colours are left to Stylix, which themes the status and pane styles.
set -g status-position bottom set -g status-position bottom
set -g status-style "bg=#2E3440,fg=#D8DEE9"
set -g status-left " #S " set -g status-left " #S "
set -g status-left-length 20 set -g status-left-length 20
set -g status-right "" set -g status-right ""
setw -g window-status-current-style "bg=#88C0D0,fg=#2E3440,bold"
setw -g window-status-current-format " #I:#W " setw -g window-status-current-format " #I:#W "
setw -g window-status-format " #I:#W " setw -g window-status-format " #I:#W "
setw -g window-status-style "fg=#4C566A"
setw -g window-status-bell-style "bg=#BF616A,fg=#2E3440,bold"
set -g pane-border-style "fg=#3B4252"
set -g pane-active-border-style "fg=#88C0D0"