From 4a1f524864eb23aa42a6d3cdf0c89e38a8731029 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Tue, 3 Nov 2026 08:43:36 +0100 Subject: [PATCH] pinwheel: Replace purple color scheme with grayscale and amber Terminals, tmux and Emacs share a grayscale palette with amber accents instead of Dracula, and the desktop bars and menus use a matching gray background. --- hosts/pinwheel/modules/colors/default.nix | 41 ++++++++++-- hosts/pinwheel/modules/emacs/config.org | 2 +- hosts/pinwheel/modules/emacs/default.nix | 2 + .../modules/emacs/doom-submarine-theme.el | 63 +++++++++++++++++++ hosts/pinwheel/modules/foot/default.nix | 14 ++++- hosts/pinwheel/modules/tmux/default.nix | 16 +++-- hosts/pinwheel/modules/wezterm/default.nix | 15 ++++- 7 files changed, 140 insertions(+), 13 deletions(-) create mode 100644 hosts/pinwheel/modules/emacs/doom-submarine-theme.el diff --git a/hosts/pinwheel/modules/colors/default.nix b/hosts/pinwheel/modules/colors/default.nix index 897cec0..059de48 100644 --- a/hosts/pinwheel/modules/colors/default.nix +++ b/hosts/pinwheel/modules/colors/default.nix @@ -1,12 +1,45 @@ +let + bar = "2c2c2c"; +in { lib = { colors = { - foreground = "bd93f9"; - foreground-dim = "644294"; - background = "1E1E2F"; + foreground = "ffb347"; + foreground-dim = "8a5a20"; + background = bar; gray = "3a3a3a"; - warning = "ff6969"; + warning = "e0473c"; + + terminal = { + foreground = "e8e8e8"; + background = "1b1b1b"; + cursor = "b8843a"; + selection = "4a3820"; + status = bar; + + regular = [ + "181818" # black + "e0473c" # red + "f4f4f4" # green + "b8904a" # yellow + "8a8a8a" # blue + "a05048" # magenta + "9e9e9e" # cyan + "e8e8e8" # white + ]; + + bright = [ + "5a5a5a" # black + "ff5f52" # red + "ffffff" # green + "d8b070" # yellow + "aaaaaa" # blue + "c06058" # magenta + "bebebe" # cyan + "fafafa" # white + ]; + }; }; }; } diff --git a/hosts/pinwheel/modules/emacs/config.org b/hosts/pinwheel/modules/emacs/config.org index 60cb376..26b26a0 100644 --- a/hosts/pinwheel/modules/emacs/config.org +++ b/hosts/pinwheel/modules/emacs/config.org @@ -159,7 +159,7 @@ ** Theme #+BEGIN_SRC emacs-lisp (use-package doom-themes - :init (load-theme 'doom-dracula t)) + :config (load-theme 'doom-submarine t)) #+END_SRC ** Disable the menu bar #+BEGIN_SRC emacs-lisp diff --git a/hosts/pinwheel/modules/emacs/default.nix b/hosts/pinwheel/modules/emacs/default.nix index e07f4a7..a1938a9 100644 --- a/hosts/pinwheel/modules/emacs/default.nix +++ b/hosts/pinwheel/modules/emacs/default.nix @@ -35,6 +35,8 @@ in TIG_EDITOR = "${e}/bin/e $@"; }; + home.file.".emacs.d/doom-submarine-theme.el".source = ./doom-submarine-theme.el; + home.packages = [ e ec diff --git a/hosts/pinwheel/modules/emacs/doom-submarine-theme.el b/hosts/pinwheel/modules/emacs/doom-submarine-theme.el new file mode 100644 index 0000000..2e57b53 --- /dev/null +++ b/hosts/pinwheel/modules/emacs/doom-submarine-theme.el @@ -0,0 +1,63 @@ +;;; doom-submarine-theme.el --- Grayscale with amber accents, like a submarine at night -*- lexical-binding: t; no-byte-compile: t; -*- +(require 'doom-themes) + +(def-doom-theme doom-submarine + "Grayscale with amber accents, like a submarine at night." + ((bg '("#1b1b1b" nil nil)) + (bg-alt '("#181818" nil nil)) + (base0 '("#121212" nil nil)) + (base1 '("#181818" nil nil)) + (base2 '("#242424" nil nil)) + (base3 '("#2c2c2c" nil nil)) + (base4 '("#404040" nil nil)) + (base5 '("#626262" nil nil)) + (base6 '("#858585" nil nil)) + (base7 '("#a0a0a0" nil nil)) + (base8 '("#f4f4f4" nil nil)) + (fg '("#e8e8e8" nil nil)) + (fg-alt '("#9a9a9a" nil nil)) + + (grey base5) + (red '("#e0473c" nil nil)) + (orange '("#ffb347" nil nil)) + (green '("#f4f4f4" nil nil)) + (teal '("#aaaaaa" nil nil)) + (yellow '("#ffb347" nil nil)) + (blue '("#aaaaaa" nil nil)) + (dark-blue '("#7a7a7a" nil nil)) + (magenta '("#b05048" nil nil)) + (violet '("#9a9a9a" nil nil)) + (cyan '("#bebebe" nil nil)) + (dark-cyan '("#8a8a8a" nil nil)) + + (highlight orange) + (vertical-bar base3) + (selection base3) + (builtin fg) + (comments base5) + (doc-comments base6) + (constants yellow) + (functions base8) + (keywords orange) + (methods base8) + (operators fg-alt) + (type fg) + (strings base7) + (variables fg) + (numbers yellow) + (region '("#4a3820" nil nil)) + (error red) + (warning red) + (success green) + (vc-modified base6) + (vc-added green) + (vc-deleted red) + + (modeline-fg fg) + (modeline-fg-alt base6) + (modeline-bg base2) + (modeline-bg-alt bg-alt) + (modeline-bg-inactive bg-alt) + (modeline-bg-inactive-l bg-alt))) + +;;; doom-submarine-theme.el ends here diff --git a/hosts/pinwheel/modules/foot/default.nix b/hosts/pinwheel/modules/foot/default.nix index 6de4bbc..178986e 100644 --- a/hosts/pinwheel/modules/foot/default.nix +++ b/hosts/pinwheel/modules/foot/default.nix @@ -8,6 +8,9 @@ let enabled = config.mod.foot.enable; hyprlandEnabled = config.mod.hyprland.enable; + + colors = config.lib.colors.terminal; + indexed = prefix: list: lib.listToAttrs (lib.imap0 (i: c: lib.nameValuePair "${prefix}${toString i}" c) list); in { options = { @@ -25,8 +28,17 @@ in main = { term = "xterm-256color"; font = "JetBrainsMono Nerd Font:size=15"; - include = "${pkgs.foot.themes}/share/foot/themes/dracula"; }; + + colors-dark = { + foreground = colors.foreground; + background = colors.background; + cursor = "${colors.background} ${colors.cursor}"; + selection-foreground = colors.foreground; + selection-background = colors.selection; + } + // indexed "regular" colors.regular + // indexed "bright" colors.bright; }; }; diff --git a/hosts/pinwheel/modules/tmux/default.nix b/hosts/pinwheel/modules/tmux/default.nix index 853a5b1..a9b8f4e 100644 --- a/hosts/pinwheel/modules/tmux/default.nix +++ b/hosts/pinwheel/modules/tmux/default.nix @@ -1,4 +1,8 @@ { pkgs, config, ... }: +let + colors = config.lib.colors.terminal; + dim = builtins.elemAt colors.bright 0; +in { home-manager.users.alex = { programs.tmux = { @@ -26,18 +30,18 @@ set -g set-clipboard on # Status line colors - set -g status-fg '#${config.lib.colors.foreground}' - set -g status-bg '#${config.lib.colors.background}' + set -g status-fg '#${colors.foreground}' + set -g status-bg '#${colors.status}' # Remove date/time etc. on the right side set -g status-right "" # Status window colors - set -g window-status-current-style bg='#${config.lib.colors.background}',fg='#${config.lib.colors.foreground}' - set -g window-status-style bg='#${config.lib.colors.background}',fg='#${config.lib.colors.foreground-dim}' + set -g window-status-current-style bg='#${colors.status}',fg='#${colors.cursor}' + set -g window-status-style bg='#${colors.status}',fg='#${dim}' - set -g pane-border-style fg='#${config.lib.colors.background}' - set -g pane-active-border-style fg='#${config.lib.colors.background}' + set -g pane-border-style fg='#${colors.background}' + set -g pane-active-border-style fg='#${colors.background}' set -g pane-border-lines "heavy" # Remove accidental `suspend-client` triggers diff --git a/hosts/pinwheel/modules/wezterm/default.nix b/hosts/pinwheel/modules/wezterm/default.nix index 8900dea..7c78b4e 100644 --- a/hosts/pinwheel/modules/wezterm/default.nix +++ b/hosts/pinwheel/modules/wezterm/default.nix @@ -8,6 +8,9 @@ let enabled = config.mod.wezterm.enable; hyprlandEnabled = config.mod.hyprland.enable; + + colors = config.lib.colors.terminal; + luaList = list: "{ " + lib.concatMapStringsSep ", " (c: "'#${c}'") list + " }"; in { options = { @@ -27,7 +30,17 @@ in local config = wezterm.config_builder() - config.color_scheme = 'Dracula (Official)' + config.colors = { + foreground = '#${colors.foreground}', + background = '#${colors.background}', + cursor_bg = '#${colors.cursor}', + cursor_border = '#${colors.cursor}', + cursor_fg = '#${colors.background}', + selection_bg = '#${colors.selection}', + selection_fg = '#${colors.foreground}', + ansi = ${luaList colors.regular}, + brights = ${luaList colors.bright}, + } config.font = wezterm.font 'JetBrainsMono Nerd Font' -- to get "perfect" scaling to the right