;;; aldricos-gruvbox-theme.el --- Aldrico's Gruvbox color theme ;; Based on "Aldrico's Gruvbox" VS Code theme ;; Ported to Emacs using fleury-theme.el as structural template (deftheme aldricos-gruvbox "Aldrico's Gruvbox color theme") (let ((bg "#000000") (bg-soft "#1c1c1c") (bg-hard "#32302f") (bg-1 "#383432") (bg-2 "#45403d") (bg-3 "#504945") (bg-4 "#5a524c") (fg "#d4be98") (fg-dim "#a89984") (fg-dimmer "#928374") (fg-faint "#7c6f64") (red "#ea6962") (red-dim "#b85651") (orange "#e78a4e") (yellow "#d8a657") (green "#a9b665") (green-dim "#8f9a52") (aqua "#89b482") (blue "#7daea3") (purple "#d3869b") (orange-dim "#c18f41") (blue-dim "#68948a")) (custom-theme-set-faces 'aldricos-gruvbox ;; UI Elements `(default ((t (:background ,bg :foreground ,fg)))) `(cursor ((t (:background ,fg)))) `(region ((t (:background ,bg-3)))) `(highlight ((t (:background ,bg-1)))) `(hl-line ((t (:background ,bg-1)))) `(fringe ((t (:background ,bg :foreground ,fg-faint)))) `(vertical-border ((t (:foreground ,bg-4)))) `(minibuffer-prompt ((t (:foreground ,green :weight bold)))) `(link ((t (:foreground ,green :underline t)))) `(link-visited ((t (:foreground ,green-dim :underline t)))) `(trailing-whitespace ((t (:background ,red)))) `(secondary-selection ((t (:background ,bg-2)))) `(shadow ((t (:foreground ,fg-faint)))) `(tooltip ((t (:background ,bg-hard :foreground ,fg)))) ;; Line Numbers `(line-number ((t (:background ,bg :foreground ,fg-faint)))) `(line-number-current-line ((t (:background ,bg :foreground ,fg-dimmer)))) ;; Mode Line `(mode-line ((t (:background ,bg-2 :foreground ,fg-dim :box (:line-width 1 :color ,bg-4 :style nil))))) `(mode-line-inactive ((t (:background ,bg-1 :foreground ,fg-faint :box (:line-width 1 :color ,bg-4 :style nil))))) `(mode-line-buffer-id ((t (:foreground ,fg :weight bold)))) ;; Font Lock Faces `(font-lock-keyword-face ((t (:foreground ,red)))) `(font-lock-builtin-face ((t (:foreground ,aqua)))) `(font-lock-function-name-face ((t (:foreground ,green)))) `(font-lock-variable-name-face ((t (:foreground ,fg)))) `(font-lock-variable-use-face ((t (:foreground ,fg)))) `(font-lock-type-face ((t (:foreground ,blue)))) `(font-lock-constant-face ((t (:foreground ,purple)))) `(font-lock-number-face ((t (:foreground ,purple)))) `(font-lock-string-face ((t (:foreground ,yellow)))) `(font-lock-doc-face ((t (:foreground ,fg-dimmer :slant italic)))) `(font-lock-comment-face ((t (:foreground ,fg-dimmer :slant italic)))) `(font-lock-comment-delimiter-face ((t (:foreground ,fg-dimmer :slant italic)))) `(font-lock-preprocessor-face ((t (:foreground ,aqua)))) `(font-lock-warning-face ((t (:foreground ,orange-dim :weight bold)))) `(font-lock-operator-face ((t (:foreground ,orange)))) `(font-lock-negation-char-face ((t (:foreground ,orange)))) `(font-lock-regexp-grouping-backslash ((t (:foreground ,yellow)))) `(font-lock-regexp-grouping-construct ((t (:foreground ,yellow)))) ;; Search `(isearch ((t (:background ,orange-dim :foreground ,bg :weight bold)))) `(isearch-fail ((t (:background ,red-dim :foreground ,fg)))) `(lazy-highlight ((t (:background ,bg-3 :foreground ,green)))) ;; Show Paren `(show-paren-match ((t (:background ,bg-3 :foreground ,fg :weight bold)))) `(show-paren-mismatch ((t (:background ,red-dim :foreground ,fg :weight bold)))) ;; Error / Warning / Success `(error ((t (:foreground ,red :weight bold)))) `(warning ((t (:foreground ,orange-dim :weight bold)))) `(success ((t (:foreground ,green :weight bold)))) ;; Compilation `(compilation-error ((t (:foreground ,red)))) `(compilation-warning ((t (:foreground ,yellow :weight bold)))) `(compilation-info ((t (:foreground ,blue)))) `(compilation-line-number ((t (:foreground ,green)))) `(compilation-column-number ((t (:foreground ,aqua)))) `(compilation-mode-line-exit ((t (:foreground ,green :weight bold)))) `(compilation-mode-line-fail ((t (:foreground ,red :weight bold)))) `(compilation-mode-line-run ((t (:foreground ,yellow :weight bold)))) ;; Flycheck `(flycheck-error ((t (:underline (:color ,red :style wave))))) `(flycheck-warning ((t (:underline (:color ,orange-dim :style wave))))) `(flycheck-info ((t (:underline (:color ,blue-dim :style wave))))) `(flycheck-fringe-error ((t (:foreground ,red)))) `(flycheck-fringe-warning ((t (:foreground ,orange-dim)))) `(flycheck-fringe-info ((t (:foreground ,blue-dim)))) ;; Diff `(diff-added ((t (:foreground ,green)))) `(diff-removed ((t (:foreground ,red)))) `(diff-changed ((t (:foreground ,blue)))) `(diff-header ((t (:foreground ,yellow)))) `(diff-file-header ((t (:foreground ,yellow :weight bold)))) `(diff-hunk-header ((t (:foreground ,orange)))) ;; Dired `(dired-directory ((t (:foreground ,blue :weight bold)))) `(dired-flagged ((t (:foreground ,red)))) `(dired-ignored ((t (:foreground ,fg-faint)))) `(dired-mark ((t (:foreground ,yellow)))) `(dired-marked ((t (:foreground ,orange :weight bold)))) `(dired-symlink ((t (:foreground ,aqua)))) `(dired-warning ((t (:foreground ,orange-dim)))) ;; Org Mode `(org-level-1 ((t (:foreground ,red :weight bold)))) `(org-level-2 ((t (:foreground ,orange :weight bold)))) `(org-level-3 ((t (:foreground ,yellow :weight bold)))) `(org-level-4 ((t (:foreground ,green :weight bold)))) `(org-level-5 ((t (:foreground ,blue :weight bold)))) `(org-level-6 ((t (:foreground ,purple :weight bold)))) `(org-level-7 ((t (:foreground ,aqua :weight bold)))) `(org-level-8 ((t (:foreground ,fg-dim :weight bold)))) `(org-block ((t (:foreground ,fg :background ,bg-hard)))) `(org-block-begin-line ((t (:foreground ,fg-faint :background ,bg-hard)))) `(org-block-end-line ((t (:foreground ,fg-faint :background ,bg-hard)))) `(org-code ((t (:foreground ,green)))) `(org-verbatim ((t (:foreground ,yellow)))) `(org-link ((t (:foreground ,green :underline t)))) `(org-todo ((t (:foreground ,red :weight bold)))) `(org-done ((t (:foreground ,aqua :weight bold)))) `(org-table ((t (:foreground ,blue)))) `(org-date ((t (:foreground ,blue :underline t)))) `(org-special-keyword ((t (:foreground ,fg-faint)))) `(org-tag ((t (:foreground ,fg-faint :weight bold)))) ;; Markdown `(markdown-header-face-1 ((t (:foreground ,red :weight bold)))) `(markdown-header-face-2 ((t (:foreground ,orange :weight bold)))) `(markdown-header-face-3 ((t (:foreground ,yellow :weight bold)))) `(markdown-header-face-4 ((t (:foreground ,green :weight bold)))) `(markdown-header-face-5 ((t (:foreground ,blue :weight bold)))) `(markdown-header-face-6 ((t (:foreground ,purple :weight bold)))) `(markdown-code-face ((t (:foreground ,green :background ,bg-hard)))) `(markdown-inline-code-face ((t (:foreground ,green)))) `(markdown-link-face ((t (:foreground ,purple)))) `(markdown-url-face ((t (:foreground ,green :underline t)))) `(markdown-list-face ((t (:foreground ,red)))) `(markdown-bold-face ((t (:weight bold)))) `(markdown-italic-face ((t (:slant italic)))) ;; Term / ansi colors `(term-color-black ((t (:foreground ,bg-1 :background ,bg-1)))) `(term-color-red ((t (:foreground ,red :background ,red)))) `(term-color-green ((t (:foreground ,green :background ,green)))) `(term-color-yellow ((t (:foreground ,yellow :background ,yellow)))) `(term-color-blue ((t (:foreground ,blue :background ,blue)))) `(term-color-magenta ((t (:foreground ,purple :background ,purple)))) `(term-color-cyan ((t (:foreground ,aqua :background ,aqua)))) `(term-color-white ((t (:foreground ,fg :background ,fg)))) ;; Eshell `(eshell-prompt ((t (:foreground ,green :weight bold)))) `(eshell-ls-directory ((t (:foreground ,blue :weight bold)))) `(eshell-ls-executable ((t (:foreground ,green)))) `(eshell-ls-symlink ((t (:foreground ,aqua)))) `(eshell-ls-missing ((t (:foreground ,red)))) `(eshell-ls-archive ((t (:foreground ,orange)))) `(eshell-ls-readonly ((t (:foreground ,orange-dim)))) `(eshell-ls-unreadable ((t (:foreground ,red-dim)))) ;; Whitespace `(whitespace-trailing ((t (:background ,red-dim :foreground ,fg)))) `(whitespace-space ((t (:background ,bg :foreground ,bg-2)))) `(whitespace-tab ((t (:background ,bg :foreground ,bg-2)))) `(whitespace-newline ((t (:foreground ,bg-2)))))) (custom-theme-set-variables 'aldricos-gruvbox '(ansi-color-names-vector ["#383432" "#ea6962" "#a9b665" "#d8a657" "#7daea3" "#d3869b" "#89b482" "#d4be98"])) (provide-theme 'aldricos-gruvbox) ;;; aldricos-gruvbox-theme.el ends here