Skip to content

Instantly share code, notes, and snippets.

@mefuru
Created January 21, 2026 07:35
Show Gist options
  • Select an option

  • Save mefuru/92aa4f5441f5b1786f5ec13f23dd60db to your computer and use it in GitHub Desktop.

Select an option

Save mefuru/92aa4f5441f5b1786f5ec13f23dd60db to your computer and use it in GitHub Desktop.
Yven Klein Blue Emacs Theme
;;; 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