aboutsummaryrefslogtreecommitdiffstats
path: root/modules/programs/neomutt/theme.nix
blob: b77097561dfef5eca6635cfe08bcb6e7597374b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
{ 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.

    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

    # Empty the status bar content
    set status_format = "  Unread: %5u  │  󰛏 New: %5n  │   Tagged: %5t   %>    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)"
    color body        red           default "(BAD signature)"
    color body        brightblack   default "^gpg: "

    # --- Sidebar (was completely unset despite sidebar.enable = true) -----
    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)
  '';
}