From 01aaa7ad39c1fe8af6ffbca31abbab27dbfefc95 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar Date: Wed, 15 Jul 2026 20:02:29 +0530 Subject: refactor: organized the modules into better categories Instead of lumping everything in modules/programs we are separating them into separate directories in modules/ --- modules/communication/neomutt/theme.nix | 130 ++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 modules/communication/neomutt/theme.nix (limited to 'modules/communication/neomutt/theme.nix') diff --git a/modules/communication/neomutt/theme.nix b/modules/communication/neomutt/theme.nix new file mode 100644 index 0000000..52845ee --- /dev/null +++ b/modules/communication/neomutt/theme.nix @@ -0,0 +1,130 @@ +{ config, lib, ... }: + +# Colorscheme - True base16 OneDark colors for neomutt +# Leverages Kitty's precise mapping to base16 (color0-15) +{ + config.programs.neomutt.extraConfig = lib.mkIf config.programs.neomutt.enable '' + # vim: filetype=muttrc + # + # Base16 OneDark Dark terminal colors for neomutt + # Each column in the index receives a distinct color to keep the UI organized. + + # Nerd Font icon-based flag/attachment/crypto indicators + # order: new, old, deleted, flagged, replied, old(unused), tagged, encrypt, ... + set flag_chars = "󰓹󰀼󰆴󰁟󰇰󰇮󰍩󰍨󰇱󰗚" + set to_chars = " " + set crypt_chars = " " + set attach_format = "%u%D%I %t%4n %T%.40d %> [%m/%M, %e%?C?, %C?, %s] " + + set index_format = " %5C │ %Z │ %{%d/%m/%y %H:%M} │ %-25.25a │ %s%* " + + # Hide the keybindings help bar at the top to save vertical space + set help = no + + # Status bar with Nerd Font icons per field + set status_format = "  Unread: %5u │ 󰛏 New: %5n │  Tagged: %5t │  Search: %f │  Filter: %v │  Sorted By: %s │" + + # --- Basic UI Colors -------------------------------------------------- + # target foreground background + color normal white default # base05 (Standard text) + color error red default # base08 (Red) + color tilde brightblack default # base03 (Dark Grey) + color message cyan default # base0C (Cyan) + color markers red default # base08 (Red) + color attachment magenta default # base0E (Magenta) + color search magenta default # base0E (Magenta) + color prompt cyan default # base0C (Questions/prompts) + color progress black yellow # 󰦖 base0A bg (Progress bar) + + # Selected row and status bar + color status white brightblack # base05 on base03 + color indicator default brightblack # default on base03 (Selected email) + color tree magenta default # base03 (Thread arrows) + + # Whole-line fallback for the index (base for anything not caught below) + color index white default # base05 + + # --- Index Columns (The Multi-Color Table) ---------------------------- + # Applies distinct colors to specific columns for ALL messages (~A) + color index_number cyan default "~A" # base05 (Fixed: was brightblack) + color index_date green default "~A" # base0B (Green) + color index_flags red default "~A" # base08 (Red) + color index_size cyan default "~A" # 󰈔 base0C (Cyan) + color index_author yellow default "~A" # base0A (Yellow) + color index_subject white default "~A" # base05 (Standard text for Read messages) + color index_collapsed yellow default # base0A (Collapsed thread count, %M) + color index_label magenta default # 󰓹 base0E (Message label, %y %Y) + color index_tag cyan default # base0C (Message tags, %G) + color index_tags cyan default # 󰓼 base0C (Transformed tags, %g %J) + + # --- Index Message States --------------------------------------------- + # By targeting *only* `index_subject`, we preserve your multi-color + # columns while still easily identifying unread or flagged emails. + color index_subject blue default "~U" # Unread: Blue (base0D) + color index_subject blue default "~N" # 󰄯 New: Blue (base0D) + color index_subject red default "~F" # Flagged: Red (base08) + color index_subject magenta default "~Q" # 󰛃 Replied: Magenta (base0E) + color index_subject black red "~D" # Deleted + + # This rule now colors the "email (name)" column as it is considered the 'author' + color index_author yellow default "~A" + color index_subject white default "~A" # %s + + # We removed the ~R (Read) override so it stays white. + # For Deleted (~D), if brightblack is still too dark to see, we can use a red background instead: + color index_subject black red "~D" # Deleted: Black on Red background + + # Thread collapsing states + color index_subject yellow default "~v" # Collapsed thread + color index_subject blue default "~v~(~N)" # 󰝜 Collapsed with unread inside + color index_subject red default "~v~(~F)" # 󰈺 Collapsed with flagged inside + + # Subtle zebra striping between adjacent index rows (barely-there contrast) + color stripe_odd default default + color stripe_even default default + + # --- Message Headers -------------------------------------------------- + color hdrdefault cyan default # base0C + color header yellow default "^(From|To|Cc|Bcc)" # base0A + color header blue default "^(Subject)" # base0D + color header green default "^(Date)" # base03 + + # Attachment header lines (shown above each MIME part in the pager) + color attach_headers cyan default # + + # --- Message Body ----------------------------------------------------- + color quoted blue default # base0D + color quoted1 cyan default # base0C + color quoted2 yellow default # base0A + color quoted3 red default # base08 + color quoted4 magenta default # base0E + color quoted5 blue default # base0D (cycle repeats) + color quoted6 cyan default # base0C + color quoted7 yellow default # base0A + color quoted8 red default # base08 + color quoted9 magenta default # base0E + + color signature green default # 󰛿 base0B + color bold white default # base05 + color underline white default # base05 + + # URLs + color body blue default "([a-z][a-z0-9+-]*://[^ ]+)" + + # PGP + color body green default "(Good signature)" # verified + color body red default "(BAD signature)" # bad + color body brightblack default "^gpg: " # + + # --- Sidebar (was completely unset despite sidebar.enable = true) ----- + set sidebar_format = " %D%* %?N? %N?%?F? %F? " + color sidebar_background default default # transparent, blends with terminal bg + color sidebar_divider white default # base03 (matches old tree color) + color sidebar_ordinary white default # base05 (normal mailbox entries) + color sidebar_new green default # 󰇮 base0B (mailboxes with new mail) + color sidebar_flagged red default # base08 (mailboxes with flagged mail) + color sidebar_spool_file yellow default # 󰇰 base0A (your inbox/spool) + color sidebar_highlight white brightblack # base05 on base03 (cursor position) + color sidebar_indicator default brightblack # default on base03 (currently open mailbox) + ''; +} -- cgit v1.2.3