Created
January 21, 2026 07:35
-
-
Save mefuru/92aa4f5441f5b1786f5ec13f23dd60db to your computer and use it in GitHub Desktop.
Yven Klein Blue Emacs Theme
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ;;; Commentary: | |
| ;; An Emacs theme based on Yves Klein's International Klein Blue (IKB). | |
| ;; The primary background uses the iconic ultramarine blue (#002391), | |
| ;; with complementary colors derived from color theory: | |
| ;; - Orange/gold tones as the direct complement | |
| ;; - Warm yellows and ambers for highlights | |
| ;; - Soft whites and creams for text | |
| ;; | |
| ;; Well suited for prose: particularly org-mode and markdown-mode, | |
| ;; or any mode that works well with `variable-pitch` mode. | |
| ;; | |
| ;; Theme Customizations: | |
| ;; - `klein-blue-theme-variable-headers` | |
| ;; Enable / disable different text heights for different faces. | |
| ;; - `klein-blue-theme-variable-pitch-multiplier` | |
| ;; Relative size for the variable pitch font. | |
| ;;; Code: | |
| (defvar klein-blue-theme-monospace-height | |
| (face-attribute 'fixed-pitch :height nil 'default) | |
| "The original height stored as a defvar to stay constant across reloads.") | |
| (defcustom klein-blue-theme-variable-headers t | |
| "Use varying sizes for headers in org and markdown." | |
| :type 'boolean | |
| :group 'poet) | |
| (defcustom klein-blue-theme-variable-pitch-multiplier 1.0 | |
| "Relative size for the variable pitch font." | |
| :type 'number | |
| :group 'poet) | |
| (deftheme klein-blue | |
| "A theme inspired by Yves Klein's International Klein Blue.") | |
| ;; Color Palette | |
| ;; Primary: International Klein Blue (IKB) #002391 | |
| ;; The authentic IKB is a deep ultramarine with violet undertones | |
| ;; Complement: Orange/Gold #FF9F00, #FFA726 | |
| ;; Warm accents: #FFD54F, #FFAB40, #FF7043 | |
| ;; Neutrals: #F5F5DC (beige), #FFFEF0 (cream), #E8E4D9 | |
| (let* ( | |
| ;; Primary Klein Blue variants | |
| (klein-bg "#002391") ; International Klein Blue (IKB) | |
| (klein-bg-alt "#001B6D") ; Darker Klein Blue | |
| (klein-bg-light "#0033A0") ; Lighter Klein Blue | |
| (klein-deep "#00124D") ; Very dark Klein Blue | |
| ;; Complementary Orange/Gold spectrum | |
| (complement-gold "#FFA726") ; Primary complement | |
| (complement-orange "#FF7043") ; Warmer orange | |
| (complement-amber "#FFB74D") ; Amber | |
| (complement-yellow "#FFD54F") ; Bright yellow | |
| ;; Text colors (warm whites and creams) | |
| (fg-main "#FFFEF0") ; Cream white | |
| (fg-dim "#E8E4D9") ; Muted cream | |
| (fg-faint "#C5C0B0") ; Faint text | |
| ;; Semantic colors (adjusted for blue background) | |
| (success "#81C784") ; Soft green | |
| (warning "#FFD54F") ; Yellow | |
| (error "#FF8A80") ; Soft red | |
| (info "#81D4FA") ; Light blue | |
| ;; Code/monospace background | |
| (code-bg "#001845") ; Darker blue for code blocks | |
| (code-bg-inline "#00236B") ; Inline code | |
| ;; Selection and highlighting | |
| (selection "#1E3A8A") ; Selection background | |
| (highlight "#0041C2") ; Current line | |
| (match-bg "#4A148C") ; Search match (purple accent) | |
| ;; Mode line | |
| (modeline-bg "#001845") | |
| (modeline-fg "#FFD54F") | |
| (modeline-inactive-bg "#00175A") | |
| (modeline-inactive-fg "#7986CB") | |
| ;; Links | |
| (link "#81D4FA") | |
| (link-visited "#CE93D8") | |
| ;; Diffs | |
| (diff-added-bg "#1B5E20") | |
| (diff-removed-bg "#B71C1C") | |
| (diff-changed-bg "#4A148C") | |
| ;; Variable pitch multiplier | |
| (scale klein-blue-theme-variable-pitch-multiplier) | |
| ;; Header heights | |
| (h1 (if klein-blue-theme-variable-headers (* scale 1.6) 1.0)) | |
| (h2 (if klein-blue-theme-variable-headers (* scale 1.4) 1.0)) | |
| (h3 (if klein-blue-theme-variable-headers (* scale 1.25) 1.0)) | |
| (h4 (if klein-blue-theme-variable-headers (* scale 1.15) 1.0)) | |
| (h5 (if klein-blue-theme-variable-headers (* scale 1.1) 1.0)) | |
| (h6 (if klein-blue-theme-variable-headers (* scale 1.05) 1.0))) | |
| (custom-theme-set-faces | |
| 'klein-blue | |
| ;; Basic faces | |
| `(default ((t (:background ,klein-bg :foreground ,fg-main)))) | |
| `(cursor ((t (:background ,complement-gold)))) | |
| `(fringe ((t (:background ,klein-bg-alt :foreground ,fg-faint)))) | |
| `(hl-line ((t (:background ,highlight)))) | |
| `(region ((t (:background ,selection :extend t)))) | |
| `(secondary-selection ((t (:background ,klein-bg-light)))) | |
| `(buffer-menu-buffer ((t (:foreground ,fg-main)))) | |
| `(minibuffer-prompt ((t (:foreground ,complement-gold :weight bold)))) | |
| `(vertical-border ((t (:foreground ,klein-bg-light)))) | |
| `(window-divider ((t (:foreground ,klein-bg-light)))) | |
| `(window-divider-first-pixel ((t (:foreground ,klein-bg-light)))) | |
| `(window-divider-last-pixel ((t (:foreground ,klein-bg-light)))) | |
| ;; Line numbers | |
| `(line-number ((t (:foreground ,fg-faint :background ,klein-bg-alt)))) | |
| `(line-number-current-line ((t (:foreground ,complement-gold :background ,highlight :weight bold)))) | |
| ;; Font lock faces (syntax highlighting) | |
| `(font-lock-builtin-face ((t (:foreground ,complement-amber)))) | |
| `(font-lock-comment-face ((t (:foreground ,fg-faint :slant italic)))) | |
| `(font-lock-comment-delimiter-face ((t (:foreground ,fg-faint :slant italic)))) | |
| `(font-lock-constant-face ((t (:foreground ,complement-orange)))) | |
| `(font-lock-doc-face ((t (:foreground ,fg-dim :slant italic)))) | |
| `(font-lock-function-name-face ((t (:foreground ,complement-gold :weight bold)))) | |
| `(font-lock-keyword-face ((t (:foreground ,complement-yellow :weight bold)))) | |
| `(font-lock-negation-char-face ((t (:foreground ,error)))) | |
| `(font-lock-preprocessor-face ((t (:foreground ,info)))) | |
| `(font-lock-regexp-grouping-backslash ((t (:foreground ,complement-amber)))) | |
| `(font-lock-regexp-grouping-construct ((t (:foreground ,complement-amber)))) | |
| `(font-lock-string-face ((t (:foreground ,success)))) | |
| `(font-lock-type-face ((t (:foreground ,link)))) | |
| `(font-lock-variable-name-face ((t (:foreground ,fg-main)))) | |
| `(font-lock-warning-face ((t (:foreground ,warning :weight bold)))) | |
| ;; Mode line | |
| `(mode-line ((t (:background ,modeline-bg :foreground ,modeline-fg :box (:line-width 4 :color ,modeline-bg))))) | |
| `(mode-line-buffer-id ((t (:foreground ,complement-gold :weight bold)))) | |
| `(mode-line-emphasis ((t (:foreground ,fg-main :weight bold)))) | |
| `(mode-line-highlight ((t (:foreground ,complement-yellow)))) | |
| `(mode-line-inactive ((t (:background ,modeline-inactive-bg :foreground ,modeline-inactive-fg :box (:line-width 4 :color ,modeline-inactive-bg))))) | |
| ;; Header line | |
| `(header-line ((t (:background ,klein-bg-alt :foreground ,fg-dim)))) | |
| ;; Links | |
| `(link ((t (:foreground ,link :underline t)))) | |
| `(link-visited ((t (:foreground ,link-visited :underline t)))) | |
| ;; Highlighting | |
| `(highlight ((t (:background ,highlight)))) | |
| `(lazy-highlight ((t (:background ,match-bg :foreground ,fg-main)))) | |
| `(match ((t (:background ,match-bg :foreground ,fg-main)))) | |
| `(isearch ((t (:background ,complement-gold :foreground ,klein-deep :weight bold)))) | |
| `(isearch-fail ((t (:background ,error :foreground ,fg-main)))) | |
| ;; Errors, warnings, success | |
| `(error ((t (:foreground ,error :weight bold)))) | |
| `(warning ((t (:foreground ,warning :weight bold)))) | |
| `(success ((t (:foreground ,success :weight bold)))) | |
| ;; Completions | |
| `(completions-common-part ((t (:foreground ,complement-gold)))) | |
| `(completions-first-difference ((t (:foreground ,complement-yellow :weight bold)))) | |
| ;; Dired | |
| `(dired-directory ((t (:foreground ,complement-gold :weight bold)))) | |
| `(dired-flagged ((t (:foreground ,error)))) | |
| `(dired-header ((t (:foreground ,info :weight bold)))) | |
| `(dired-ignored ((t (:foreground ,fg-faint)))) | |
| `(dired-mark ((t (:foreground ,complement-yellow :weight bold)))) | |
| `(dired-marked ((t (:foreground ,complement-orange :weight bold)))) | |
| `(dired-perm-write ((t (:foreground ,fg-main)))) | |
| `(dired-symlink ((t (:foreground ,link)))) | |
| `(dired-warning ((t (:foreground ,warning)))) | |
| ;; Whitespace | |
| `(whitespace-empty ((t (:background ,warning)))) | |
| `(whitespace-hspace ((t (:foreground ,fg-faint)))) | |
| `(whitespace-indentation ((t (:foreground ,fg-faint)))) | |
| `(whitespace-line ((t (:background ,klein-bg-alt)))) | |
| `(whitespace-newline ((t (:foreground ,fg-faint)))) | |
| `(whitespace-space ((t (:foreground ,fg-faint)))) | |
| `(whitespace-space-after-tab ((t (:foreground ,fg-faint)))) | |
| `(whitespace-trailing ((t (:background ,error)))) | |
| `(whitespace-tab ((t (:foreground ,fg-faint)))) | |
| ;; Parenthesis matching | |
| `(show-paren-match ((t (:background ,complement-gold :foreground ,klein-deep :weight bold)))) | |
| `(show-paren-mismatch ((t (:background ,error :foreground ,fg-main :weight bold)))) | |
| ;; Variable/fixed pitch | |
| `(fixed-pitch ((t (:family unspecified :height ,klein-blue-theme-monospace-height)))) | |
| `(variable-pitch ((t (:family unspecified)))) | |
| ;; Org-mode faces | |
| `(org-default ((t (:inherit variable-pitch :foreground ,fg-main :background ,klein-bg)))) | |
| `(org-hide ((t (:foreground ,klein-bg)))) | |
| `(org-indent ((t (:inherit (org-hide fixed-pitch))))) | |
| ;; Org headings | |
| `(org-level-1 ((t (:inherit variable-pitch :foreground ,complement-gold :weight bold :height ,h1)))) | |
| `(org-level-2 ((t (:inherit variable-pitch :foreground ,complement-amber :weight bold :height ,h2)))) | |
| `(org-level-3 ((t (:inherit variable-pitch :foreground ,complement-yellow :weight bold :height ,h3)))) | |
| `(org-level-4 ((t (:inherit variable-pitch :foreground ,link :weight bold :height ,h4)))) | |
| `(org-level-5 ((t (:inherit variable-pitch :foreground ,info :weight bold :height ,h5)))) | |
| `(org-level-6 ((t (:inherit variable-pitch :foreground ,fg-dim :weight bold :height ,h6)))) | |
| `(org-level-7 ((t (:inherit variable-pitch :foreground ,fg-dim :weight bold)))) | |
| `(org-level-8 ((t (:inherit variable-pitch :foreground ,fg-faint :weight bold)))) | |
| ;; Org document info | |
| `(org-document-title ((t (:inherit variable-pitch :foreground ,complement-gold :weight bold :height ,h1)))) | |
| `(org-document-info ((t (:inherit variable-pitch :foreground ,fg-dim)))) | |
| `(org-document-info-keyword ((t (:inherit fixed-pitch :foreground ,fg-faint)))) | |
| ;; Org meta lines and properties | |
| `(org-meta-line ((t (:inherit fixed-pitch :foreground ,fg-faint)))) | |
| `(org-property-value ((t (:inherit fixed-pitch :foreground ,fg-dim)))) | |
| `(org-special-keyword ((t (:inherit fixed-pitch :foreground ,fg-faint)))) | |
| `(org-drawer ((t (:inherit fixed-pitch :foreground ,fg-faint)))) | |
| ;; Org code and verbatim | |
| `(org-code ((t (:inherit fixed-pitch :foreground ,complement-amber :background ,code-bg-inline)))) | |
| `(org-verbatim ((t (:inherit fixed-pitch :foreground ,success :background ,code-bg-inline)))) | |
| `(org-block ((t (:inherit fixed-pitch :background ,code-bg :extend t)))) | |
| `(org-block-begin-line ((t (:inherit fixed-pitch :foreground ,fg-faint :background ,klein-deep :extend t)))) | |
| `(org-block-end-line ((t (:inherit org-block-begin-line)))) | |
| ;; Org other elements | |
| `(org-table ((t (:inherit fixed-pitch :foreground ,fg-main :background ,code-bg)))) | |
| `(org-formula ((t (:inherit fixed-pitch :foreground ,complement-orange)))) | |
| `(org-link ((t (:inherit variable-pitch :foreground ,link :underline t)))) | |
| `(org-footnote ((t (:foreground ,link :underline t)))) | |
| `(org-ellipsis ((t (:foreground ,fg-faint :underline nil)))) | |
| `(org-date ((t (:inherit fixed-pitch :foreground ,info :underline t)))) | |
| `(org-tag ((t (:foreground ,fg-faint :weight normal)))) | |
| `(org-checkbox ((t (:inherit fixed-pitch :foreground ,complement-gold :weight bold)))) | |
| ;; Org agenda and todo | |
| `(org-todo ((t (:foreground ,error :weight bold)))) | |
| `(org-done ((t (:foreground ,success :weight bold)))) | |
| `(org-headline-done ((t (:foreground ,fg-faint)))) | |
| `(org-priority ((t (:foreground ,complement-orange :weight bold)))) | |
| `(org-scheduled ((t (:foreground ,success)))) | |
| `(org-scheduled-previously ((t (:foreground ,warning)))) | |
| `(org-scheduled-today ((t (:foreground ,complement-gold)))) | |
| `(org-upcoming-deadline ((t (:foreground ,warning)))) | |
| `(org-deadline-announce ((t (:foreground ,error)))) | |
| `(org-warning ((t (:foreground ,warning :weight bold)))) | |
| ;; Org agenda | |
| `(org-agenda-structure ((t (:foreground ,complement-gold :weight bold)))) | |
| `(org-agenda-date ((t (:foreground ,link)))) | |
| `(org-agenda-date-today ((t (:foreground ,complement-gold :weight bold)))) | |
| `(org-agenda-date-weekend ((t (:foreground ,fg-dim)))) | |
| `(org-agenda-done ((t (:foreground ,success)))) | |
| `(org-agenda-current-time ((t (:foreground ,complement-amber)))) | |
| `(org-time-grid ((t (:foreground ,fg-faint)))) | |
| ;; Markdown faces | |
| `(markdown-header-face ((t (:inherit variable-pitch :foreground ,complement-gold :weight bold)))) | |
| `(markdown-header-face-1 ((t (:inherit markdown-header-face :height ,h1)))) | |
| `(markdown-header-face-2 ((t (:inherit markdown-header-face :height ,h2 :foreground ,complement-amber)))) | |
| `(markdown-header-face-3 ((t (:inherit markdown-header-face :height ,h3 :foreground ,complement-yellow)))) | |
| `(markdown-header-face-4 ((t (:inherit markdown-header-face :height ,h4 :foreground ,link)))) | |
| `(markdown-header-face-5 ((t (:inherit markdown-header-face :height ,h5 :foreground ,info)))) | |
| `(markdown-header-face-6 ((t (:inherit markdown-header-face :height ,h6 :foreground ,fg-dim)))) | |
| `(markdown-bold-face ((t (:foreground ,fg-main :weight bold)))) | |
| `(markdown-italic-face ((t (:foreground ,fg-main :slant italic)))) | |
| `(markdown-strike-through-face ((t (:foreground ,fg-faint :strike-through t)))) | |
| `(markdown-inline-code-face ((t (:inherit fixed-pitch :foreground ,complement-amber :background ,code-bg-inline)))) | |
| `(markdown-pre-face ((t (:inherit fixed-pitch :foreground ,fg-main :background ,code-bg)))) | |
| `(markdown-code-face ((t (:inherit fixed-pitch :background ,code-bg :extend t)))) | |
| `(markdown-link-face ((t (:foreground ,link)))) | |
| `(markdown-url-face ((t (:foreground ,fg-faint)))) | |
| `(markdown-plain-url-face ((t (:foreground ,link :underline t)))) | |
| `(markdown-blockquote-face ((t (:foreground ,fg-dim :slant italic)))) | |
| `(markdown-list-face ((t (:foreground ,complement-gold)))) | |
| `(markdown-metadata-key-face ((t (:foreground ,fg-faint)))) | |
| `(markdown-metadata-value-face ((t (:foreground ,fg-dim)))) | |
| ;; Company mode | |
| `(company-tooltip ((t (:background ,klein-bg-alt :foreground ,fg-main)))) | |
| `(company-tooltip-common ((t (:foreground ,complement-gold)))) | |
| `(company-tooltip-selection ((t (:background ,selection)))) | |
| `(company-tooltip-annotation ((t (:foreground ,fg-dim)))) | |
| `(company-scrollbar-bg ((t (:background ,klein-bg-alt)))) | |
| `(company-scrollbar-fg ((t (:background ,complement-gold)))) | |
| `(company-preview ((t (:background ,selection)))) | |
| `(company-preview-common ((t (:foreground ,complement-gold)))) | |
| ;; Ivy/Counsel/Swiper | |
| `(ivy-current-match ((t (:background ,selection :extend t)))) | |
| `(ivy-minibuffer-match-face-1 ((t (:foreground ,complement-gold)))) | |
| `(ivy-minibuffer-match-face-2 ((t (:foreground ,complement-amber :weight bold)))) | |
| `(ivy-minibuffer-match-face-3 ((t (:foreground ,complement-yellow :weight bold)))) | |
| `(ivy-minibuffer-match-face-4 ((t (:foreground ,complement-orange :weight bold)))) | |
| `(ivy-confirm-face ((t (:foreground ,success)))) | |
| `(ivy-match-required-face ((t (:foreground ,error)))) | |
| `(ivy-remote ((t (:foreground ,link)))) | |
| `(ivy-virtual ((t (:foreground ,fg-faint)))) | |
| `(swiper-line-face ((t (:background ,selection :extend t)))) | |
| `(swiper-match-face-1 ((t (:foreground ,complement-gold)))) | |
| `(swiper-match-face-2 ((t (:foreground ,complement-amber :weight bold)))) | |
| `(swiper-match-face-3 ((t (:foreground ,complement-yellow :weight bold)))) | |
| `(swiper-match-face-4 ((t (:foreground ,complement-orange :weight bold)))) | |
| ;; Vertico | |
| `(vertico-current ((t (:background ,selection :extend t)))) | |
| `(vertico-group-title ((t (:foreground ,fg-faint :weight bold)))) | |
| `(vertico-group-separator ((t (:foreground ,fg-faint :strike-through t)))) | |
| ;; Orderless | |
| `(orderless-match-face-0 ((t (:foreground ,complement-gold :weight bold)))) | |
| `(orderless-match-face-1 ((t (:foreground ,complement-amber :weight bold)))) | |
| `(orderless-match-face-2 ((t (:foreground ,complement-yellow :weight bold)))) | |
| `(orderless-match-face-3 ((t (:foreground ,complement-orange :weight bold)))) | |
| ;; Magit | |
| `(magit-section-heading ((t (:foreground ,complement-gold :weight bold)))) | |
| `(magit-section-highlight ((t (:background ,highlight)))) | |
| `(magit-branch-local ((t (:foreground ,link)))) | |
| `(magit-branch-remote ((t (:foreground ,success)))) | |
| `(magit-branch-current ((t (:foreground ,complement-gold :weight bold :box t)))) | |
| `(magit-hash ((t (:foreground ,fg-faint)))) | |
| `(magit-log-author ((t (:foreground ,complement-amber)))) | |
| `(magit-log-date ((t (:foreground ,fg-dim)))) | |
| `(magit-tag ((t (:foreground ,complement-orange)))) | |
| `(magit-filename ((t (:foreground ,fg-main)))) | |
| `(magit-diff-context ((t (:foreground ,fg-faint)))) | |
| `(magit-diff-context-highlight ((t (:background ,klein-bg-alt :foreground ,fg-dim)))) | |
| `(magit-diff-added ((t (:background ,diff-added-bg :foreground ,success)))) | |
| `(magit-diff-added-highlight ((t (:background ,diff-added-bg :foreground ,success)))) | |
| `(magit-diff-removed ((t (:background ,diff-removed-bg :foreground ,error)))) | |
| `(magit-diff-removed-highlight ((t (:background ,diff-removed-bg :foreground ,error)))) | |
| `(magit-diff-hunk-heading ((t (:background ,klein-bg-light :foreground ,fg-main)))) | |
| `(magit-diff-hunk-heading-highlight ((t (:background ,selection :foreground ,fg-main)))) | |
| `(magit-diff-file-heading ((t (:foreground ,fg-main :weight bold)))) | |
| `(magit-diff-file-heading-highlight ((t (:background ,highlight)))) | |
| `(magit-diffstat-added ((t (:foreground ,success)))) | |
| `(magit-diffstat-removed ((t (:foreground ,error)))) | |
| ;; Diff-hl | |
| `(diff-hl-insert ((t (:background ,success :foreground ,success)))) | |
| `(diff-hl-delete ((t (:background ,error :foreground ,error)))) | |
| `(diff-hl-change ((t (:background ,warning :foreground ,warning)))) | |
| ;; Which-key | |
| `(which-key-key-face ((t (:foreground ,complement-gold)))) | |
| `(which-key-separator-face ((t (:foreground ,fg-faint)))) | |
| `(which-key-note-face ((t (:foreground ,fg-faint)))) | |
| `(which-key-command-description-face ((t (:foreground ,fg-main)))) | |
| `(which-key-group-description-face ((t (:foreground ,complement-amber)))) | |
| ;; Flycheck | |
| `(flycheck-error ((t (:underline (:style wave :color ,error))))) | |
| `(flycheck-warning ((t (:underline (:style wave :color ,warning))))) | |
| `(flycheck-info ((t (:underline (:style wave :color ,info))))) | |
| `(flycheck-fringe-error ((t (:foreground ,error)))) | |
| `(flycheck-fringe-warning ((t (:foreground ,warning)))) | |
| `(flycheck-fringe-info ((t (:foreground ,info)))) | |
| ;; Flymake | |
| `(flymake-error ((t (:underline (:style wave :color ,error))))) | |
| `(flymake-warning ((t (:underline (:style wave :color ,warning))))) | |
| `(flymake-note ((t (:underline (:style wave :color ,info))))) | |
| ;; LSP | |
| `(lsp-face-highlight-textual ((t (:background ,highlight)))) | |
| `(lsp-face-highlight-read ((t (:background ,highlight)))) | |
| `(lsp-face-highlight-write ((t (:background ,selection)))) | |
| `(lsp-ui-doc-background ((t (:background ,klein-bg-alt)))) | |
| `(lsp-ui-sideline-code-action ((t (:foreground ,complement-gold)))) | |
| ;; Rainbow delimiters | |
| `(rainbow-delimiters-depth-1-face ((t (:foreground ,complement-gold)))) | |
| `(rainbow-delimiters-depth-2-face ((t (:foreground ,link)))) | |
| `(rainbow-delimiters-depth-3-face ((t (:foreground ,complement-amber)))) | |
| `(rainbow-delimiters-depth-4-face ((t (:foreground ,success)))) | |
| `(rainbow-delimiters-depth-5-face ((t (:foreground ,complement-yellow)))) | |
| `(rainbow-delimiters-depth-6-face ((t (:foreground ,info)))) | |
| `(rainbow-delimiters-depth-7-face ((t (:foreground ,complement-orange)))) | |
| `(rainbow-delimiters-depth-8-face ((t (:foreground ,link-visited)))) | |
| `(rainbow-delimiters-depth-9-face ((t (:foreground ,fg-dim)))) | |
| ;; Treemacs | |
| `(treemacs-directory-face ((t (:foreground ,complement-gold)))) | |
| `(treemacs-file-face ((t (:foreground ,fg-main)))) | |
| `(treemacs-git-modified-face ((t (:foreground ,warning)))) | |
| `(treemacs-git-added-face ((t (:foreground ,success)))) | |
| `(treemacs-git-untracked-face ((t (:foreground ,fg-faint)))) | |
| `(treemacs-git-ignored-face ((t (:foreground ,fg-faint)))) | |
| `(treemacs-root-face ((t (:foreground ,complement-gold :weight bold :height 1.2)))) | |
| ;; Helm | |
| `(helm-selection ((t (:background ,selection :extend t)))) | |
| `(helm-match ((t (:foreground ,complement-gold :weight bold)))) | |
| `(helm-source-header ((t (:background ,klein-bg-alt :foreground ,complement-gold :weight bold :height 1.1)))) | |
| `(helm-candidate-number ((t (:background ,klein-bg-light :foreground ,fg-main)))) | |
| `(helm-ff-directory ((t (:foreground ,complement-gold :weight bold)))) | |
| `(helm-ff-file ((t (:foreground ,fg-main)))) | |
| `(helm-ff-executable ((t (:foreground ,success)))) | |
| `(helm-ff-symlink ((t (:foreground ,link)))) | |
| `(helm-buffer-directory ((t (:foreground ,complement-gold)))) | |
| `(helm-buffer-file ((t (:foreground ,fg-main)))) | |
| `(helm-buffer-process ((t (:foreground ,info)))) | |
| ;; Terminal/ansi colors | |
| `(term-color-black ((t (:foreground ,klein-deep :background ,klein-deep)))) | |
| `(term-color-red ((t (:foreground ,error :background ,error)))) | |
| `(term-color-green ((t (:foreground ,success :background ,success)))) | |
| `(term-color-yellow ((t (:foreground ,warning :background ,warning)))) | |
| `(term-color-blue ((t (:foreground ,link :background ,link)))) | |
| `(term-color-magenta ((t (:foreground ,link-visited :background ,link-visited)))) | |
| `(term-color-cyan ((t (:foreground ,info :background ,info)))) | |
| `(term-color-white ((t (:foreground ,fg-main :background ,fg-main)))) | |
| ;; Vterm | |
| `(vterm-color-black ((t (:foreground ,klein-deep :background ,klein-deep)))) | |
| `(vterm-color-red ((t (:foreground ,error :background ,error)))) | |
| `(vterm-color-green ((t (:foreground ,success :background ,success)))) | |
| `(vterm-color-yellow ((t (:foreground ,warning :background ,warning)))) | |
| `(vterm-color-blue ((t (:foreground ,link :background ,link)))) | |
| `(vterm-color-magenta ((t (:foreground ,link-visited :background ,link-visited)))) | |
| `(vterm-color-cyan ((t (:foreground ,info :background ,info)))) | |
| `(vterm-color-white ((t (:foreground ,fg-main :background ,fg-main)))) | |
| ;; Eshell | |
| `(eshell-prompt ((t (:foreground ,complement-gold :weight bold)))) | |
| `(eshell-ls-archive ((t (:foreground ,link-visited)))) | |
| `(eshell-ls-backup ((t (:foreground ,fg-faint)))) | |
| `(eshell-ls-clutter ((t (:foreground ,fg-faint)))) | |
| `(eshell-ls-directory ((t (:foreground ,complement-gold :weight bold)))) | |
| `(eshell-ls-executable ((t (:foreground ,success)))) | |
| `(eshell-ls-missing ((t (:foreground ,error)))) | |
| `(eshell-ls-product ((t (:foreground ,fg-dim)))) | |
| `(eshell-ls-readonly ((t (:foreground ,fg-dim)))) | |
| `(eshell-ls-special ((t (:foreground ,complement-orange)))) | |
| `(eshell-ls-symlink ((t (:foreground ,link)))) | |
| `(eshell-ls-unreadable ((t (:foreground ,error)))) | |
| ;; Info mode | |
| `(info-title-1 ((t (:foreground ,complement-gold :weight bold :height ,h1)))) | |
| `(info-title-2 ((t (:foreground ,complement-amber :weight bold :height ,h2)))) | |
| `(info-title-3 ((t (:foreground ,complement-yellow :weight bold :height ,h3)))) | |
| `(info-title-4 ((t (:foreground ,link :weight bold :height ,h4)))) | |
| `(info-menu-header ((t (:foreground ,complement-gold :weight bold)))) | |
| `(info-header-node ((t (:foreground ,fg-main)))) | |
| `(info-header-xref ((t (:foreground ,link)))) | |
| `(info-node ((t (:foreground ,complement-gold :weight bold)))) | |
| `(info-xref ((t (:foreground ,link :underline t)))) | |
| `(info-xref-visited ((t (:foreground ,link-visited :underline t)))) | |
| ;; Message mode | |
| `(message-header-name ((t (:foreground ,fg-faint :weight bold)))) | |
| `(message-header-subject ((t (:foreground ,complement-gold :weight bold)))) | |
| `(message-header-to ((t (:foreground ,complement-amber)))) | |
| `(message-header-cc ((t (:foreground ,fg-dim)))) | |
| `(message-header-other ((t (:foreground ,fg-dim)))) | |
| `(message-separator ((t (:foreground ,fg-faint)))) | |
| `(message-cited-text ((t (:foreground ,fg-faint :slant italic)))) | |
| ;; Mu4e | |
| `(mu4e-header-highlight-face ((t (:background ,selection :extend t)))) | |
| `(mu4e-unread-face ((t (:foreground ,complement-gold :weight bold)))) | |
| `(mu4e-flagged-face ((t (:foreground ,complement-orange)))) | |
| `(mu4e-replied-face ((t (:foreground ,fg-dim)))) | |
| `(mu4e-draft-face ((t (:foreground ,warning)))) | |
| `(mu4e-header-key-face ((t (:foreground ,fg-faint :weight bold)))) | |
| `(mu4e-header-value-face ((t (:foreground ,fg-main)))) | |
| ;; Gnus | |
| `(gnus-header-from ((t (:foreground ,complement-amber)))) | |
| `(gnus-header-subject ((t (:foreground ,complement-gold :weight bold)))) | |
| `(gnus-header-name ((t (:foreground ,fg-faint :weight bold)))) | |
| `(gnus-header-content ((t (:foreground ,fg-dim)))) | |
| `(gnus-summary-normal-read ((t (:foreground ,fg-dim)))) | |
| `(gnus-summary-normal-unread ((t (:foreground ,fg-main :weight bold)))) | |
| `(gnus-summary-selected ((t (:background ,selection :extend t)))) | |
| ;; Elfeed | |
| `(elfeed-search-title-face ((t (:foreground ,fg-dim)))) | |
| `(elfeed-search-unread-title-face ((t (:foreground ,fg-main :weight bold)))) | |
| `(elfeed-search-feed-face ((t (:foreground ,complement-gold)))) | |
| `(elfeed-search-tag-face ((t (:foreground ,complement-amber)))) | |
| `(elfeed-search-date-face ((t (:foreground ,fg-faint)))) | |
| `(elfeed-log-info-level-face ((t (:foreground ,info)))) | |
| `(elfeed-log-warn-level-face ((t (:foreground ,warning)))) | |
| `(elfeed-log-error-level-face ((t (:foreground ,error)))) | |
| ;; Speedbar | |
| `(speedbar-button-face ((t (:foreground ,fg-dim)))) | |
| `(speedbar-directory-face ((t (:foreground ,complement-gold :weight bold)))) | |
| `(speedbar-file-face ((t (:foreground ,fg-main)))) | |
| `(speedbar-highlight-face ((t (:background ,highlight)))) | |
| `(speedbar-selected-face ((t (:foreground ,complement-gold :underline t)))) | |
| `(speedbar-tag-face ((t (:foreground ,complement-amber)))) | |
| ;; Tab bar | |
| `(tab-bar ((t (:background ,klein-bg-alt :foreground ,fg-dim)))) | |
| `(tab-bar-tab ((t (:background ,klein-bg :foreground ,complement-gold :weight bold)))) | |
| `(tab-bar-tab-inactive ((t (:background ,klein-bg-alt :foreground ,fg-faint)))) | |
| ;; Tab line | |
| `(tab-line ((t (:background ,klein-bg-alt)))) | |
| `(tab-line-tab ((t (:background ,klein-bg :foreground ,complement-gold)))) | |
| `(tab-line-tab-current ((t (:background ,klein-bg :foreground ,complement-gold :weight bold)))) | |
| `(tab-line-tab-inactive ((t (:background ,klein-bg-alt :foreground ,fg-faint)))) | |
| `(tab-line-highlight ((t (:background ,highlight)))) | |
| ;; Hydra | |
| `(hydra-face-red ((t (:foreground ,error :weight bold)))) | |
| `(hydra-face-blue ((t (:foreground ,link :weight bold)))) | |
| `(hydra-face-amaranth ((t (:foreground ,complement-orange :weight bold)))) | |
| `(hydra-face-pink ((t (:foreground ,link-visited :weight bold)))) | |
| `(hydra-face-teal ((t (:foreground ,info :weight bold)))) | |
| ;; Avy | |
| `(avy-lead-face ((t (:background ,complement-gold :foreground ,klein-deep :weight bold)))) | |
| `(avy-lead-face-0 ((t (:background ,complement-amber :foreground ,klein-deep :weight bold)))) | |
| `(avy-lead-face-1 ((t (:background ,complement-yellow :foreground ,klein-deep :weight bold)))) | |
| `(avy-lead-face-2 ((t (:background ,complement-orange :foreground ,klein-deep :weight bold)))) | |
| ;; Ace-window | |
| `(aw-leading-char-face ((t (:foreground ,complement-gold :weight bold :height 2.0)))) | |
| `(aw-background-face ((t (:foreground ,fg-faint)))) | |
| ;; Corfu | |
| `(corfu-default ((t (:background ,klein-bg-alt)))) | |
| `(corfu-current ((t (:background ,selection)))) | |
| `(corfu-bar ((t (:background ,complement-gold)))) | |
| `(corfu-border ((t (:background ,klein-bg-light)))) | |
| `(corfu-annotations ((t (:foreground ,fg-dim)))) | |
| ;; Marginalia | |
| `(marginalia-documentation ((t (:foreground ,fg-dim :slant italic)))) | |
| `(marginalia-file-priv-dir ((t (:foreground ,complement-gold)))) | |
| `(marginalia-file-priv-exec ((t (:foreground ,success)))) | |
| `(marginalia-file-priv-link ((t (:foreground ,link)))) | |
| `(marginalia-file-priv-read ((t (:foreground ,fg-main)))) | |
| `(marginalia-file-priv-write ((t (:foreground ,warning)))) | |
| `(marginalia-key ((t (:foreground ,complement-gold)))) | |
| `(marginalia-mode ((t (:foreground ,complement-amber)))) | |
| `(marginalia-number ((t (:foreground ,info)))) | |
| ;; Consult | |
| `(consult-file ((t (:foreground ,fg-main)))) | |
| `(consult-bookmark ((t (:foreground ,complement-gold)))) | |
| `(consult-buffer ((t (:foreground ,fg-main)))) | |
| `(consult-line-number ((t (:foreground ,fg-faint)))) | |
| `(consult-preview-line ((t (:background ,highlight)))) | |
| `(consult-preview-match ((t (:background ,match-bg :foreground ,fg-main)))) | |
| ;; Embark | |
| `(embark-keybinding ((t (:foreground ,complement-gold :weight bold)))))) | |
| ;;;###autoload | |
| (when load-file-name | |
| (add-to-list 'custom-theme-load-path | |
| (file-name-as-directory (file-name-directory load-file-name)))) | |
| ;;;###autoload | |
| (defun klein-blue-theme () | |
| "Load the Klein Blue theme." | |
| (interactive) | |
| (load-theme 'klein-blue t)) | |
| (provide-theme 'klein-blue) | |
| ;;; klein-blue-theme.el ends here |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment