main
1;;; modus-alabaster-bg-dark-theme.el --- Alabaster BG dark on modus-vivendi -*- lexical-binding: t -*-
2
3;; Author: Vincent Demeester
4;; Based on: https://github.com/tonsky/sublime-scheme-alabaster (Alabaster BG + Dark)
5;; https://github.com/dpassen/modus-alabaster
6;; Keywords: faces, theme, accessibility
7
8;;; Commentary:
9;;
10;; Alabaster BG dark: background-wash syntax highlighting on a dark
11;; canvas. Strings get a dark green wash, comments a dark yellow wash,
12;; definitions a dark blue wash. Only constants use a distinct
13;; foreground color.
14
15;;; Code:
16
17(require 'modus-alabaster-bg)
18
19(defconst modus-alabaster-bg-dark-palette
20 (modus-themes-generate-palette
21 '(
22 ;; Base surfaces — Tonsky Alabaster Dark upstream values
23 (bg-main "#0E1415")
24 (bg-dim "#1D2324") ; line_highlight (#ffffff10 over #0E1415)
25 (bg-active "#293334") ; selection
26 (bg-inactive "#293334")
27 (border "#708B8D")
28 (fringe "#0E1415")
29 (fg-main "#CECECE")
30 (fg-dim "#708B8D")
31 (fg-alt "#AAAAAA")
32 (cursor "#CD974B")
33
34 ;; BG-variant background washes — dark equivalents of the light washes
35 ;; Subtle tints over the dark background
36 (alabaster-bg-string-bg "#1A2A1A") ; dark green wash
37 (alabaster-bg-escape-bg "#253525") ; slightly brighter green
38 (alabaster-bg-comment-bg "#2A2A1A") ; dark yellow wash
39 (alabaster-bg-definition-bg "#1A2030") ; dark blue wash
40 (alabaster-bg-error-bg "#2B1D1E") ; dark red wash (upstream)
41
42 ;; Foreground accents
43 (alabaster-bg-constant "#CC8BC9")
44 (alabaster-bg-active "#CD974B")
45 (alabaster-bg-error-fg "#CC3333")
46 (alabaster-bg-punctuation "#708B8D")
47 (alabaster-bg-operator "#708B8D")
48 (alabaster-bg-bracket "#CECECE")
49
50 ;; Modus accent vocabulary
51 (red "#CC3333")
52 (red-warmer "#CC3333")
53 (red-cooler "#CC3333")
54 (red-faint "#CC3333")
55 (red-intense "#CC3333")
56 (green "#95CB82")
57 (green-warmer "#95CB82")
58 (green-cooler "#95CB82")
59 (green-faint "#95CB82")
60 (green-intense "#95CB82")
61 (yellow "#DFDF8E")
62 (yellow-warmer "#DFDF8E")
63 (yellow-cooler "#DFDF8E")
64 (yellow-faint "#DFDF8E")
65 (yellow-intense "#DFDF8E")
66 (blue "#71ADE7")
67 (blue-warmer "#71ADE7")
68 (blue-cooler "#71ADE7")
69 (blue-faint "#71ADE7")
70 (blue-intense "#71ADE7")
71 (magenta "#CC8BC9")
72 (magenta-warmer "#CC8BC9")
73 (magenta-cooler "#CC8BC9")
74 (magenta-faint "#CC8BC9")
75 (magenta-intense "#CC8BC9")
76 (cyan "#CD974B")
77 (cyan-warmer "#CD974B")
78 (cyan-cooler "#CD974B")
79 (cyan-faint "#CD974B")
80 (cyan-intense "#CD974B")
81 (rust "#CD974B")
82 (gold "#CD974B")
83 (olive "#95CB82")
84 (slate "#71ADE7")
85 (indigo "#CC8BC9")
86 (maroon "#CC3333")
87 (pink "#CC8BC9")
88
89 ;; Colored backgrounds — dark washes
90 (bg-red-intense "#2B1D1E")
91 (bg-red-subtle "#2B1D1E")
92 (bg-red-nuanced "#2B1D1E")
93 (bg-green-intense "#1A2A1A")
94 (bg-green-subtle "#1A2A1A")
95 (bg-green-nuanced "#1A2A1A")
96 (bg-yellow-intense "#2A2A1A")
97 (bg-yellow-subtle "#2A2A1A")
98 (bg-yellow-nuanced "#2A2A1A")
99 (bg-blue-intense "#1A2030")
100 (bg-blue-subtle "#1A2030")
101 (bg-blue-nuanced "#1A2030")
102 (bg-magenta-intense "#2A1A2A")
103 (bg-magenta-subtle "#2A1A2A")
104 (bg-magenta-nuanced "#2A1A2A")
105 (bg-cyan-intense "#1A2030")
106 (bg-cyan-subtle "#1A2030")
107 (bg-cyan-nuanced "#1A2030")
108
109 ;; Thematic slots
110 (bg-clay "#0E1415")
111 (fg-clay "#CC3333")
112 (bg-ochre "#0E1415")
113 (fg-ochre "#CD974B")
114 (bg-lavender "#0E1415")
115 (fg-lavender "#CC8BC9")
116 (bg-sage "#0E1415")
117 (fg-sage "#95CB82")
118 (bg-graph-red-0 "#D2322D")
119 (bg-graph-red-1 "#D2322D")
120 (bg-graph-green-0 "#6ABF40")
121 (bg-graph-green-1 "#6ABF40")
122 (bg-graph-yellow-0 "#EC8013")
123 (bg-graph-yellow-1 "#EC8013")
124 (bg-graph-blue-0 "#71ADE7")
125 (bg-graph-blue-1 "#71ADE7")
126 (bg-graph-magenta-0 "#CC8BC9")
127 (bg-graph-magenta-1 "#CC8BC9")
128 (bg-graph-cyan-0 "#CD974B")
129 (bg-graph-cyan-1 "#CD974B")
130
131 ;; Editor chrome
132 (bg-completion "#293334")
133 (bg-popup "#0E1415")
134 (bg-hover "#293334")
135 (bg-hover-secondary "#1D2324")
136 (bg-hl-line "#1D2324")
137 (bg-region "#293334")
138 (fg-region "#CECECE")
139 (bg-mode-line-active "#293334")
140 (fg-mode-line-active "#CECECE")
141 (border-mode-line-active "#708B8D")
142 (bg-mode-line-inactive "#1D2324")
143 (fg-mode-line-inactive "#708B8D")
144 (border-mode-line-inactive "#293334")
145 (modeline-err "#CC3333")
146 (modeline-warning "#CC3333")
147 (modeline-info "#CD974B")
148 (bg-tab-bar "#1D2324")
149 (bg-tab-current "#0E1415")
150 (bg-tab-other "#293334")
151 (fg-line-number-inactive "#708B8D")
152 (fg-line-number-active "#CECECE")
153 (bg-line-number-inactive "#0E1415")
154 (bg-line-number-active "#1D2324")
155
156 ;; Diff — dark washes
157 (bg-added "#1A2A1A")
158 (bg-added-faint "#1A2A1A")
159 (bg-added-refine "#253525")
160 (bg-added-fringe "#6ABF40")
161 (fg-added "#6ABF40")
162 (fg-added-intense "#95CB82")
163 (bg-removed "#2B1D1E")
164 (bg-removed-faint "#2B1D1E")
165 (bg-removed-refine "#3A2528")
166 (bg-removed-fringe "#D2322D")
167 (fg-removed "#D2322D")
168 (fg-removed-intense "#D2322D")
169 (bg-changed "#2A2A1A")
170 (bg-changed-faint "#2A2A1A")
171 (bg-changed-refine "#3A3520")
172 (bg-changed-fringe "#EC8013")
173 (fg-changed "#EC8013")
174 (fg-changed-intense "#EC8013")
175 (bg-diff-context "#0E1415")
176
177 ;; Search
178 (bg-search-current "#CD974B")
179 (bg-search-lazy "#CD974B")
180 (bg-search-static "#CD974B")
181 (bg-search-replace "#CD974B")
182 (bg-search-rx-group-0 "#CD974B")
183 (bg-search-rx-group-1 "#CD974B")
184 (bg-search-rx-group-2 "#CD974B")
185 (bg-search-rx-group-3 "#CD974B")
186 (bg-paren-match "#0E1415")
187 (bg-paren-expression "#0E1415")
188 (fg-paren-match "#CECECE")
189 (bg-prose-block-delimiter "#1D2324")
190 (fg-prose-block-delimiter "#CECECE")
191 (bg-prose-block-contents "#1D2324")
192
193 ;; Terminal
194 (bg-term-black "#0E1415")
195 (fg-term-black "#0E1415")
196 (bg-term-black-bright "#708B8D")
197 (fg-term-black-bright "#708B8D")
198 (bg-term-white "#AAAAAA")
199 (fg-term-white "#AAAAAA")
200 (bg-term-white-bright "#CECECE")
201 (fg-term-white-bright "#CECECE"))
202 nil
203 modus-themes-vivendi-palette
204 modus-alabaster-bg-common-palette-mappings)
205 "Full palette for `modus-alabaster-bg-dark'.")
206
207(defcustom modus-alabaster-bg-dark-palette-overrides nil
208 "Palette overrides for `modus-alabaster-bg-dark'."
209 :group 'modus-themes
210 :type '(repeat (list symbol (choice symbol string))))
211
212;; Dark BG washes: subtle tints visible against the dark background.
213(defconst modus-alabaster-bg-dark-custom-faces
214 '(
215 ;; No bold/italic for syntax
216 '(modus-themes-bold ((t (:weight normal))))
217 '(modus-themes-slant ((t (:slant normal))))
218
219 ;; Strings: dark green wash
220 '(font-lock-string-face
221 ((t (:foreground "#CECECE" :background "#1A2A1A"))))
222 '(font-lock-doc-face
223 ((t (:foreground "#CECECE" :background "#1A2A1A"))))
224
225 ;; Comments: dark yellow/olive wash
226 '(font-lock-comment-face
227 ((t (:foreground "#CECECE" :background "#2A2A1A"))))
228 '(font-lock-comment-delimiter-face
229 ((t (:foreground "#CECECE" :background "#2A2A1A"))))
230
231 ;; Definitions: dark blue wash
232 '(font-lock-function-name-face
233 ((t (:foreground "#CECECE" :background "#1A2030"))))
234
235 ;; Constants: purple foreground (the one fg exception)
236 '(font-lock-constant-face
237 ((t (:foreground "#CC8BC9"))))
238
239 ;; Escapes: slightly brighter green wash
240 '(font-lock-escape-face
241 ((t (:foreground "#CECECE" :background "#253525"))))
242 '(font-lock-regexp-grouping-backslash
243 ((t (:foreground "#CECECE" :background "#253525"))))
244
245 ;; Errors: dark red wash
246 '(font-lock-warning-face
247 ((t (:foreground "#CC3333" :background "#2B1D1E" :weight normal))))
248
249 ;; Bracket matching: underline with active color
250 '(show-paren-match
251 ((t (:foreground "#CECECE" :background unspecified
252 :underline (:color "#CD974B" :style line)))))
253 '(show-paren-match-expression
254 ((t (:foreground "#CECECE" :background unspecified
255 :underline (:color "#CD974B" :style line)))))
256
257 ;; Org TODO/DONE: background washes
258 '(org-todo
259 ((t (:foreground "#CECECE" :background "#2B1D1E" :weight bold))))
260 '(org-done
261 ((t (:foreground "#CECECE" :background "#1A2A1A"))))
262 '(org-headline-done
263 ((t (:foreground "#708B8D"))))
264 '(org-agenda-done
265 ((t (:foreground "#CECECE" :background "#1A2A1A"))))
266 '(org-checkbox-statistics-todo
267 ((t (:foreground "#CECECE" :background "#2B1D1E"))))
268 '(org-checkbox-statistics-done
269 ((t (:foreground "#CECECE" :background "#1A2A1A"))))
270
271 ;; Tree-sitter faces — plain
272 '(font-lock-function-call-face
273 ((t (:foreground "#CECECE" :background unspecified))))
274 '(font-lock-variable-use-face
275 ((t (:foreground "#CECECE" :background unspecified))))
276 '(font-lock-property-use-face
277 ((t (:foreground "#CECECE" :background unspecified)))))
278 "Custom face specifications for `modus-alabaster-bg-dark'.")
279
280;;;###theme-autoload
281(modus-themes-theme
282 'modus-alabaster-bg-dark
283 'modus-alabaster-bg
284 "Alabaster BG dark palette on modus-vivendi."
285 'dark
286 'modus-themes-vivendi-palette
287 'modus-alabaster-bg-dark-palette
288 'modus-alabaster-bg-dark-palette-overrides
289 'modus-alabaster-bg-dark-custom-faces)
290
291(provide-theme 'modus-alabaster-bg-dark)
292;;; modus-alabaster-bg-dark-theme.el ends here