├── faff-theme.png ├── README.md └── faff-theme.el /faff-theme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WJCFerguson/emacs-faff-theme/HEAD/faff-theme.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Emacs Faff Theme 2 | 3 | A light theme intended to clear but calming and unobtrusive. The cornsilk3 4 | background color choice was with high-end off-white notepaper in mind. Being at 5 | the darker end of light backgrounds, having default text at full black means a 6 | reasonable contrast balance between relaxation and clarity. 7 | 8 | **Please - suggestions and bug reports are gratefully received**. If you find 9 | something odd or unclear please submit issues or make pull requests. Default 10 | shades of lighter colors in particular have needed adjustment - e.g. I yellows 11 | in the terminal. `C-u C-x =` tells you what faces are under the cursor. 12 | 13 | Mostly it uses standard named colors chosen at my whim from the X11 palette any 14 | time the defaults didn't look good to me. If something does not look good it 15 | may be just something I haven't used - please tell me about it. 16 | 17 | The font in the screenshot is the beautiful Ubuntu Mono. 18 | 19 | ![Screenshot](https://github.com/WJCFerguson/emacs-faff-theme/raw/master/faff-theme.png) 20 | 21 | -------------------------------------------------------------------------------- /faff-theme.el: -------------------------------------------------------------------------------- 1 | ;;; faff-theme.el --- Light Emacs color theme on cornsilk3 background 2 | 3 | ;; Copyright (C) 2003-2014 Free Software Foundation, Inc. 4 | 5 | ;; Author: James Ferguson <(concat "wjcferguson" at-sign "gmail.com")> 6 | ;; URL: https://github.com/WJCFerguson/emacs-faff-theme 7 | ;; Version: 3.8 8 | ;; Keywords: color theme 9 | 10 | ;; This file is not part of GNU Emacs. 11 | 12 | ;; GNU Emacs is free software: you can redistribute it and/or modify 13 | ;; it under the terms of the GNU General Public License as published by 14 | ;; the Free Software Foundation, either version 3 of the License, or 15 | ;; (at your option) any later version. 16 | 17 | ;; GNU Emacs is distributed in the hope that it will be useful, 18 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | ;; GNU General Public License for more details. 21 | 22 | ;; You should have received a copy of the GNU General Public License 23 | ;; along with GNU Emacs. If not, see . 24 | 25 | ;;; Commentary: 26 | ;; 27 | ;; The default Emacs theme with an cornsilk3 background, with tweaks applied. Used 28 | ;; mostly for coding and magit, with some customizations for org, powerline, 29 | ;; hl-line 30 | ;; 31 | ;; This file created using customize-create-theme, rather than hand-rolled. 32 | ;; Comments and change suggestions welcome 33 | ;; 34 | ;; To use it, put the following in your Emacs configuration file: 35 | ;; 36 | ;; (load-theme 'faff t) 37 | ;; 38 | ;; Requirements: Emacs 24. 39 | 40 | ;;; Code: 41 | 42 | (deftheme faff 43 | "Emacs default with cornsilk3 background and a few tweaks") 44 | 45 | (custom-theme-set-faces 46 | 'faff 47 | '(default ((t (:foreground "black" :background "cornsilk3")))) 48 | '(ansi-color-blue ((t (:background "blue4" :foreground "blue4")))) 49 | '(ansi-color-bright-blue ((t (:background "blue2" :foreground "blue2")))) 50 | '(ansi-color-bright-cyan ((t (:background "cyan1" :foreground "cyan1")))) 51 | '(ansi-color-bright-green ((t (:background "green2" :foreground "green1")))) 52 | '(ansi-color-bright-yellow ((t (:background "yellow1" :foreground "yellow1")))) 53 | '(ansi-color-cyan ((t (:background "cyan4" :foreground "cyan4")))) 54 | '(ansi-color-fast-blink ((t (:box (1 . -1))))) 55 | '(ansi-color-green ((t (:background "green4" :foreground "green4")))) 56 | '(ansi-color-magenta ((t (:background "magenta4" :foreground "magenta4")))) 57 | '(ansi-color-slow-blink ((t (:box (1 . -1))))) 58 | '(ansi-color-yellow ((t (:background "yellow4" :foreground "yellow4")))) 59 | '(bookmark-face ((t (:background "cornsilk3" :foreground "DarkOrange1")))) 60 | '(breakpoint-disabled ((t (:foreground "grey40")))) 61 | '(eglot-highlight-symbol-face ((t (:background "cornsilk2" :inherit bold)))) 62 | '(eshell-ls-archive ((t (:foreground "Orchid4" :weight bold)))) 63 | '(eshell-ls-backup ((t (:foreground "OrangeRed4")))) 64 | '(eshell-ls-clutter ((t (:foreground "OrangeRed4" :weight bold)))) 65 | '(eshell-ls-executable ((t (:foreground "DarkGreen" :weight bold)))) 66 | '(eshell-ls-product ((t (:foreground "OrangeRed4")))) 67 | '(eshell-ls-special ((t (:foreground "Magenta4" :weight bold)))) 68 | '(eshell-prompt ((t (:background "cornsilk2" :weight bold)))) 69 | '(match ((t (:background "yellow2")))) 70 | '(cursor ((t (:background "red3")))) 71 | '(variable-pitch ((t (:family "Sans Serif")))) 72 | '(escape-glyph ((((background dark)) (:foreground "cyan")) (((type pc)) (:foreground "magenta")) (t (:foreground "brown")))) 73 | '(minibuffer-prompt ((((background dark)) (:foreground "cyan")) (((type pc)) (:foreground "magenta")) (t (:foreground "medium blue")))) 74 | '(highlight ((t (:background "white")))) 75 | '(highlight-indentation-face ((t (:background "#d4ceb7")))) 76 | '(highlight-symbol-face ((t (:background "cornsilk2")))) 77 | '(shadow ((t (:foreground "cornsilk4")))) 78 | '(secondary-selection ((((class color) (min-colors 88) (background light)) (:background "yellow1")) (((class color) (min-colors 88) (background dark)) (:background "SkyBlue4")) (((class color) (min-colors 16) (background light)) (:background "yellow")) (((class color) (min-colors 16) (background dark)) (:background "SkyBlue4")) (((class color) (min-colors 8)) (:foreground "black" :background "cyan")) (t (:inverse-video t)))) 79 | '(trailing-whitespace ((t (:background "cornsilk2")))) 80 | '(corfu-border ((t (:background "cornsilk4")))) 81 | '(corfu-current ((t (:background "cornsilk2")))) 82 | '(corfu-default ((t (:background "cornsilk3")))) 83 | '(corfu-popupinfo ((t (:inherit corfu-default :height 0.9)))) 84 | '(emms-playlist-selected-face ((t (:background "cornsilk2" :foreground "black")))) 85 | '(emms-playlist-track-face ((t (:foreground "red4")))) 86 | '(erc-notice-face ((t (:foreground "cornsilk4")))) 87 | '(erc-timestamp-face ((t (:foreground "white" :weight bold)))) 88 | '(font-lock-comment-face ((t (:foreground "firebrick4")))) 89 | '(font-lock-constant-face ((t (:foreground "deepskyblue4")))) 90 | '(font-lock-doc-face ((t (:inherit font-lock-comment-face)))) 91 | '(font-lock-function-name-face ((t (:foreground "midnightblue")))) 92 | '(font-lock-keyword-face ((t (:weight bold)))) 93 | '(font-lock-negation-char-face ((t (:background "cornsilk2")))) 94 | '(font-lock-property-use-face ((t nil))) 95 | '(font-lock-regexp-grouping-backslash ((t (:inherit (bold))))) 96 | '(font-lock-regexp-grouping-construct ((t (:inherit (bold))))) 97 | '(font-lock-string-face ((t (:foreground "darkgreen")))) 98 | '(font-lock-type-face ((t (:foreground "#004000" :weight bold)))) 99 | '(font-lock-variable-name-face ((t (:foreground "#502010")))) 100 | '(font-lock-variable-use-face ((t nil))) 101 | '(button ((t (:inherit (link))))) 102 | '(link ((t (:foreground "RoyalBlue4" :underline t)))) 103 | '(ein:cell-input-area ((t (:background "cornsilk2"))) t) 104 | '(fill-column-indicator ((t (:inherit shadow :foreground "#d5d0b8")))) 105 | '(fringe ((t (:inherit default :background "cornsilk3")))) 106 | '(header-line ((t (:background "#ddd8bd" :box (:line-width (1 . 1) :color "#ddd8bd" :style released-button))))) 107 | '(js2-external-variable ((t (:foreground "orange3")))) 108 | '(js2-function-call ((t (:inherit font-lock-function-name-face)))) 109 | '(js2-jsdoc-type ((t (:inherit font-lock-type-face)))) 110 | '(js2-jsdoc-value ((t (:inherit font-lock-variable-name-face)))) '(dired-subtree-depth-1-face ((t (:background "cornsilk2")))) 111 | '(js2-object-property ((t (:inherit font-lock-variable-name-face)))) 112 | '(tooltip ((t (:inherit nil :background "lightyellow" :foreground "black")))) 113 | '(mode-line ((t (:box nil :family "sans serif" :background "#aca895")))) 114 | '(mode-line-active ((t (:inherit mode-line :background "gold")))) 115 | '(mode-line-buffer-id ((t (:weight bold)))) 116 | '(mode-line-emphasis ((t (:weight bold)))) 117 | '(mode-line-inactive ((t (:inherit mode-line)))) 118 | '(isearch ((((class color) (min-colors 88) (background light)) (:foreground "lightskyblue1" :background "magenta3")) (((class color) (min-colors 88) (background dark)) (:foreground "brown4" :background "palevioletred2")) (((class color) (min-colors 16)) (:foreground "cyan1" :background "magenta4")) (((class color) (min-colors 8)) (:foreground "cyan1" :background "magenta4")) (t (:inverse-video t)))) 119 | '(isearch-fail ((((class color) (min-colors 88) (background light)) (:background "RosyBrown1")) (((class color) (min-colors 88) (background dark)) (:background "red4")) (((class color) (min-colors 16)) (:background "red")) (((class color) (min-colors 8)) (:background "red")) (((class color grayscale)) (:foreground "grey")) (t (:inverse-video t)))) 120 | '(lazy-highlight ((((class color) (min-colors 88) (background light)) (:background "paleturquoise")) (((class color) (min-colors 88) (background dark)) (:background "paleturquoise4")) (((class color) (min-colors 16)) (:background "turquoise3")) (((class color) (min-colors 8)) (:background "turquoise3")) (t (:underline (:color foreground-color :style line))))) 121 | '(match ((((class color) (min-colors 88) (background light)) (:background "yellow1")) (((class color) (min-colors 88) (background dark)) (:background "RoyalBlue3")) (((class color) (min-colors 8) (background light)) (:foreground "black" :background "yellow")) (((class color) (min-colors 8) (background dark)) (:foreground "white" :background "blue")) (((type tty) (class mono)) (:inverse-video t)) (t (:background "gray")))) 122 | '(next-error ((t (:inherit (region))))) 123 | '(query-replace ((t (:inherit (isearch))))) 124 | '(calendar-today ((t (:background "yellow1" :underline t)))) 125 | '(custom-button ((t (:background "cornsilk2" :foreground "black" :box (:line-width (2 . 2) :style released-button))))) 126 | '(custom-button-mouse ((t (:background "cornsilk1" :foreground "black" :box (:line-width (2 . 2) :style released-button))))) 127 | '(custom-button-pressed ((t (:background "cornsilk2" :foreground "black" :box (:line-width (2 . 2) :style pressed-button))))) 128 | '(diff-added ((t (:inherit diff-changed :foreground "green3")))) 129 | '(diff-file-header ((t (:background "grey80" :box (:line-width 2 :color "grey80") :weight bold)))) 130 | '(diff-header ((t (:background "grey80" :box (:line-width 2 :color "grey80"))))) 131 | '(diff-hunk-header ((t (:inherit diff-header :box (:line-width 2 :color "grey80"))))) 132 | '(diff-removed ((t (:foreground "red")))) 133 | '(diff-refine-removed ((t (:inherit diff-refine-changed :background "#ffbbbb")))) 134 | '(dired-async-mode-message ((t (:foreground "red4")))) 135 | '(dired-directory ((t (:inherit font-lock-keyword-face)))) 136 | '(dired-filetype-compress ((t (:foreground "Orchid")))) 137 | '(dired-filetype-execute ((t (:foreground "green4" :weight bold)))) 138 | '(dired-filetype-omit ((t (:foreground "cornsilk4")))) 139 | '(dired-filetype-plain ((t (:foreground "SeaGreen")))) 140 | '(dired-filetype-source ((t (:foreground "red4" :weight normal)))) 141 | '(dired-filetype-video ((t (:foreground "brown")))) 142 | '(flymake-note ((t (:underline (:color "green yellow" :style wave))))) 143 | '(flymake-warning ((t (:background "gray")))) 144 | '(dired-filetype-js ((t (:foreground "goldenrod4")))) 145 | '(dired-filetype-program ((t (:foreground "green4")))) 146 | '(dired-subtree-depth-2-face ((t (:background "cornsilk1")))) 147 | '(dired-subtree-depth-3-face ((t (:background "white")))) 148 | '(dired-subtree-depth-4-face ((t (:background "cornsilk2")))) 149 | '(dired-subtree-depth-5-face ((t (:background "cornsilk1")))) 150 | '(dired-subtree-depth-6-face ((t (:background "white")))) '(flymake-warnline ((t (:background "LightBlue3")))) 151 | '(elisp-shorthand-font-lock-face ((t (:inherit font-lock-keyword-face :foreground "cyan4")))) 152 | '(error ((t (:foreground "red3" :weight bold)))) 153 | '(go-test--ok-face ((t (:foreground "green4")))) 154 | '(go-test--standard-face ((t (:weight bold)))) 155 | '(hi-green-b ((t (:foreground "green4" :weight bold)))) 156 | '(hl-line ((t (:extend t :background "#ddd8bd")))) 157 | '(hl-line-face ((t (:extend t :background "#ddd8bd")))) 158 | '(jabber-activity-face ((t (:background "green1")))) 159 | '(jabber-chat-error ((t (:background "pink")))) 160 | '(jabber-chat-prompt-system ((t (:foreground "green3" :weight bold)))) 161 | '(jabber-chat-text-local ((t (:foreground "red4")))) 162 | '(jabber-title-large ((t (:weight bold :height 2.0 :width expanded)))) 163 | '(jabber-title-medium ((t (:background "#ffb" :box (:line-width 2 :color "grey75" :style released-button) :weight bold :height 1.2 :width expanded)))) 164 | '(kubernetes-namespace ((t (:foreground "Goldenrod4")))) 165 | '(lsp-face-highlight-read ((t (:background "cornsilk2")))) 166 | '(lsp-face-highlight-textual ((t (:background "cornsilk2")))) 167 | '(lsp-face-highlight-write ((t (:background "palegreen1")))) 168 | '(lsp-headerline-breadcrumb-symbols-face ((t (:inherit font-lock-doc-face)))) 169 | '(lsp-ui-doc-background ((t (:background "cornsilk2")))) 170 | '(lsp-ui-sideline-current-symbol ((t (:inherit lsp-ui-sideline-symbol :box (:line-width 1 :color "cornsilk4") :weight bold)))) 171 | '(lsp-ui-sideline-symbol ((t (:foreground "cornsilk2")))) 172 | '(lsp-ui-sideline-symbol-info ((t (:foreground "gray60" :slant italic)))) 173 | '(helm-M-x-key ((t (:foreground "orange4" :underline t)))) 174 | '(helm-ff-executable ((t (:foreground "darkgreen" :weight bold)))) 175 | '(helm-ff-symlink ((t (:foreground "orange4")))) 176 | '(helm-grep-lineno ((t (:foreground "orange4")))) 177 | '(helm-source-header ((t (:background "cornsilk2" :foreground "black" :box (:line-width 1 :color "grey75" :style pressed-button) :weight normal :height 1.0 :family "Sans Serif")))) 178 | '(hydra-face-pink ((t (:foreground "deeppink" :weight bold)))) 179 | '(Info-quoted ((t (:inherit fixed-pitch)))) 180 | '(magit-branch ((t (:inherit magit-header :background "yellow" :box (:line-width 1 :color "grey75" :style released-button))))) 181 | '(magit-branch-current ((t (:inherit magit-branch-local :background "green1" :weight bold)))) 182 | '(magit-branch-local ((t (:background "yellow" :box (:line-width 1 :color "black"))))) 183 | '(magit-branch-remote ((t (:background "cornsilk2" :foreground "DarkOliveGreen4" :box (:line-width 1 :color "cornsilk4"))))) 184 | '(magit-diff-add ((t (:inherit diff-added)))) 185 | '(magit-diff-del ((t (:inherit diff-removed)))) 186 | '(magit-diff-none ((t (:inherit diff-context)))) 187 | '(magit-header ((t (:inherit header-line :background "white")))) 188 | '(magit-item-highlight ((t (:inherit highlight)))) 189 | '(magit-reflog-commit ((t (:foreground "green4")))) 190 | '(magit-reflog-rebase ((t (:foreground "magenta3")))) 191 | '(magit-reflog-reset ((t (:foreground "red3")))) 192 | '(magit-refname ((t (:foreground "grey30" :box (:line-width 2 :color "grey75"))))) 193 | '(magit-section-heading ((t (:background "cornsilk2" :box (:line-width 1 :color "grey75" :style released-button) :weight bold)))) 194 | '(magit-section-title ((t (:inherit magit-header :box (:line-width 1 :color "grey75" :style released-button))))) 195 | '(magit-section-highlight ((t (:extend t :background "#ddd8bd")))) 196 | '(magit-signature-good ((t (:foreground "darkgreen")))) 197 | '(magit-tag ((t (:background "cornsilk2" :foreground "Goldenrod4" :box (:line-width 1 :color "gray25"))))) 198 | '(markdown-code-face ((t (:inherit default :background "cornsilk2")))) 199 | '(menu ((((type x-toolkit)) (:background "gray92")))) 200 | '(mmm-default-submode-face ((t (:background "#ddd8bd")))) 201 | '(org-agenda-date ((t (:inherit org-agenda-structure :background "cornsilk1" :box (:line-width 1 :color "grey75" :style pressed-button) :height 1.0)))) 202 | '(org-agenda-date-today ((t (:inherit org-agenda-date :slant italic :weight bold :height 1.0)))) 203 | '(org-agenda-dimmed-todo-face ((t (:background "yellow3" :foreground "black")))) 204 | '(org-agenda-done ((((class color) (min-colors 16) (background light)) (:foreground "#9b9")))) 205 | '(org-agenda-restriction-lock ((t (:background "cornsilk1")))) 206 | '(org-agenda-structure ((t (:background "cornsilk1" :foreground "Blue3" :box (:line-width 1 :color "grey75" :style pressed-button))))) 207 | '(org-block ((t (:inherit org-verbatim :extend t)))) 208 | '(org-column ((t (:background "cornsilk1" :strike-through nil :underline nil :slant normal :weight normal)))) 209 | '(org-date ((t (:color "grey75" :style released-button)))) 210 | '(org-hide ((((background light)) (:foreground "cornsilk2")))) 211 | '(org-meta-line ((t (:inherit fixed-pitch :background "cornsilk3" :foreground "cornsilk4")))) 212 | '(org-table ((t (:inherit org-block :foreground "Blue1")))) 213 | '(org-verbatim ((t (:inherit shadow :extend t :background "cornsilk2")))) 214 | '(outline-1 ((t (:weight bold)))) 215 | '(outline-2 ((t (:foreground "dark red" :weight bold)))) 216 | '(outline-3 ((t (:foreground "purple4" :weight normal)))) 217 | '(outline-4 ((t (:inherit font-lock-variable-name-face)))) 218 | '(powerline-active1 ((t (:inherit mode-line :background "gold4")))) 219 | '(powerline-active2 ((t (:inherit mode-line :background "gold3")))) 220 | '(powerline-inactive1 ((t (:inherit mode-line-inactive :background "grey11" :foreground "grey45")))) 221 | '(powerline-inactive2 ((t (:inherit mode-line-inactive :background "grey20" :foreground "grey55")))) 222 | '(region ((t (:extend t :background "gold2")))) 223 | '(rjsx-tag ((t (:inherit font-lock-keyword-face)))) 224 | '(rjsx-tag-bracket-face ((t (:inherit font-lock-keyword-face)))) 225 | '(rst-level-1 ((t (:background "grey85" :weight bold)))) 226 | '(rst-literal ((t (:inherit shadow :extend t :background "cornsilk2")))) 227 | '(separator-line ((t (:background "cornsilk4" :height 0.1)))) 228 | '(scroll-bar ((t (:background "#aca895" :foreground "cornsilk3")))) 229 | '(sh-heredoc ((t (:foreground "tan4")))) 230 | '(sh-quoted-exec ((t (:foreground "magenta4")))) 231 | '(shadow ((t (:foreground "cornsilk4")))) 232 | '(success ((t (:foreground "darkgreen" :weight bold)))) 233 | '(symbol-overlay-default-face ((t (:background "cornsilk1")))) 234 | '(symbol-overlay-face-1 ((t (:background "yellow" :foreground "black")))) 235 | '(symbol-overlay-face-3 ((t (:background "light blue" :foreground "black")))) 236 | '(symbol-overlay-face-4 ((t (:background "orchid1" :foreground "black")))) 237 | '(symbol-overlay-face-5 ((t (:background "red1" :foreground "black")))) 238 | '(tab-bar ((t (:background "#aca895" :height 0.9)))) 239 | '(tab-bar-tab-inactive ((t (:inherit (variable-pitch tab-tar))))) 240 | '(tab-bar-tab ((t (:inherit (tab-bar-tab-inactive) :background "cornsilk3")))) 241 | '(term-color-green ((t (:background "green4" :foreground "green4")))) 242 | '(term-color-cyan ((t (:background "cyan4" :foreground "cyan4")))) 243 | '(term-color-magenta ((t (:background "magenta4" :foreground "magenta4")))) 244 | '(term-color-yellow ((t (:background "yellow" :foreground "yellow")))) 245 | '(tool-bar ((default (:foreground "black" :box (:line-width 1 :style released-button))) (((type x w32 mac) (class color)) (:background "grey92")))) 246 | '(treemacs-directory-collapsed-face ((t (:inherit treemacs-directory-face :foreground "gray30")))) 247 | '(treemacs-directory-face ((t (:weight bold)))) 248 | '(treemacs-tags-face ((t (:inherit font-lock-function-name-face)))) 249 | '(vertico-current ((t (:extend t :background "cornsilk2" :box (:line-width (1 . 1) :color "cornsilk4" :style flat-button))))) 250 | '(web-mode-doctype-face ((t (:foreground "Grey35")))) 251 | '(web-mode-html-attr-name-face ((t (:foreground "gray10")))) 252 | '(web-mode-html-tag-face ((t (:weight bold)))) 253 | '(warning ((t (:foreground "DarkOrange3" :weight bold)))) 254 | '(whitespace-hspace ((t (:background "LemonChiffon1")))) 255 | '(whitespace-line ((t (:background "yellow2")))) 256 | '(whitespace-newline ((t (:background "cornsilk2" :foreground "cornsilk4" :weight normal)))) 257 | '(whitespace-space ((t (:foreground "cornsilk2")))) 258 | '(widget-field ((t (:extend t :background "cornsilk2" :box (:line-width (1 . -1) :color "gray80"))))) 259 | '(window-divider ((t (:foreground "cornsilk3")))) 260 | '(window-divider-first-pixel ((t (:foreground "cornsilk2")))) 261 | '(window-divider-last-pixel ((t (:foreground "cornsilk4"))))) 262 | 263 | (custom-theme-set-variables 264 | 'faff 265 | ;; lsp-diagnostics-attributes: the default for `unnecessary', is gray, which is 266 | ;; nearly invisible on cornsilk3. 267 | '(lsp-diagnostics-attributes 268 | '((unnecessary :foreground "cornsilk4") 269 | (deprecated :strike-through t)))) 270 | 271 | ;;;###autoload 272 | (when load-file-name 273 | (add-to-list 'custom-theme-load-path 274 | (file-name-as-directory (file-name-directory load-file-name)))) 275 | 276 | (provide-theme 'faff) 277 | ;;; faff-theme.el ends here 278 | --------------------------------------------------------------------------------