added some emacs windows fluff to make it less crap

This commit is contained in:
2026-04-17 19:48:07 -04:00
parent edf5e7e57e
commit 4fa407f027
4 changed files with 665 additions and 6 deletions

View File

@@ -0,0 +1,439 @@
;;; aldricos-gruvbox-theme.el --- Aldrico's Gruvbox colour theme for Emacs -*- lexical-binding: t -*-
;; Based on "Aldrico's Gruvbox" VS Code theme by Aldrico
;; Ported to Emacs using autothemer
;; Package-Requires: ((autothemer "0.2") (emacs "24.1"))
;;; Commentary:
;; A dark Gruvbox-based theme ported from the VS Code theme "Aldrico's Gruvbox".
;; Uses a pure black background with warm gruvbox accent colours.
;;; Code:
(eval-when-compile
(require 'cl-lib))
(require 'autothemer)
(autothemer-deftheme
aldricos-gruvbox
"Aldrico's Gruvbox — a dark Gruvbox theme with pure black background"
((((class color) (min-colors #xFFFFFF)) ; col 1 GUI/24bit
((class color) (min-colors #xFF))) ; col 2 Xterm/256
;; Background / surface colours
(ag-bg "#000000" "#000000")
(ag-bg-soft "#1c1c1c" "#1c1c1c")
(ag-bg-hard "#32302f" "#303030")
(ag-bg-1 "#383432" "#383432")
(ag-bg-2 "#45403d" "#3a3a3a")
(ag-bg-3 "#504945" "#4e4e4e")
(ag-bg-4 "#5a524c" "#626262")
;; Foreground colours
(ag-fg "#d4be98" "#dfaf87")
(ag-fg-dim "#a89984" "#a89984")
(ag-fg-dimmer "#928374" "#8a8a8a")
(ag-fg-faint "#7c6f64" "#767676")
;; Syntax accent colours
(ag-red "#ea6962" "#d75f5f")
(ag-red-dim "#b85651" "#af5f5f")
(ag-orange "#e78a4e" "#d7875f")
(ag-yellow "#d8a657" "#d7af5f")
(ag-green "#a9b665" "#afaf5f")
(ag-green-dim "#8f9a52" "#878700")
(ag-aqua "#89b482" "#87af87")
(ag-blue "#7daea3" "#5fafaf")
(ag-purple "#d3869b" "#d787af")
(ag-orange-dim "#c18f41" "#af8700")
(ag-blue-dim "#68948a" "#5f8787")
;; Diff / VCS
(ag-diff-add-bg "#72966c40" "#005f00")
(ag-diff-del-bg "#b8565140" "#5f0000")
(ag-diff-add-fg "#a9b665" "#afaf5f")
(ag-diff-del-fg "#ea6962" "#d75f5f")
;; Bracket colours
(ag-bracket-1 "#ea6962" "#d75f5f")
(ag-bracket-2 "#d8a657" "#d7af5f")
(ag-bracket-3 "#a9b665" "#afaf5f")
(ag-bracket-4 "#7daea3" "#5fafaf")
(ag-bracket-5 "#e78a4e" "#d7875f")
(ag-bracket-6 "#d3869b" "#d787af"))
;; -----------------------------------------------------------------------
;; Face specifications
;; -----------------------------------------------------------------------
;; Basic faces
(default (:foreground ag-fg :background ag-bg))
(cursor (:background ag-fg))
(fringe (:background ag-bg :foreground ag-fg-faint))
(region (:background ag-bg-3))
(secondary-selection (:background ag-bg-2))
(highlight (:background ag-bg-2 :foreground ag-fg))
(hl-line (:background ag-bg-1))
(match (:background ag-bg-3 :foreground ag-green))
(shadow (:foreground ag-fg-faint))
(vertical-border (:foreground ag-bg-4))
(window-divider (:foreground ag-bg-4))
(minibuffer-prompt (:foreground ag-green :weight 'bold))
(link (:foreground ag-green :underline t))
(link-visited (:foreground ag-green-dim :underline t))
(trailing-whitespace (:background ag-red))
(escape-glyph (:foreground ag-aqua))
(homoglyph (:foreground ag-aqua))
(nobreak-hyphen (:foreground ag-aqua))
(nobreak-space (:foreground ag-aqua :underline t))
;; Line numbers
(line-number (:foreground ag-fg-faint :background ag-bg))
(line-number-current-line (:foreground ag-fg-dimmer :background ag-bg))
(line-number-major-tick (:foreground ag-fg-dimmer :background ag-bg))
(line-number-minor-tick (:foreground ag-fg-faint :background ag-bg))
;; Mode line
(mode-line (:foreground ag-fg-dim :background ag-bg-2 :box nil))
(mode-line-inactive (:foreground ag-fg-faint :background ag-bg-1 :box nil))
(mode-line-buffer-id (:foreground ag-fg :weight 'bold))
(mode-line-highlight (:foreground ag-green))
(mode-line-emphasis (:foreground ag-fg :weight 'bold))
;; Font lock — core syntax
(font-lock-builtin-face (:foreground ag-aqua))
(font-lock-comment-face (:foreground ag-fg-dimmer :slant 'italic))
(font-lock-comment-delimiter-face (:foreground ag-fg-dimmer :slant 'italic))
(font-lock-constant-face (:foreground ag-purple))
(font-lock-doc-face (:foreground ag-fg-dimmer :slant 'italic))
(font-lock-function-name-face (:foreground ag-green))
(font-lock-keyword-face (:foreground ag-red))
(font-lock-negation-char-face (:foreground ag-orange))
(font-lock-number-face (:foreground ag-purple))
(font-lock-preprocessor-face (:foreground ag-aqua))
(font-lock-regexp-grouping-backslash (:foreground ag-yellow))
(font-lock-regexp-grouping-construct (:foreground ag-yellow))
(font-lock-string-face (:foreground ag-yellow))
(font-lock-type-face (:foreground ag-blue))
(font-lock-variable-name-face (:foreground ag-fg))
(font-lock-warning-face (:foreground ag-orange-dim :weight 'bold))
(font-lock-operator-face (:foreground ag-orange))
;; Search / isearch
(isearch (:background ag-orange-dim :foreground ag-bg :weight 'bold))
(isearch-fail (:background ag-red-dim :foreground ag-fg))
(lazy-highlight (:background ag-bg-3 :foreground ag-green))
(isearch-group-1 (:background ag-blue-dim :foreground ag-fg))
(isearch-group-2 (:background ag-blue :foreground ag-bg))
;; Completions
(completions-annotations (:foreground ag-fg-dimmer))
(completions-common-part (:foreground ag-green))
(completions-first-difference (:foreground ag-fg :weight 'bold))
;; Error / warning / success
(error (:foreground ag-red :weight 'bold))
(warning (:foreground ag-orange-dim :weight 'bold))
(success (:foreground ag-green :weight 'bold))
;; Compilation
(compilation-error (:foreground ag-red))
(compilation-warning (:foreground ag-yellow))
(compilation-info (:foreground ag-blue))
(compilation-line-number (:foreground ag-green))
(compilation-column-number (:foreground ag-aqua))
(compilation-mode-line-exit (:foreground ag-green))
(compilation-mode-line-fail (:foreground ag-red))
(compilation-mode-line-run (:foreground ag-yellow))
;; Dired
(dired-directory (:foreground ag-blue :weight 'bold))
(dired-flagged (:foreground ag-red))
(dired-header (:foreground ag-green :weight 'bold))
(dired-ignored (:foreground ag-fg-faint))
(dired-mark (:foreground ag-yellow))
(dired-marked (:foreground ag-orange :weight 'bold))
(dired-perm-write (:foreground ag-fg-dim))
(dired-symlink (:foreground ag-aqua))
(dired-warning (:foreground ag-orange-dim))
;; Diff / ediff
(diff-added (:foreground ag-green :background ag-bg))
(diff-changed (:foreground ag-blue :background ag-bg))
(diff-removed (:foreground ag-red :background ag-bg))
(diff-header (:foreground ag-yellow))
(diff-file-header (:foreground ag-yellow :weight 'bold))
(diff-hunk-header (:foreground ag-orange))
(diff-refine-added (:background ag-bg-3 :foreground ag-green))
(diff-refine-removed (:background ag-bg-3 :foreground ag-red))
(ediff-current-diff-A (:background "#4f2121"))
(ediff-current-diff-B (:background "#243c24"))
(ediff-current-diff-C (:background "#4f214f"))
(ediff-fine-diff-A (:background "#761919"))
(ediff-fine-diff-B (:background "#1c691c"))
(ediff-fine-diff-C (:background "#761976"))
;; Org mode
(org-level-1 (:foreground ag-red :weight 'bold))
(org-level-2 (:foreground ag-orange :weight 'bold))
(org-level-3 (:foreground ag-yellow :weight 'bold))
(org-level-4 (:foreground ag-green :weight 'bold))
(org-level-5 (:foreground ag-blue :weight 'bold))
(org-level-6 (:foreground ag-purple :weight 'bold))
(org-level-7 (:foreground ag-aqua :weight 'bold))
(org-level-8 (:foreground ag-fg-dim :weight 'bold))
(org-code (:foreground ag-green))
(org-verbatim (:foreground ag-yellow))
(org-block (:foreground ag-fg :background ag-bg-hard))
(org-block-begin-line (:foreground ag-fg-faint :background ag-bg-hard))
(org-block-end-line (:foreground ag-fg-faint :background ag-bg-hard))
(org-document-title (:foreground ag-fg :weight 'bold))
(org-document-info (:foreground ag-fg-dim))
(org-document-info-keyword (:foreground ag-fg-faint))
(org-date (:foreground ag-blue :underline t))
(org-footnote (:foreground ag-aqua :underline t))
(org-link (:foreground ag-green :underline t))
(org-special-keyword (:foreground ag-fg-faint))
(org-tag (:foreground ag-fg-faint :weight 'bold))
(org-table (:foreground ag-blue))
(org-todo (:foreground ag-red :weight 'bold))
(org-done (:foreground ag-aqua :weight 'bold))
(org-headline-done (:foreground ag-fg-faint))
(org-priority (:foreground ag-orange))
(org-checkbox (:foreground ag-blue))
(org-list-dt (:foreground ag-yellow))
(org-dispatcher-highlight (:foreground ag-red :weight 'bold))
;; Markdown
(markdown-header-face-1 (:foreground ag-red :weight 'bold))
(markdown-header-face-2 (:foreground ag-orange :weight 'bold))
(markdown-header-face-3 (:foreground ag-yellow :weight 'bold))
(markdown-header-face-4 (:foreground ag-green :weight 'bold))
(markdown-header-face-5 (:foreground ag-blue :weight 'bold))
(markdown-header-face-6 (:foreground ag-purple :weight 'bold))
(markdown-header-delimiter-face (:foreground ag-fg-dimmer))
(markdown-bold-face (:weight 'bold))
(markdown-italic-face (:slant 'italic))
(markdown-link-face (:foreground ag-purple))
(markdown-url-face (:foreground ag-green :underline t))
(markdown-code-face (:foreground ag-green :background ag-bg-hard))
(markdown-inline-code-face (:foreground ag-green))
(markdown-list-face (:foreground ag-red))
(markdown-language-keyword-face (:foreground ag-yellow))
(markdown-pre-face (:foreground ag-green))
(markdown-blockquote-face (:foreground ag-fg-dimmer :slant 'italic))
;; Magit
(magit-bisect-bad (:foreground ag-red))
(magit-bisect-good (:foreground ag-green))
(magit-bisect-skip (:foreground ag-yellow))
(magit-blame-date (:foreground ag-blue))
(magit-blame-heading (:foreground ag-fg-dim :background ag-bg-1))
(magit-branch-current (:foreground ag-blue :weight 'bold))
(magit-branch-local (:foreground ag-blue))
(magit-branch-remote (:foreground ag-green))
(magit-cherry-equivalent (:foreground ag-aqua))
(magit-cherry-unmatched (:foreground ag-purple))
(magit-diff-added (:foreground ag-green :background ag-bg))
(magit-diff-added-highlight (:foreground ag-green :background ag-bg-1))
(magit-diff-removed (:foreground ag-red :background ag-bg))
(magit-diff-removed-highlight (:foreground ag-red :background ag-bg-1))
(magit-diff-base (:foreground ag-yellow :background ag-bg))
(magit-diff-base-highlight (:foreground ag-yellow :background ag-bg-1))
(magit-diff-context (:foreground ag-fg-dim))
(magit-diff-context-highlight (:foreground ag-fg :background ag-bg-1))
(magit-diff-file-heading (:foreground ag-fg :weight 'bold))
(magit-diff-hunk-heading (:foreground ag-orange :background ag-bg-2))
(magit-diff-hunk-heading-highlight (:foreground ag-orange :background ag-bg-3))
(magit-hash (:foreground ag-fg-dimmer))
(magit-log-author (:foreground ag-green))
(magit-log-date (:foreground ag-blue))
(magit-log-graph (:foreground ag-fg-faint))
(magit-process-ng (:foreground ag-red :weight 'bold))
(magit-process-ok (:foreground ag-green :weight 'bold))
(magit-refname (:foreground ag-fg-dimmer))
(magit-section-heading (:foreground ag-yellow :weight 'bold))
(magit-section-highlight (:background ag-bg-1))
(magit-signature-bad (:foreground ag-red :weight 'bold))
(magit-signature-good (:foreground ag-green))
(magit-signature-untrusted (:foreground ag-yellow))
(magit-tag (:foreground ag-yellow))
;; Company
(company-tooltip (:foreground ag-fg :background ag-bg-1))
(company-tooltip-selection (:foreground ag-fg :background ag-bg-2))
(company-tooltip-annotation (:foreground ag-fg-dimmer))
(company-tooltip-common (:foreground ag-green))
(company-tooltip-common-selection (:foreground ag-green :background ag-bg-2))
(company-scrollbar-bg (:background ag-bg-1))
(company-scrollbar-fg (:background ag-fg-faint))
(company-preview (:foreground ag-fg-faint))
(company-preview-common (:foreground ag-fg-faint))
;; Corfu
(corfu-default (:foreground ag-fg :background ag-bg-1))
(corfu-current (:foreground ag-fg :background ag-bg-2))
(corfu-bar (:background ag-fg-faint))
(corfu-border (:background ag-bg-4))
(corfu-annotations (:foreground ag-fg-dimmer))
(corfu-deprecated (:foreground ag-fg-faint :strike-through t))
;; Flycheck / flymake
(flycheck-error (:underline (:style 'wave :color ag-red)))
(flycheck-warning (:underline (:style 'wave :color ag-orange-dim)))
(flycheck-info (:underline (:style 'wave :color ag-blue-dim)))
(flycheck-fringe-error (:foreground ag-red))
(flycheck-fringe-warning (:foreground ag-orange-dim))
(flycheck-fringe-info (:foreground ag-blue-dim))
(flymake-error (:underline (:style 'wave :color ag-red)))
(flymake-warning (:underline (:style 'wave :color ag-orange-dim)))
(flymake-note (:underline (:style 'wave :color ag-blue-dim)))
;; Eglot / LSP
(eglot-highlight-symbol-face (:background ag-bg-3))
(eglot-inlay-hint-face (:foreground ag-fg-faint :background ag-bg))
(eglot-parameter-hint-face (:foreground ag-fg-faint :background ag-bg))
(eglot-type-hint-face (:foreground ag-fg-faint :background ag-bg))
;; Treemacs / neotree
(treemacs-root-face (:foreground ag-green :weight 'bold))
(treemacs-file-face (:foreground ag-fg-dim))
(treemacs-directory-face (:foreground ag-blue))
(treemacs-git-added-face (:foreground ag-green))
(treemacs-git-modified-face (:foreground ag-blue))
(treemacs-git-renamed-face (:foreground ag-purple))
(treemacs-git-ignored-face (:foreground ag-fg-faint))
(treemacs-git-untracked-face (:foreground ag-yellow))
(treemacs-git-conflict-face (:foreground ag-red))
;; Rainbow delimiters
(rainbow-delimiters-depth-1-face (:foreground ag-bracket-1))
(rainbow-delimiters-depth-2-face (:foreground ag-bracket-2))
(rainbow-delimiters-depth-3-face (:foreground ag-bracket-3))
(rainbow-delimiters-depth-4-face (:foreground ag-bracket-4))
(rainbow-delimiters-depth-5-face (:foreground ag-bracket-5))
(rainbow-delimiters-depth-6-face (:foreground ag-bracket-6))
(rainbow-delimiters-depth-7-face (:foreground ag-bracket-1))
(rainbow-delimiters-depth-8-face (:foreground ag-bracket-2))
(rainbow-delimiters-depth-9-face (:foreground ag-bracket-3))
(rainbow-delimiters-unmatched-face (:foreground ag-fg-dimmer))
;; Whitespace mode
(whitespace-space (:background ag-bg :foreground ag-bg-2))
(whitespace-hspace (:background ag-bg :foreground ag-bg-2))
(whitespace-tab (:background ag-bg :foreground ag-bg-2))
(whitespace-newline (:foreground ag-bg-2))
(whitespace-trailing (:background ag-red-dim :foreground ag-fg))
(whitespace-line (:background ag-bg :foreground ag-orange-dim))
(whitespace-space-before-tab (:background ag-bg :foreground ag-bg-3))
(whitespace-indentation (:background ag-bg :foreground ag-bg-2))
(whitespace-empty (:background ag-bg-1))
(whitespace-space-after-tab (:background ag-bg :foreground ag-bg-3))
;; Vertico / selectrum / ivy
(vertico-current (:background ag-bg-2 :foreground ag-fg))
(ivy-current-match (:background ag-bg-2 :foreground ag-fg))
(ivy-minibuffer-match-face-1 (:foreground ag-fg-dim))
(ivy-minibuffer-match-face-2 (:foreground ag-green :weight 'bold))
(ivy-minibuffer-match-face-3 (:foreground ag-orange :weight 'bold))
(ivy-minibuffer-match-face-4 (:foreground ag-red :weight 'bold))
(ivy-virtual (:foreground ag-fg-dim))
(ivy-confirm-face (:foreground ag-green))
(ivy-match-required-face (:foreground ag-red))
;; Consult / orderless
(consult-file (:foreground ag-fg-dim))
(orderless-match-face-0 (:foreground ag-green :weight 'bold))
(orderless-match-face-1 (:foreground ag-orange :weight 'bold))
(orderless-match-face-2 (:foreground ag-blue :weight 'bold))
(orderless-match-face-3 (:foreground ag-red :weight 'bold))
;; Which-key
(which-key-key-face (:foreground ag-green))
(which-key-separator-face (:foreground ag-fg-dimmer))
(which-key-group-description-face (:foreground ag-yellow))
(which-key-command-description-face (:foreground ag-fg))
(which-key-local-map-description-face (:foreground ag-blue))
;; Term / vterm / eshell
(term-color-black (:foreground ag-bg-1 :background ag-bg-1))
(term-color-red (:foreground ag-red :background ag-red))
(term-color-green (:foreground ag-green :background ag-green))
(term-color-yellow (:foreground ag-yellow :background ag-yellow))
(term-color-blue (:foreground ag-blue :background ag-blue))
(term-color-magenta (:foreground ag-purple :background ag-purple))
(term-color-cyan (:foreground ag-aqua :background ag-aqua))
(term-color-white (:foreground ag-fg :background ag-fg))
(term-color-bright-black (:foreground ag-fg-dimmer :background ag-fg-dimmer))
(term-color-bright-red (:foreground ag-red :background ag-red))
(term-color-bright-green (:foreground ag-green-dim :background ag-green-dim))
(term-color-bright-yellow (:foreground ag-yellow :background ag-yellow))
(term-color-bright-blue (:foreground ag-blue :background ag-blue))
(term-color-bright-magenta (:foreground ag-purple :background ag-purple))
(term-color-bright-cyan (:foreground ag-aqua :background ag-aqua))
(term-color-bright-white (:foreground "#ddc7a1" :background "#ddc7a1"))
(ansi-color-black (:foreground ag-bg-1 :background ag-bg-1))
(ansi-color-red (:foreground ag-red :background ag-red))
(ansi-color-green (:foreground ag-green :background ag-green))
(ansi-color-yellow (:foreground ag-yellow :background ag-yellow))
(ansi-color-blue (:foreground ag-blue :background ag-blue))
(ansi-color-magenta (:foreground ag-purple :background ag-purple))
(ansi-color-cyan (:foreground ag-aqua :background ag-aqua))
(ansi-color-white (:foreground ag-fg :background ag-fg))
(eshell-prompt (:foreground ag-green :weight 'bold))
(eshell-ls-directory (:foreground ag-blue :weight 'bold))
(eshell-ls-executable (:foreground ag-green))
(eshell-ls-symlink (:foreground ag-aqua))
(eshell-ls-archive (:foreground ag-orange))
(eshell-ls-backup (:foreground ag-fg-faint))
(eshell-ls-clutter (:foreground ag-fg-faint))
(eshell-ls-missing (:foreground ag-red))
(eshell-ls-product (:foreground ag-yellow))
(eshell-ls-readonly (:foreground ag-orange-dim))
(eshell-ls-special (:foreground ag-purple))
(eshell-ls-unreadable (:foreground ag-red-dim))
;; Pulse / pulse highlight
(pulse-highlight-start-face (:background ag-bg-3))
;; Show-paren
(show-paren-match (:background ag-bg-3 :foreground ag-fg :weight 'bold))
(show-paren-mismatch (:background ag-red-dim :foreground ag-fg :weight 'bold))
;; Eldoc
(eldoc-highlight-function-argument (:foreground ag-orange :weight 'bold)))
;; -----------------------------------------------------------------------
;; Custom variables
;; -----------------------------------------------------------------------
(custom-theme-set-variables
'aldricos-gruvbox
`(ansi-color-names-vector
[,ag-bg-1
,ag-red
,ag-green
,ag-yellow
,ag-blue
,ag-purple
,ag-aqua
,ag-fg])))
;;;###autoload
(and load-file-name
(boundp 'custom-theme-load-path)
(add-to-list 'custom-theme-load-path
(file-name-as-directory
(file-name-directory load-file-name))))
(provide-theme 'aldricos-gruvbox)
;; Local Variables:
;; eval: (when (fboundp 'rainbow-mode) (rainbow-mode +1))
;; End:
;;; aldricos-gruvbox-theme.el ends here