;;; 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