Commit 2d11bbe8b986
Changed files (5)
dots
dots/config/emacs/site-lisp/modus-alabaster-bg-dark-theme.el
@@ -0,0 +1,292 @@
+;;; modus-alabaster-bg-dark-theme.el --- Alabaster BG dark on modus-vivendi -*- lexical-binding: t -*-
+
+;; Author: Vincent Demeester
+;; Based on: https://github.com/tonsky/sublime-scheme-alabaster (Alabaster BG + Dark)
+;; https://github.com/dpassen/modus-alabaster
+;; Keywords: faces, theme, accessibility
+
+;;; Commentary:
+;;
+;; Alabaster BG dark: background-wash syntax highlighting on a dark
+;; canvas. Strings get a dark green wash, comments a dark yellow wash,
+;; definitions a dark blue wash. Only constants use a distinct
+;; foreground color.
+
+;;; Code:
+
+(require 'modus-alabaster-bg)
+
+(defconst modus-alabaster-bg-dark-palette
+ (modus-themes-generate-palette
+ '(
+ ;; Base surfaces — Tonsky Alabaster Dark upstream values
+ (bg-main "#0E1415")
+ (bg-dim "#1D2324") ; line_highlight (#ffffff10 over #0E1415)
+ (bg-active "#293334") ; selection
+ (bg-inactive "#293334")
+ (border "#708B8D")
+ (fringe "#0E1415")
+ (fg-main "#CECECE")
+ (fg-dim "#708B8D")
+ (fg-alt "#AAAAAA")
+ (cursor "#CD974B")
+
+ ;; BG-variant background washes — dark equivalents of the light washes
+ ;; Subtle tints over the dark background
+ (alabaster-bg-string-bg "#1A2A1A") ; dark green wash
+ (alabaster-bg-escape-bg "#253525") ; slightly brighter green
+ (alabaster-bg-comment-bg "#2A2A1A") ; dark yellow wash
+ (alabaster-bg-definition-bg "#1A2030") ; dark blue wash
+ (alabaster-bg-error-bg "#2B1D1E") ; dark red wash (upstream)
+
+ ;; Foreground accents
+ (alabaster-bg-constant "#CC8BC9")
+ (alabaster-bg-active "#CD974B")
+ (alabaster-bg-error-fg "#CC3333")
+ (alabaster-bg-punctuation "#708B8D")
+ (alabaster-bg-operator "#708B8D")
+ (alabaster-bg-bracket "#CECECE")
+
+ ;; Modus accent vocabulary
+ (red "#CC3333")
+ (red-warmer "#CC3333")
+ (red-cooler "#CC3333")
+ (red-faint "#CC3333")
+ (red-intense "#CC3333")
+ (green "#95CB82")
+ (green-warmer "#95CB82")
+ (green-cooler "#95CB82")
+ (green-faint "#95CB82")
+ (green-intense "#95CB82")
+ (yellow "#DFDF8E")
+ (yellow-warmer "#DFDF8E")
+ (yellow-cooler "#DFDF8E")
+ (yellow-faint "#DFDF8E")
+ (yellow-intense "#DFDF8E")
+ (blue "#71ADE7")
+ (blue-warmer "#71ADE7")
+ (blue-cooler "#71ADE7")
+ (blue-faint "#71ADE7")
+ (blue-intense "#71ADE7")
+ (magenta "#CC8BC9")
+ (magenta-warmer "#CC8BC9")
+ (magenta-cooler "#CC8BC9")
+ (magenta-faint "#CC8BC9")
+ (magenta-intense "#CC8BC9")
+ (cyan "#CD974B")
+ (cyan-warmer "#CD974B")
+ (cyan-cooler "#CD974B")
+ (cyan-faint "#CD974B")
+ (cyan-intense "#CD974B")
+ (rust "#CD974B")
+ (gold "#CD974B")
+ (olive "#95CB82")
+ (slate "#71ADE7")
+ (indigo "#CC8BC9")
+ (maroon "#CC3333")
+ (pink "#CC8BC9")
+
+ ;; Colored backgrounds — dark washes
+ (bg-red-intense "#2B1D1E")
+ (bg-red-subtle "#2B1D1E")
+ (bg-red-nuanced "#2B1D1E")
+ (bg-green-intense "#1A2A1A")
+ (bg-green-subtle "#1A2A1A")
+ (bg-green-nuanced "#1A2A1A")
+ (bg-yellow-intense "#2A2A1A")
+ (bg-yellow-subtle "#2A2A1A")
+ (bg-yellow-nuanced "#2A2A1A")
+ (bg-blue-intense "#1A2030")
+ (bg-blue-subtle "#1A2030")
+ (bg-blue-nuanced "#1A2030")
+ (bg-magenta-intense "#2A1A2A")
+ (bg-magenta-subtle "#2A1A2A")
+ (bg-magenta-nuanced "#2A1A2A")
+ (bg-cyan-intense "#1A2030")
+ (bg-cyan-subtle "#1A2030")
+ (bg-cyan-nuanced "#1A2030")
+
+ ;; Thematic slots
+ (bg-clay "#0E1415")
+ (fg-clay "#CC3333")
+ (bg-ochre "#0E1415")
+ (fg-ochre "#CD974B")
+ (bg-lavender "#0E1415")
+ (fg-lavender "#CC8BC9")
+ (bg-sage "#0E1415")
+ (fg-sage "#95CB82")
+ (bg-graph-red-0 "#D2322D")
+ (bg-graph-red-1 "#D2322D")
+ (bg-graph-green-0 "#6ABF40")
+ (bg-graph-green-1 "#6ABF40")
+ (bg-graph-yellow-0 "#EC8013")
+ (bg-graph-yellow-1 "#EC8013")
+ (bg-graph-blue-0 "#71ADE7")
+ (bg-graph-blue-1 "#71ADE7")
+ (bg-graph-magenta-0 "#CC8BC9")
+ (bg-graph-magenta-1 "#CC8BC9")
+ (bg-graph-cyan-0 "#CD974B")
+ (bg-graph-cyan-1 "#CD974B")
+
+ ;; Editor chrome
+ (bg-completion "#293334")
+ (bg-popup "#0E1415")
+ (bg-hover "#293334")
+ (bg-hover-secondary "#1D2324")
+ (bg-hl-line "#1D2324")
+ (bg-region "#293334")
+ (fg-region "#CECECE")
+ (bg-mode-line-active "#293334")
+ (fg-mode-line-active "#CECECE")
+ (border-mode-line-active "#708B8D")
+ (bg-mode-line-inactive "#1D2324")
+ (fg-mode-line-inactive "#708B8D")
+ (border-mode-line-inactive "#293334")
+ (modeline-err "#CC3333")
+ (modeline-warning "#CC3333")
+ (modeline-info "#CD974B")
+ (bg-tab-bar "#1D2324")
+ (bg-tab-current "#0E1415")
+ (bg-tab-other "#293334")
+ (fg-line-number-inactive "#708B8D")
+ (fg-line-number-active "#CECECE")
+ (bg-line-number-inactive "#0E1415")
+ (bg-line-number-active "#1D2324")
+
+ ;; Diff — dark washes
+ (bg-added "#1A2A1A")
+ (bg-added-faint "#1A2A1A")
+ (bg-added-refine "#253525")
+ (bg-added-fringe "#6ABF40")
+ (fg-added "#6ABF40")
+ (fg-added-intense "#95CB82")
+ (bg-removed "#2B1D1E")
+ (bg-removed-faint "#2B1D1E")
+ (bg-removed-refine "#3A2528")
+ (bg-removed-fringe "#D2322D")
+ (fg-removed "#D2322D")
+ (fg-removed-intense "#D2322D")
+ (bg-changed "#2A2A1A")
+ (bg-changed-faint "#2A2A1A")
+ (bg-changed-refine "#3A3520")
+ (bg-changed-fringe "#EC8013")
+ (fg-changed "#EC8013")
+ (fg-changed-intense "#EC8013")
+ (bg-diff-context "#0E1415")
+
+ ;; Search
+ (bg-search-current "#CD974B")
+ (bg-search-lazy "#CD974B")
+ (bg-search-static "#CD974B")
+ (bg-search-replace "#CD974B")
+ (bg-search-rx-group-0 "#CD974B")
+ (bg-search-rx-group-1 "#CD974B")
+ (bg-search-rx-group-2 "#CD974B")
+ (bg-search-rx-group-3 "#CD974B")
+ (bg-paren-match "#0E1415")
+ (bg-paren-expression "#0E1415")
+ (fg-paren-match "#CECECE")
+ (bg-prose-block-delimiter "#1D2324")
+ (fg-prose-block-delimiter "#CECECE")
+ (bg-prose-block-contents "#1D2324")
+
+ ;; Terminal
+ (bg-term-black "#0E1415")
+ (fg-term-black "#0E1415")
+ (bg-term-black-bright "#708B8D")
+ (fg-term-black-bright "#708B8D")
+ (bg-term-white "#AAAAAA")
+ (fg-term-white "#AAAAAA")
+ (bg-term-white-bright "#CECECE")
+ (fg-term-white-bright "#CECECE"))
+ nil
+ modus-themes-vivendi-palette
+ modus-alabaster-bg-common-palette-mappings)
+ "Full palette for `modus-alabaster-bg-dark'.")
+
+(defcustom modus-alabaster-bg-dark-palette-overrides nil
+ "Palette overrides for `modus-alabaster-bg-dark'."
+ :group 'modus-themes
+ :type '(repeat (list symbol (choice symbol string))))
+
+;; Dark BG washes: subtle tints visible against the dark background.
+(defconst modus-alabaster-bg-dark-custom-faces
+ '(
+ ;; No bold/italic for syntax
+ '(modus-themes-bold ((t (:weight normal))))
+ '(modus-themes-slant ((t (:slant normal))))
+
+ ;; Strings: dark green wash
+ '(font-lock-string-face
+ ((t (:foreground "#CECECE" :background "#1A2A1A"))))
+ '(font-lock-doc-face
+ ((t (:foreground "#CECECE" :background "#1A2A1A"))))
+
+ ;; Comments: dark yellow/olive wash
+ '(font-lock-comment-face
+ ((t (:foreground "#CECECE" :background "#2A2A1A"))))
+ '(font-lock-comment-delimiter-face
+ ((t (:foreground "#CECECE" :background "#2A2A1A"))))
+
+ ;; Definitions: dark blue wash
+ '(font-lock-function-name-face
+ ((t (:foreground "#CECECE" :background "#1A2030"))))
+
+ ;; Constants: purple foreground (the one fg exception)
+ '(font-lock-constant-face
+ ((t (:foreground "#CC8BC9"))))
+
+ ;; Escapes: slightly brighter green wash
+ '(font-lock-escape-face
+ ((t (:foreground "#CECECE" :background "#253525"))))
+ '(font-lock-regexp-grouping-backslash
+ ((t (:foreground "#CECECE" :background "#253525"))))
+
+ ;; Errors: dark red wash
+ '(font-lock-warning-face
+ ((t (:foreground "#CC3333" :background "#2B1D1E" :weight normal))))
+
+ ;; Bracket matching: underline with active color
+ '(show-paren-match
+ ((t (:foreground "#CECECE" :background unspecified
+ :underline (:color "#CD974B" :style line)))))
+ '(show-paren-match-expression
+ ((t (:foreground "#CECECE" :background unspecified
+ :underline (:color "#CD974B" :style line)))))
+
+ ;; Org TODO/DONE: background washes
+ '(org-todo
+ ((t (:foreground "#CECECE" :background "#2B1D1E" :weight bold))))
+ '(org-done
+ ((t (:foreground "#CECECE" :background "#1A2A1A"))))
+ '(org-headline-done
+ ((t (:foreground "#708B8D"))))
+ '(org-agenda-done
+ ((t (:foreground "#CECECE" :background "#1A2A1A"))))
+ '(org-checkbox-statistics-todo
+ ((t (:foreground "#CECECE" :background "#2B1D1E"))))
+ '(org-checkbox-statistics-done
+ ((t (:foreground "#CECECE" :background "#1A2A1A"))))
+
+ ;; Tree-sitter faces — plain
+ '(font-lock-function-call-face
+ ((t (:foreground "#CECECE" :background unspecified))))
+ '(font-lock-variable-use-face
+ ((t (:foreground "#CECECE" :background unspecified))))
+ '(font-lock-property-use-face
+ ((t (:foreground "#CECECE" :background unspecified)))))
+ "Custom face specifications for `modus-alabaster-bg-dark'.")
+
+;;;###theme-autoload
+(modus-themes-theme
+ 'modus-alabaster-bg-dark
+ 'modus-alabaster-bg
+ "Alabaster BG dark palette on modus-vivendi."
+ 'dark
+ 'modus-themes-vivendi-palette
+ 'modus-alabaster-bg-dark-palette
+ 'modus-alabaster-bg-dark-palette-overrides
+ 'modus-alabaster-bg-dark-custom-faces)
+
+(provide-theme 'modus-alabaster-bg-dark)
+;;; modus-alabaster-bg-dark-theme.el ends here
dots/config/emacs/site-lisp/modus-alabaster-bg-light-theme.el
@@ -0,0 +1,289 @@
+;;; modus-alabaster-bg-light-theme.el --- Alabaster BG light on modus-operandi -*- lexical-binding: t -*-
+
+;; Author: Vincent Demeester
+;; Based on: https://github.com/tonsky/sublime-scheme-alabaster (Alabaster BG)
+;; https://github.com/dpassen/modus-alabaster
+;; Keywords: faces, theme, accessibility
+
+;;; Commentary:
+;;
+;; Alabaster BG light: background-wash syntax highlighting on a white
+;; canvas. Strings get green wash, comments yellow wash, definitions
+;; blue wash. Only constants use a distinct foreground (purple).
+
+;;; Code:
+
+(require 'modus-alabaster-bg)
+
+(defconst modus-alabaster-bg-light-palette
+ (modus-themes-generate-palette
+ '(
+ ;; Base surfaces — Tonsky Alabaster BG upstream values
+ (bg-main "#FFFFFF")
+ (bg-dim "#F7F7F7")
+ (bg-active "#B4D8FD") ; selection
+ (bg-inactive "#E0E0E0")
+ (border "#E0E0E0")
+ (fringe "#FFFFFF")
+ (fg-main "#000000")
+ (fg-dim "#777777")
+ (fg-alt "#AAAAAA")
+ (cursor "#007ACC")
+
+ ;; BG-variant semantic colors
+ ;; These are the background washes from Alabaster BG
+ (alabaster-bg-string-bg "#F1FADF") ; green wash for strings
+ (alabaster-bg-escape-bg "#DBECB6") ; darker green for escapes
+ (alabaster-bg-comment-bg "#FFFABC") ; yellow wash for comments
+ (alabaster-bg-definition-bg "#DBF1FF") ; blue wash for definitions
+ (alabaster-bg-error-bg "#FFE0E0") ; red wash for errors
+
+ ;; Foreground accents (only constants + errors use fg color)
+ (alabaster-bg-constant "#7A3E9D")
+ (alabaster-bg-active "#007ACC")
+ (alabaster-bg-error-fg "#CC3333")
+ (alabaster-bg-punctuation "#00000090")
+ (alabaster-bg-operator "#000000")
+ (alabaster-bg-bracket "#00000075")
+
+ ;; Modus accent vocabulary
+ (red "#CC3333")
+ (red-warmer "#CC3333")
+ (red-cooler "#CC3333")
+ (red-faint "#CC3333")
+ (red-intense "#CC3333")
+ (green "#448C27")
+ (green-warmer "#448C27")
+ (green-cooler "#448C27")
+ (green-faint "#448C27")
+ (green-intense "#448C27")
+ (yellow "#FFBC5D")
+ (yellow-warmer "#FFBC5D")
+ (yellow-cooler "#FFBC5D")
+ (yellow-faint "#FFBC5D")
+ (yellow-intense "#FFBC5D")
+ (blue "#325CC0")
+ (blue-warmer "#325CC0")
+ (blue-cooler "#325CC0")
+ (blue-faint "#325CC0")
+ (blue-intense "#325CC0")
+ (magenta "#7A3E9D")
+ (magenta-warmer "#7A3E9D")
+ (magenta-cooler "#7A3E9D")
+ (magenta-faint "#7A3E9D")
+ (magenta-intense "#7A3E9D")
+ (cyan "#007ACC")
+ (cyan-warmer "#007ACC")
+ (cyan-cooler "#007ACC")
+ (cyan-faint "#007ACC")
+ (cyan-intense "#007ACC")
+ (rust "#FFBC5D")
+ (gold "#FFBC5D")
+ (olive "#448C27")
+ (slate "#325CC0")
+ (indigo "#7A3E9D")
+ (maroon "#CC3333")
+ (pink "#7A3E9D")
+
+ ;; Colored backgrounds — mostly plain for BG variant
+ (bg-red-intense "#FFE0E0")
+ (bg-red-subtle "#FFE0E0")
+ (bg-red-nuanced "#FFE0E0")
+ (bg-green-intense "#F1FADF")
+ (bg-green-subtle "#F1FADF")
+ (bg-green-nuanced "#F1FADF")
+ (bg-yellow-intense "#FFFABC")
+ (bg-yellow-subtle "#FFFABC")
+ (bg-yellow-nuanced "#FFFABC")
+ (bg-blue-intense "#DBF1FF")
+ (bg-blue-subtle "#DBF1FF")
+ (bg-blue-nuanced "#DBF1FF")
+ (bg-magenta-intense "#F9E0FF")
+ (bg-magenta-subtle "#F9E0FF")
+ (bg-magenta-nuanced "#F9E0FF")
+ (bg-cyan-intense "#DBF1FF")
+ (bg-cyan-subtle "#DBF1FF")
+ (bg-cyan-nuanced "#DBF1FF")
+
+ ;; Thematic slots
+ (bg-clay "#FFFFFF")
+ (fg-clay "#CC3333")
+ (bg-ochre "#FFFFFF")
+ (fg-ochre "#FFBC5D")
+ (bg-lavender "#FFFFFF")
+ (fg-lavender "#7A3E9D")
+ (bg-sage "#FFFFFF")
+ (fg-sage "#448C27")
+ (bg-graph-red-0 "#D2322D")
+ (bg-graph-red-1 "#D2322D")
+ (bg-graph-green-0 "#6ABF40")
+ (bg-graph-green-1 "#6ABF40")
+ (bg-graph-yellow-0 "#EC8013")
+ (bg-graph-yellow-1 "#EC8013")
+ (bg-graph-blue-0 "#325CC0")
+ (bg-graph-blue-1 "#325CC0")
+ (bg-graph-magenta-0 "#7A3E9D")
+ (bg-graph-magenta-1 "#7A3E9D")
+ (bg-graph-cyan-0 "#007ACC")
+ (bg-graph-cyan-1 "#007ACC")
+
+ ;; Editor chrome
+ (bg-completion "#E0E0E0")
+ (bg-popup "#FFFFFF")
+ (bg-hover "#B4D8FD")
+ (bg-hover-secondary "#F7F7F7")
+ (bg-hl-line "#F7F7F7")
+ (bg-region "#B4D8FD")
+ (fg-region "#000000")
+ (bg-mode-line-active "#F7F7F7")
+ (fg-mode-line-active "#000000")
+ (border-mode-line-active "#E0E0E0")
+ (bg-mode-line-inactive "#E0E0E0")
+ (fg-mode-line-inactive "#777777")
+ (border-mode-line-inactive "#E0E0E0")
+ (modeline-err "#CC3333")
+ (modeline-warning "#CC3333")
+ (modeline-info "#007ACC")
+ (bg-tab-bar "#E0E0E0")
+ (bg-tab-current "#FFFFFF")
+ (bg-tab-other "#F7F7F7")
+ (fg-line-number-inactive "#777777")
+ (fg-line-number-active "#000000")
+ (bg-line-number-inactive "#FFFFFF")
+ (bg-line-number-active "#F7F7F7")
+
+ ;; Diff — use washes that match the BG philosophy
+ (bg-added "#F1FADF")
+ (bg-added-faint "#F1FADF")
+ (bg-added-refine "#DBECB6")
+ (bg-added-fringe "#6ABF40")
+ (fg-added "#6ABF40")
+ (fg-added-intense "#448C27")
+ (bg-removed "#FFE0E0")
+ (bg-removed-faint "#FFE0E0")
+ (bg-removed-refine "#FFCECE")
+ (bg-removed-fringe "#D2322D")
+ (fg-removed "#D2322D")
+ (fg-removed-intense "#D2322D")
+ (bg-changed "#FFFABC")
+ (bg-changed-faint "#FFFABC")
+ (bg-changed-refine "#FFE8A0")
+ (bg-changed-fringe "#EC8013")
+ (fg-changed "#EC8013")
+ (fg-changed-intense "#EC8013")
+ (bg-diff-context "#FFFFFF")
+
+ ;; Search
+ (bg-search-current "#FFBC5D")
+ (bg-search-lazy "#FFBC5D")
+ (bg-search-static "#FFBC5D")
+ (bg-search-replace "#FFBC5D")
+ (bg-search-rx-group-0 "#FFBC5D")
+ (bg-search-rx-group-1 "#FFBC5D")
+ (bg-search-rx-group-2 "#FFBC5D")
+ (bg-search-rx-group-3 "#FFBC5D")
+ (bg-paren-match "#FFFFFF")
+ (bg-paren-expression "#FFFFFF")
+ (fg-paren-match "#007ACC")
+ (bg-prose-block-delimiter "#F7F7F7")
+ (fg-prose-block-delimiter "#000000")
+ (bg-prose-block-contents "#F7F7F7")
+
+ ;; Terminal
+ (bg-term-black "#000000")
+ (fg-term-black "#000000")
+ (bg-term-black-bright "#777777")
+ (fg-term-black-bright "#777777")
+ (bg-term-white "#AAAAAA")
+ (fg-term-white "#AAAAAA")
+ (bg-term-white-bright "#FFFFFF")
+ (fg-term-white-bright "#FFFFFF"))
+ nil
+ modus-themes-operandi-palette
+ modus-alabaster-bg-common-palette-mappings)
+ "Full palette for `modus-alabaster-bg-light'.")
+
+(defcustom modus-alabaster-bg-light-palette-overrides nil
+ "Palette overrides for `modus-alabaster-bg-light'."
+ :group 'modus-themes
+ :type '(repeat (list symbol (choice symbol string))))
+
+;; The heart of Alabaster BG: background washes on syntax faces.
+(defconst modus-alabaster-bg-light-custom-faces
+ '(
+ ;; No bold/italic for syntax
+ '(modus-themes-bold ((t (:weight normal))))
+ '(modus-themes-slant ((t (:slant normal))))
+
+ ;; Strings: green background wash
+ '(font-lock-string-face
+ ((t (:foreground "#000000" :background "#F1FADF"))))
+ '(font-lock-doc-face
+ ((t (:foreground "#000000" :background "#F1FADF"))))
+
+ ;; Comments: yellow background wash
+ '(font-lock-comment-face
+ ((t (:foreground "#000000" :background "#FFFABC"))))
+ '(font-lock-comment-delimiter-face
+ ((t (:foreground "#000000" :background "#FFFABC"))))
+
+ ;; Definitions: blue background wash
+ '(font-lock-function-name-face
+ ((t (:foreground "#000000" :background "#DBF1FF"))))
+
+ ;; Constants: purple foreground (the one exception — keeps fg color)
+ '(font-lock-constant-face
+ ((t (:foreground "#7A3E9D"))))
+
+ ;; Escapes: darker green background
+ '(font-lock-escape-face
+ ((t (:foreground "#000000" :background "#DBECB6"))))
+ '(font-lock-regexp-grouping-backslash
+ ((t (:foreground "#000000" :background "#DBECB6"))))
+
+ ;; Errors: red wash
+ '(font-lock-warning-face
+ ((t (:foreground "#CC3333" :background "#FFE0E0" :weight normal))))
+
+ ;; Bracket matching: underline, no fill
+ '(show-paren-match
+ ((t (:foreground "#007ACC" :background unspecified :underline t))))
+ '(show-paren-match-expression
+ ((t (:foreground "#007ACC" :background unspecified :underline t))))
+
+ ;; Org TODO/DONE: background washes
+ '(org-todo
+ ((t (:foreground "#000000" :background "#FFE0E0" :weight bold))))
+ '(org-done
+ ((t (:foreground "#000000" :background "#F1FADF"))))
+ '(org-headline-done
+ ((t (:foreground "#777777"))))
+ '(org-agenda-done
+ ((t (:foreground "#000000" :background "#F1FADF"))))
+ '(org-checkbox-statistics-todo
+ ((t (:foreground "#000000" :background "#FFE0E0"))))
+ '(org-checkbox-statistics-done
+ ((t (:foreground "#000000" :background "#F1FADF"))))
+
+ ;; Tree-sitter faces (these inherit from font-lock but let's be explicit)
+ '(font-lock-function-call-face
+ ((t (:foreground "#000000" :background unspecified))))
+ '(font-lock-variable-use-face
+ ((t (:foreground "#000000" :background unspecified))))
+ '(font-lock-property-use-face
+ ((t (:foreground "#000000" :background unspecified)))))
+ "Custom face specifications for `modus-alabaster-bg-light'.")
+
+;;;###theme-autoload
+(modus-themes-theme
+ 'modus-alabaster-bg-light
+ 'modus-alabaster-bg
+ "Alabaster BG light palette on modus-operandi."
+ 'light
+ 'modus-themes-operandi-palette
+ 'modus-alabaster-bg-light-palette
+ 'modus-alabaster-bg-light-palette-overrides
+ 'modus-alabaster-bg-light-custom-faces)
+
+(provide-theme 'modus-alabaster-bg-light)
+;;; modus-alabaster-bg-light-theme.el ends here
dots/config/emacs/site-lisp/modus-alabaster-bg.el
@@ -0,0 +1,159 @@
+;;; modus-alabaster-bg.el --- Alabaster BG colours on top of Modus themes -*- lexical-binding: t -*-
+
+;; Author: Vincent Demeester
+;; Based on: https://github.com/tonsky/sublime-scheme-alabaster (Alabaster BG variant)
+;; https://github.com/dpassen/modus-alabaster
+;; Package-Requires: ((emacs "28.1") (modus-themes "5.0.0"))
+;; Keywords: faces, theme, accessibility
+
+;;; Commentary:
+;;
+;; Alabaster BG variant: uses background washes instead of foreground
+;; colors for syntax highlighting. Strings get a green background,
+;; comments get a yellow background, definitions get a blue background.
+;; Only constants keep a distinct foreground color.
+
+;;; Code:
+
+(require 'modus-themes)
+
+(defconst modus-alabaster-bg-common-palette-mappings
+ '(
+ ;; BG variant: most syntax gets fg-main foreground; the background
+ ;; washes are applied via custom faces below.
+ (keyword fg-main)
+ (builtin fg-main)
+ (constant alabaster-bg-constant)
+ (string fg-main)
+ (docstring fg-main)
+ (docmarkup fg-main)
+ (comment fg-main)
+ (fnname fg-main)
+ (fnname-call fg-main)
+ (type fg-main)
+ (variable fg-main)
+ (variable-use fg-main)
+ (preprocessor fg-main)
+ (property fg-main)
+ (rx-backslash fg-main)
+ (rx-construct fg-main)
+ (number alabaster-bg-constant)
+ (punctuation alabaster-bg-punctuation)
+ (operator alabaster-bg-operator)
+ (bracket alabaster-bg-bracket)
+ (delimiter alabaster-bg-punctuation)
+
+ ;; Links
+ (fg-link alabaster-bg-active)
+ (underline-link alabaster-bg-active)
+ (fg-link-symbolic alabaster-bg-active)
+ (underline-link-symbolic alabaster-bg-active)
+ (fg-link-visited alabaster-bg-constant)
+ (underline-link-visited alabaster-bg-constant)
+
+ ;; Prose — quiet, but keep status indicators visible
+ (fg-prose-code fg-main)
+ (fg-prose-macro fg-main)
+ (fg-prose-verbatim fg-main)
+ (prose-done fg-main)
+ (prose-todo fg-main)
+ (prose-tag fg-dim)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-dim)
+ (fg-heading-0 fg-main)
+ (fg-heading-1 fg-main)
+ (fg-heading-2 fg-main)
+ (fg-heading-3 fg-main)
+ (fg-heading-4 fg-main)
+ (fg-heading-5 fg-main)
+ (fg-heading-6 fg-main)
+ (fg-heading-7 fg-main)
+ (fg-heading-8 fg-main)
+
+ ;; Completion
+ (accent-0 alabaster-bg-active)
+ (accent-1 alabaster-bg-constant)
+ (accent-2 fg-main)
+ (accent-3 fg-main)
+ (fg-completion-match-0 alabaster-bg-active)
+ (fg-completion-match-1 alabaster-bg-constant)
+ (fg-completion-match-2 fg-main)
+ (fg-completion-match-3 fg-main)
+ (fg-prompt alabaster-bg-active)
+
+ ;; Diagnostics
+ (modeline-err alabaster-bg-error-fg)
+ (modeline-warning alabaster-bg-error-fg)
+ (modeline-info alabaster-bg-active)
+ (err alabaster-bg-error-fg)
+ (warning alabaster-bg-error-fg)
+ (info alabaster-bg-active)
+ (underline-err alabaster-bg-error-fg)
+ (underline-warning alabaster-bg-error-fg)
+ (underline-note alabaster-bg-active)
+
+ (keybind alabaster-bg-active)
+ (name fg-main)
+ (identifier alabaster-bg-constant)
+
+ ;; Dates
+ (date-common fg-main)
+ (date-deadline alabaster-bg-error-fg)
+ (date-deadline-subtle alabaster-bg-error-fg)
+ (date-scheduled fg-main)
+ (date-scheduled-subtle fg-main)
+ (date-holiday fg-main)
+ (date-holiday-other fg-main)
+ (date-weekday fg-main)
+ (date-weekend fg-main)
+
+ ;; Mail — minimal
+ (mail-cite-0 fg-main)
+ (mail-cite-1 fg-main)
+ (mail-cite-2 fg-main)
+ (mail-cite-3 fg-main)
+ (mail-part fg-main)
+ (mail-recipient fg-main)
+ (mail-subject fg-main)
+ (mail-other fg-main))
+ "Common palette mappings for the Alabaster BG Modus themes.")
+
+(defcustom modus-alabaster-bg-common-palette-overrides nil
+ "Palette overrides shared by all Modus Alabaster BG themes."
+ :group 'modus-themes
+ :type '(repeat (list symbol (choice symbol string))))
+
+;;;; Theme declaration and registration
+
+(defconst modus-alabaster-bg-with-properties
+ '((modus-alabaster-bg-light modus-alabaster-bg "Alabaster BG light palette on modus-operandi." light modus-themes-operandi-palette modus-alabaster-bg-light-palette modus-alabaster-bg-light-palette-overrides)
+ (modus-alabaster-bg-dark modus-alabaster-bg "Alabaster BG dark palette on modus-vivendi." dark modus-themes-vivendi-palette modus-alabaster-bg-dark-palette modus-alabaster-bg-dark-palette-overrides)
+ (modus-tonski-bg-light modus-alabaster-bg "Tonski BG light palette on modus-operandi." light modus-themes-operandi-palette modus-tonski-bg-light-palette modus-tonski-bg-light-palette-overrides))
+ "Properties for each Modus Alabaster BG theme.")
+
+(defvar modus-alabaster-bg--declared-p nil
+ "Non-nil if Modus Alabaster BG themes have been declared.")
+
+(defun modus-alabaster-bg-declare-themes ()
+ "Declare and register the Modus Alabaster BG themes."
+ (unless modus-alabaster-bg--declared-p
+ (dolist (theme modus-alabaster-bg-with-properties)
+ (apply #'modus-themes-declare theme)
+ (modus-themes-register (car theme)))
+ (setq modus-alabaster-bg--declared-p t)))
+
+(modus-alabaster-bg-declare-themes)
+
+;;;; Convenience commands
+
+;;;###autoload (autoload 'modus-alabaster-bg-toggle "modus-alabaster-bg")
+(modus-themes-define-derivative-command modus-alabaster-bg toggle)
+
+;;;###autoload (autoload 'modus-alabaster-bg-rotate "modus-alabaster-bg")
+(modus-themes-define-derivative-command modus-alabaster-bg rotate)
+
+;;;###autoload (autoload 'modus-alabaster-bg-select "modus-alabaster-bg")
+(modus-themes-define-derivative-command modus-alabaster-bg select)
+
+(provide 'modus-alabaster-bg)
+;;; modus-alabaster-bg.el ends here
dots/config/emacs/site-lisp/modus-tonski-bg-light-theme.el
@@ -0,0 +1,300 @@
+;;; modus-tonski-bg-light-theme.el --- Tonski BG light on modus-operandi -*- lexical-binding: t -*-
+
+;; Author: Vincent Demeester
+;; Based on: tonski-modus-ts-focus palette with Alabaster BG wash approach
+;; Keywords: faces, theme, accessibility
+
+;;; Commentary:
+;;
+;; Tonski BG light: background-wash syntax highlighting using color
+;; hues from the tonski-modus-ts-focus palette. Strings get a blue
+;; wash (from #004080), comments a grey wash (from #555555),
+;; definitions a green wash (from #006800), parameters a subtle bg.
+;; Constants keep ochre foreground (#804000).
+
+;;; Code:
+
+(require 'modus-alabaster-bg)
+
+(defconst modus-tonski-bg-light-palette
+ (modus-themes-generate-palette
+ '(
+ ;; Base surfaces
+ (bg-main "#FFFFFF")
+ (bg-dim "#F8F8F8")
+ (bg-active "#C0D8F0") ; selection — blue tint
+ (bg-inactive "#E8E8E8")
+ (border "#D0D0D0")
+ (fringe "#FFFFFF")
+ (fg-main "#000000")
+ (fg-dim "#555555")
+ (fg-alt "#888888")
+ (cursor "#000088")
+
+ ;; BG washes — pastel versions of tonski foreground colors
+ ;; String (#004080 deep blue) → light blue wash
+ (tonski-bg-string-bg "#E0ECF5")
+ ;; Comment (#555555 grey) → light warm grey wash
+ (tonski-bg-comment-bg "#EEEEEE")
+ ;; Function (#006800 dark green) → light green wash
+ (tonski-bg-definition-bg "#E5F2E0")
+ ;; Escape → slightly deeper blue wash
+ (tonski-bg-escape-bg "#D0E0F0")
+ ;; Error (#a60000 dark red) → light red wash
+ (tonski-bg-error-bg "#F5E0E0")
+ ;; Parameter bg (from tonski original)
+ (tonski-bg-param-bg "#EEEEEE")
+
+ ;; Foreground accents — from tonski palette
+ (alabaster-bg-constant "#804000") ; ochre — the one fg exception
+ (alabaster-bg-active "#000088") ; dark blue for links/interactive
+ (alabaster-bg-error-fg "#A60000") ; dark red
+ (alabaster-bg-punctuation "#555555")
+ (alabaster-bg-operator "#000000")
+ (alabaster-bg-bracket "#555555")
+
+ ;; Modus accent vocabulary — tonski palette
+ (red "#A60000")
+ (red-warmer "#A60000")
+ (red-cooler "#A60000")
+ (red-faint "#A60000")
+ (red-intense "#A60000")
+ (green "#006800")
+ (green-warmer "#006800")
+ (green-cooler "#006800")
+ (green-faint "#006800")
+ (green-intense "#006800")
+ (yellow "#804000")
+ (yellow-warmer "#804000")
+ (yellow-cooler "#804000")
+ (yellow-faint "#804000")
+ (yellow-intense "#804000")
+ (blue "#000088")
+ (blue-warmer "#000088")
+ (blue-cooler "#004080")
+ (blue-faint "#000088")
+ (blue-intense "#000088")
+ (magenta "#880088")
+ (magenta-warmer "#880088")
+ (magenta-cooler "#880088")
+ (magenta-faint "#880088")
+ (magenta-intense "#880088")
+ (cyan "#008888")
+ (cyan-warmer "#008888")
+ (cyan-cooler "#008888")
+ (cyan-faint "#008888")
+ (cyan-intense "#008888")
+ (rust "#804000")
+ (gold "#804000")
+ (olive "#006800")
+ (slate "#000088")
+ (indigo "#880088")
+ (maroon "#A60000")
+ (pink "#880088")
+
+ ;; Colored backgrounds — derived from tonski hues
+ (bg-red-intense "#F5E0E0")
+ (bg-red-subtle "#F5E0E0")
+ (bg-red-nuanced "#F5E0E0")
+ (bg-green-intense "#E5F2E0")
+ (bg-green-subtle "#E5F2E0")
+ (bg-green-nuanced "#E5F2E0")
+ (bg-yellow-intense "#F5EED8")
+ (bg-yellow-subtle "#F5EED8")
+ (bg-yellow-nuanced "#F5EED8")
+ (bg-blue-intense "#E0ECF5")
+ (bg-blue-subtle "#E0ECF5")
+ (bg-blue-nuanced "#E0ECF5")
+ (bg-magenta-intense "#F0E0F0")
+ (bg-magenta-subtle "#F0E0F0")
+ (bg-magenta-nuanced "#F0E0F0")
+ (bg-cyan-intense "#E0F0F0")
+ (bg-cyan-subtle "#E0F0F0")
+ (bg-cyan-nuanced "#E0F0F0")
+
+ ;; Thematic slots
+ (bg-clay "#FFFFFF")
+ (fg-clay "#A60000")
+ (bg-ochre "#FFFFFF")
+ (fg-ochre "#804000")
+ (bg-lavender "#FFFFFF")
+ (fg-lavender "#880088")
+ (bg-sage "#FFFFFF")
+ (fg-sage "#006800")
+ (bg-graph-red-0 "#A60000")
+ (bg-graph-red-1 "#A60000")
+ (bg-graph-green-0 "#006800")
+ (bg-graph-green-1 "#006800")
+ (bg-graph-yellow-0 "#804000")
+ (bg-graph-yellow-1 "#804000")
+ (bg-graph-blue-0 "#000088")
+ (bg-graph-blue-1 "#000088")
+ (bg-graph-magenta-0 "#880088")
+ (bg-graph-magenta-1 "#880088")
+ (bg-graph-cyan-0 "#008888")
+ (bg-graph-cyan-1 "#008888")
+
+ ;; Editor chrome
+ (bg-completion "#E8E8E8")
+ (bg-popup "#FFFFFF")
+ (bg-hover "#C0D8F0")
+ (bg-hover-secondary "#F8F8F8")
+ (bg-hl-line "#F8F8F8")
+ (bg-region "#C0D8F0")
+ (fg-region "#000000")
+ (bg-mode-line-active "#F8F8F8")
+ (fg-mode-line-active "#000000")
+ (border-mode-line-active "#D0D0D0")
+ (bg-mode-line-inactive "#E8E8E8")
+ (fg-mode-line-inactive "#555555")
+ (border-mode-line-inactive "#D0D0D0")
+ (modeline-err "#A60000")
+ (modeline-warning "#A60000")
+ (modeline-info "#000088")
+ (bg-tab-bar "#E8E8E8")
+ (bg-tab-current "#FFFFFF")
+ (bg-tab-other "#F8F8F8")
+ (fg-line-number-inactive "#888888")
+ (fg-line-number-active "#000000")
+ (bg-line-number-inactive "#FFFFFF")
+ (bg-line-number-active "#F8F8F8")
+
+ ;; Diff — washes matching tonski hues
+ (bg-added "#E5F2E0")
+ (bg-added-faint "#E5F2E0")
+ (bg-added-refine "#D0E8C8")
+ (bg-added-fringe "#006800")
+ (fg-added "#006800")
+ (fg-added-intense "#006800")
+ (bg-removed "#F5E0E0")
+ (bg-removed-faint "#F5E0E0")
+ (bg-removed-refine "#F0CECE")
+ (bg-removed-fringe "#A60000")
+ (fg-removed "#A60000")
+ (fg-removed-intense "#A60000")
+ (bg-changed "#F5EED8")
+ (bg-changed-faint "#F5EED8")
+ (bg-changed-refine "#EEE0C0")
+ (bg-changed-fringe "#804000")
+ (fg-changed "#804000")
+ (fg-changed-intense "#804000")
+ (bg-diff-context "#FFFFFF")
+
+ ;; Search
+ (bg-search-current "#F5EED8")
+ (bg-search-lazy "#E0ECF5")
+ (bg-search-static "#E0ECF5")
+ (bg-search-replace "#F5E0E0")
+ (bg-search-rx-group-0 "#E0ECF5")
+ (bg-search-rx-group-1 "#E5F2E0")
+ (bg-search-rx-group-2 "#F0E0F0")
+ (bg-search-rx-group-3 "#F5EED8")
+ (bg-paren-match "#FFFFFF")
+ (bg-paren-expression "#FFFFFF")
+ (fg-paren-match "#000088")
+ (bg-prose-block-delimiter "#F8F8F8")
+ (fg-prose-block-delimiter "#000000")
+ (bg-prose-block-contents "#F8F8F8")
+
+ ;; Terminal
+ (bg-term-black "#000000")
+ (fg-term-black "#000000")
+ (bg-term-black-bright "#555555")
+ (fg-term-black-bright "#555555")
+ (bg-term-white "#888888")
+ (fg-term-white "#888888")
+ (bg-term-white-bright "#FFFFFF")
+ (fg-term-white-bright "#FFFFFF"))
+ nil
+ modus-themes-operandi-palette
+ modus-alabaster-bg-common-palette-mappings)
+ "Full palette for `modus-tonski-bg-light'.")
+
+(defcustom modus-tonski-bg-light-palette-overrides nil
+ "Palette overrides for `modus-tonski-bg-light'."
+ :group 'modus-themes
+ :type '(repeat (list symbol (choice symbol string))))
+
+;; Tonski BG washes using tonski-derived hues.
+(defconst modus-tonski-bg-light-custom-faces
+ '(
+ ;; No bold/italic for syntax
+ '(modus-themes-bold ((t (:weight normal))))
+ '(modus-themes-slant ((t (:slant normal))))
+
+ ;; Strings: blue wash (from tonski #004080)
+ '(font-lock-string-face
+ ((t (:foreground "#000000" :background "#E0ECF5"))))
+ '(font-lock-doc-face
+ ((t (:foreground "#000000" :background "#E0ECF5"))))
+
+ ;; Comments: warm grey wash (from tonski #555555)
+ '(font-lock-comment-face
+ ((t (:foreground "#555555" :background "#EEEEEE" :slant italic))))
+ '(font-lock-comment-delimiter-face
+ ((t (:foreground "#555555" :background "#EEEEEE" :slant italic))))
+
+ ;; Definitions: green wash (from tonski #006800)
+ '(font-lock-function-name-face
+ ((t (:foreground "#000000" :background "#E5F2E0"))))
+
+ ;; Constants: ochre foreground (the one fg exception, from tonski #804000)
+ '(font-lock-constant-face
+ ((t (:foreground "#804000"))))
+
+ ;; Escapes: deeper blue wash
+ '(font-lock-escape-face
+ ((t (:foreground "#000000" :background "#D0E0F0"))))
+ '(font-lock-regexp-grouping-backslash
+ ((t (:foreground "#000000" :background "#D0E0F0"))))
+
+ ;; Errors: red wash (from tonski #a60000)
+ '(font-lock-warning-face
+ ((t (:foreground "#A60000" :background "#F5E0E0" :weight normal))))
+
+ ;; Parameters: subtle grey bg (from tonski original)
+ '(font-lock-variable-name-face
+ ((t (:foreground "#000000" :background unspecified))))
+
+ ;; Bracket matching: underline with dark blue
+ '(show-paren-match
+ ((t (:foreground "#000088" :background unspecified :underline t))))
+ '(show-paren-match-expression
+ ((t (:foreground "#000088" :background unspecified :underline t))))
+
+ ;; Org TODO/DONE: background washes
+ '(org-todo
+ ((t (:foreground "#000000" :background "#F5E0E0" :weight bold))))
+ '(org-done
+ ((t (:foreground "#000000" :background "#E5F2E0"))))
+ '(org-headline-done
+ ((t (:foreground "#888888"))))
+ '(org-agenda-done
+ ((t (:foreground "#000000" :background "#E5F2E0"))))
+ '(org-checkbox-statistics-todo
+ ((t (:foreground "#000000" :background "#F5E0E0"))))
+ '(org-checkbox-statistics-done
+ ((t (:foreground "#000000" :background "#E5F2E0"))))
+
+ ;; Plain tree-sitter faces
+ '(font-lock-function-call-face
+ ((t (:foreground "#000000" :background unspecified))))
+ '(font-lock-variable-use-face
+ ((t (:foreground "#000000" :background unspecified))))
+ '(font-lock-property-use-face
+ ((t (:foreground "#000000" :background unspecified)))))
+ "Custom face specifications for `modus-tonski-bg-light'.")
+
+;;;###theme-autoload
+(modus-themes-theme
+ 'modus-tonski-bg-light
+ 'modus-alabaster-bg
+ "Tonski BG light palette on modus-operandi."
+ 'light
+ 'modus-themes-operandi-palette
+ 'modus-tonski-bg-light-palette
+ 'modus-tonski-bg-light-palette-overrides
+ 'modus-tonski-bg-light-custom-faces)
+
+(provide-theme 'modus-tonski-bg-light)
+;;; modus-tonski-bg-light-theme.el ends here
dots/config/emacs/init.el
@@ -172,6 +172,7 @@ Otherwise, call `backward-kill-word'."
(set-fontset-font t 'symbol "Symbola" nil 'append))
(require 'modus-themes)
+ (require 'modus-alabaster-bg)
(defvar modus-themes-preset-overrides-cooler)
(setopt modus-themes-common-palette-overrides
`((border-mode-line-active unspecified)
@@ -272,6 +273,7 @@ Otherwise, call `backward-kill-word'."
;; Add site-lisp to load-path for local elisp files
(add-to-list 'load-path (expand-file-name "site-lisp" user-emacs-directory))
+(add-to-list 'custom-theme-load-path (expand-file-name "site-lisp" user-emacs-directory))
(use-package vde-toggle
:bind ("C-c t m" . vde-toggle-modes))