├── README.md ├── eink-theme.el └── images └── example.png /README.md: -------------------------------------------------------------------------------- 1 | # Eink color theme for Emacs 2 | 3 | Low distraction, minimalistic color theme for Emacs emulating reading 4 | on E Ink devices. 5 | 6 | ## Example 7 | 8 | ![Example](https://raw.githubusercontent.com/maio/eink-emacs/master/images/example.png) 9 | 10 | ## Why? 11 | 12 | Back in a day, I used to play a lot with color themes. One day I 13 | pair-programmed with coleague of mine and I noticed that he didn't use 14 | syntax highlighting at all. It's been quite a strange experince, but 15 | after a while I decided to give it a try. 16 | 17 | Well, long story short, I started to really like it and there was no 18 | way going back. Now I find most of the color themes quite distracting. 19 | 20 | Many of these color themes are using shining colors for stuff I don't 21 | care about (e.g. builtin functions), and they try to hide things I 22 | want to see (e.g. useful comments). 23 | 24 | ## Other packages which I use along with this theme 25 | 26 | - [idle-highlight](https://github.com/nonsequitur/idle-highlight-mode) 27 | - [paren-face](https://github.com/tarsius/paren-face) 28 | -------------------------------------------------------------------------------- /eink-theme.el: -------------------------------------------------------------------------------- 1 | ;;; eink-theme.el --- E Ink color theme 2 | 3 | ;; Copyright (C) 2013-2016 Marian Schubert 4 | 5 | ;; Author: Marian Schubert 6 | ;; URL: http://github.com/maio/eink-emacs 7 | ;; Version: 1.0 8 | 9 | ;; This program is free software; you can redistribute it and/or modify 10 | ;; it under the terms of the GNU General Public License as published by 11 | ;; the Free Software Foundation, either version 3 of the License, or 12 | ;; (at your option) any later version. 13 | 14 | ;; This program is distributed in the hope that it will be useful, 15 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | ;; GNU General Public License for more details. 18 | 19 | ;; You should have received a copy of the GNU General Public License 20 | ;; along with this program. If not, see . 21 | 22 | ;;; Commentary: 23 | 24 | ;; Low distraction, minimalistic color theme emulating reading 25 | ;; on E Ink devices. 26 | 27 | ;;; Credits: 28 | 29 | ;; Inspired by: 30 | ;; 31 | ;; https://bitbucket.org/kisom/eink.vim 32 | ;; https://github.com/dmand/eink.el 33 | ;; http://www.daveliepmann.stfi.re/tufte-css/?sf=wklwy 34 | 35 | ;;; Code: 36 | 37 | (deftheme eink 38 | "Theme emulating reading on an E Ink device.") 39 | 40 | (let ((fg "#111111") 41 | (fg-table "#222291") 42 | (bg "#fffff8") 43 | (bg-light "#ddddd8") 44 | (fg-light "#ddddd8") 45 | (bg-highlight "#FFF1AA") 46 | (bg-highlight-2 "LightCyan") 47 | (bg-highlight-3 "LightGreen")) 48 | 49 | (custom-theme-set-faces 50 | 'eink 51 | 52 | ;; generic stuff 53 | `(default ((t (:background ,bg :foreground ,fg)))) 54 | `(button ((t (:foreground ,fg :underline t)))) 55 | `(cursor ((t (:background ,fg :foreground "white smoke")))) 56 | `(custom-variable-tag ((t (:foreground ,fg :weight bold)))) 57 | `(default-italic ((t (:italic t)))) 58 | `(font-latex-bold-face ((t (:foreground ,fg)))) 59 | `(font-latex-italic-face ((t (:foreground ,fg :slant italic)))) 60 | `(font-latex-match-reference-keywords ((t (:foreground ,fg)))) 61 | `(font-latex-match-variable-keywords ((t (:foreground ,fg)))) 62 | `(font-latex-string-face ((t (:foreground "#a9a9a9")))) 63 | `(font-lock-builtin-face ((t (:background ,bg :foreground ,fg)))) 64 | `(font-lock-comment-delimiter-face ((t (:foreground "#808080")))) 65 | `(font-lock-comment-face ((t (:foreground ,fg :weight bold)))) 66 | `(font-lock-constant-face ((t (:foreground ,fg)))) 67 | `(font-lock-doc-face ((t (:foreground ,fg :weight semi-bold)))) 68 | `(font-lock-function-name-face ((t (:foreground ,fg)))) 69 | `(font-lock-keyword-face ((t (:foreground ,fg)))) 70 | `(font-lock-preprocessor-face ((t (:foreground ,fg)))) 71 | `(font-lock-reference-face ((t (:foreground ,fg)))) 72 | `(font-lock-string-face ((t (:foreground ,fg)))) 73 | `(font-lock-type-face ((t (:foreground ,fg)))) 74 | `(font-lock-variable-name-face ((t (:foreground ,fg :underline nil)))) 75 | `(font-lock-warning-face ((t (:foreground ,fg :weight bold)))) 76 | `(fringe ((t (:background ,bg :foreground ,bg)))) 77 | `(gnus-header-content ((t (:foreground ,fg)))) 78 | `(gnus-header-from ((t (:foreground ,fg)))) 79 | `(gnus-header-name ((t (:foreground ,fg)))) 80 | `(gnus-header-subject ((t (:foreground ,fg)))) 81 | `(highlight ((t nil))) 82 | `(ido-first-match ((t (:foreground ,fg)))) 83 | `(ido-only-match ((t (:foreground ,fg)))) 84 | `(ido-subdir ((t (:foreground ,fg)))) 85 | `(isearch ((t (:background "#eeeee8" :foreground ,fg)))) 86 | `(link ((t (:foreground ,fg)))) 87 | `(minibuffer-prompt ((t (:foreground ,fg :weight bold)))) 88 | `(mode-line ((t (:background ,bg-light :foreground ,fg :height 0.8)))) 89 | `(mode-line-buffer ((t (:foreground ,fg :weight bold)))) 90 | `(mode-line-inactive ((t (:background ,bg-light :foreground ,fg :height 0.8)))) 91 | `(mode-line-minor-mode ((t (:weight ultra-light)))) 92 | `(modeline ((t (:background ,bg :foreground ,fg :height 0.8)))) 93 | `(region ((t (:background "#eeeee8" :foreground ,fg)))) 94 | `(slime-repl-inputed-output-face ((t (:foreground ,fg)))) 95 | `(whitespace-line ((t (:background ,bg-highlight-2 :foreground ,fg)))) 96 | 97 | ;; org 98 | `(org-agenda-date ((t (:foreground ,fg :height 1.2)))) 99 | `(org-agenda-date-today ((t (:foreground ,fg :weight bold :height 1.4)))) 100 | `(org-agenda-date-weekend ((t (:foreground ,fg :weight normal)))) 101 | `(org-agenda-structure ((t (:foreground ,fg :weight bold)))) 102 | `(org-block ((t (:foreground ,fg)))) 103 | `(org-block-begin-line ((t (:foreground ,fg-light :height 0.8)))) 104 | `(org-block-end-line ((t (:foreground ,fg-light :height 0.8)))) 105 | `(org-verbatim ((t (:foreground ,fg :weight semi-bold)))) 106 | `(org-date ((t (:foreground ,fg) :underline))) 107 | `(org-done ((t (:foreground ,fg-light)))) 108 | `(org-hide ((t (:foreground ,bg)))) 109 | ;; use :overline to give headings more top margin 110 | `(org-level-1 ((t (:foreground ,fg :weight semi-bold :height 1.3)))) 111 | `(org-level-2 ((t (:foreground ,fg :weight semi-bold :height 1.1 :overline ,bg)))) 112 | `(org-level-3 ((t (:foreground ,fg :weight semi-bold :height 1.1 :overline ,bg)))) 113 | `(org-level-4 ((t (:foreground ,fg :weight semi-bold :height 1.1 :overline ,bg)))) 114 | `(org-level-5 ((t (:foreground ,fg :weight semi-bold :height 1.1 :overline ,bg)))) 115 | `(org-level-6 ((t (:foreground ,fg :weight semi-bold :height 1.1 :overline ,bg)))) 116 | `(org-link ((t (:foreground ,fg :underline t)))) 117 | `(org-quote ((t (:foreground ,fg :slant italic :inherit org-block)))) 118 | `(org-scheduled ((t (:foreground ,fg)))) 119 | `(org-sexp-date ((t (:foreground ,fg)))) 120 | `(org-special-keyword ((t (:foreground ,fg)))) 121 | `(org-todo ((t (:foreground ,fg)))) 122 | `(org-verse ((t (:inherit org-block :slant italic)))) 123 | `(org-table ((t (:foreground ,fg-table)))) 124 | 125 | ;; powerline 126 | `(powerline-active1 ((t (:background "grey22" :foreground ,bg :inherit mode-line)))) 127 | `(powerline-active2 ((t (:background "grey40" :foreground ,bg :inherit mode-line)))) 128 | 129 | ;; magit 130 | `(magit-header ((t (:weight semi-bold)))) 131 | `(magit-item-mark ((t (:background ,bg-highlight)))) 132 | `(magit-item-highlight ((t (:weight bold)))) 133 | `(magit-section-heading ((t (:weight semi-bold :height 1.2)))) 134 | `(magit-section-highlight ((t (:weight semi-bold)))) 135 | `(magit-diff-context-highlight ((t (:foreground ,fg)))) 136 | `(magit-branch-local ((t (:weight bold)))) 137 | `(magit-branch-remote ((t (:weight bold)))) 138 | 139 | ;; diff 140 | `(diff-added ((t (:background "#e9ffe9")))) 141 | `(diff-removed ((t (:background "#ffecec")))) 142 | `(diff-refine-added ((t (:background "#a4f4a3")))) 143 | `(diff-refine-removed ((t (:background "#f9cbca")))) 144 | `(magit-diff-added-highlight ((t (:weight demibold :background "#e9ffe9")))) 145 | `(magit-diff-added ((t (:background "#e9ffe9")))) 146 | `(magit-diff-removed-highlight ((t (:weight demibold :background "#ffecec")))) 147 | `(magit-diff-removed ((t (:background "#ffecec")))) 148 | 149 | ;; git-timemachine 150 | `(git-timemachine-minibuffer-author-face ((t (:inherit default)))) 151 | `(git-timemachine-minibuffer-detail-face ((t (:weight bold)))) 152 | 153 | ;; compile 154 | `(compilation-error ((t (:inherit error)))) 155 | 156 | ;; flycheck 157 | `(flycheck-error ((t (:inherit error)))) 158 | `(flycheck-warning ((t (:inherit warning)))) 159 | 160 | ;; dired 161 | `(dired-directory ((t (:weight bold)))) 162 | `(dired-subtree-depth-1-face ((t (:inherit default)))) 163 | `(dired-subtree-depth-2-face ((t (:inherit default)))) 164 | `(dired-subtree-depth-3-face ((t (:inherit default)))) 165 | `(dired-subtree-depth-4-face ((t (:inherit default)))) 166 | 167 | ;; helm 168 | `(helm-source-header ((t (:foreground ,fg :background "grey90" :weight bold)))) 169 | `(helm-header ((t (:foreground ,fg)))) 170 | `(helm-selection-line ((t (:inherit region :weight bold)))) 171 | `(helm-selection ((t (:background ,bg-highlight)))) 172 | `(helm-ff-directory ((t (:foreground ,fg :weight bold)))) 173 | `(helm-ff-dotted-directory ((t (:foreground ,fg :weight bold)))) 174 | `(helm-ff-symlink ((t (:foreground ,fg :slant italic)))) 175 | `(helm-ff-executable ((t (:foreground ,fg)))) 176 | 177 | ;; iedit 178 | `(iedit-occurrence ((t (:background ,bg-highlight-3 :foreground ,fg)))) 179 | 180 | ;; company 181 | `(company-echo-common ((t (:foreground ,fg)))) 182 | `(company-tooltip-selection ((t (:background ,bg-highlight)))) 183 | 184 | ;; parens - parenface 185 | '(parenface-paren-face ((t (:foreground "gray70")))) 186 | '(parenface-curly-face ((t (:foreground "gray70")))) 187 | '(parenface-bracket-face ((t (:foreground "gray70")))) 188 | 189 | ;; parens - paren-face 190 | '(parenthesis ((t (:foreground "gray70")))) 191 | 192 | ;; parens - other 193 | `(sp-show-pair-match-face ((t (:foreground "black" :weight bold)))) 194 | `(sp-show-pair-mismatch-face ((t (:background "red" :foreground "black" :weight bold)))) 195 | `(show-paren-match ((t (:foreground "black" :weight bold)))) 196 | `(show-paren-mismatch ((t (:background "red" :foreground "black" :weight bold)))) 197 | 198 | ;; js2 199 | `(js2-function-param ((t (:foreground ,fg)))) 200 | `(js2-external-variable ((t (:foreground ,fg)))) 201 | 202 | ;; perl 203 | `(cperl-hash-face ((t (:foreground ,fg)))) 204 | `(cperl-array-face ((t (:foreground ,fg)))) 205 | `(cperl-nonoverridable-face ((t (:foreground ,fg)))) 206 | 207 | ;; rpm-spec-mode 208 | `(rpm-spec-tag-face ((t (:inherit default)))) 209 | `(rpm-spec-package-face ((t (:inherit default)))) 210 | `(rpm-spec-macro-face ((t (:inherit default)))) 211 | `(rpm-spec-doc-face ((t (:inherit default)))) 212 | `(rpm-spec-var-face ((t (:inherit default)))) 213 | `(rpm-spec-ghost-face ((t (:inherit default)))) 214 | `(rpm-spec-section-face ((t (:inherit default :weight bold)))) 215 | 216 | ;; linum / nlinum-relative 217 | `(nlinum-relative-current-face ((t (:inherit normal :weight bold)))) 218 | `(linum ((t (:inherit normal :weight bold)))) 219 | 220 | ;; web-mode 221 | `(web-mode-current-element-highlight-face ((t (:inherit normal :weight bold :foreground ,fg)))) 222 | 223 | ;; mmm-mode 224 | `(mmm-default-submode-face ((t (:inherit normal :background "#ffffef")))) 225 | 226 | ;; misc 227 | `(idle-highlight ((t (:background ,bg-highlight)))) 228 | `(yas-field-highlight-face ((t (:background "#eeeee8" :foreground ,fg)))) 229 | `(eshell-prompt ((t (:foreground ,fg :weight bold)))) 230 | `(cider-result-overlay-face ((t (:weight bold)))) 231 | 232 | ;; evil-quickscope 233 | `(evil-quickscope-first-face ((t (:foreground ,fg :background "#eeeee8")))) 234 | `(evil-quickscope-second-face ((t (:foreground ,fg :background ,bg-highlight-3)))) 235 | 236 | ;; evil-snipe 237 | `(evil-snipe-first-match-face ((t (:foreground ,fg :background "#eeeee8")))) 238 | `(evil-snipe-matches-face ((t (:foreground ,fg :background ,bg-highlight-3)))) 239 | 240 | ;; evil 241 | `(evil-ex-lazy-highlight ((t (:background ,bg-highlight-2)))) 242 | `(evil-ex-substitute-matches ((t (:background ,bg-highlight-2)))) 243 | `(evil-ex-substitute-replacement ((t (:background ,bg-highlight :underline nil :foreground ,fg)))))) 244 | 245 | ;;;###autoload 246 | (when load-file-name 247 | (add-to-list 248 | 'custom-theme-load-path 249 | (file-name-as-directory (file-name-directory load-file-name)))) 250 | 251 | (provide-theme 'eink) 252 | ;;; eink-theme.el ends here 253 | -------------------------------------------------------------------------------- /images/example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maio/eink-emacs/326b07523dcb076d6209cdbc7fdbb73df296dbdb/images/example.png --------------------------------------------------------------------------------