├── COPYING.txt ├── README.adoc ├── notink-theme.el └── screenshot.png /COPYING.txt: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | 15 | -------------------------------------------------------------------------------- /README.adoc: -------------------------------------------------------------------------------- 1 | = NotInk Theme 2 | MetroWind 3 | 4 | A custom theme inspired by e-ink displays, for people who are tired of 5 | colorful colors, and die-hard minimalinimilists. 6 | 7 | image::screenshot.png[,659] 8 | 9 | == Installation 10 | 11 | Copy `notink-theme.el` somewhere in your `custom-theme-load-path`, and 12 | `(load-theme 'notink t)`. 13 | -------------------------------------------------------------------------------- /notink-theme.el: -------------------------------------------------------------------------------- 1 | ;;; notink-theme.el --- A custom theme inspired by e-ink displays -*- lexical-binding: t -*- 2 | 3 | ;; Copyright (C) 2021 MetroWind. 4 | 5 | ;; This program is free software. It comes without any warranty, to 6 | ;; the extent permitted by applicable law. You can redistribute it 7 | ;; and/or modify it under the terms of the Do What the Fuck You Want 8 | ;; to Public License, Version 2, as published by Sam Hocevar. See 9 | ;; http://www.wtfpl.net/ for more details. 10 | 11 | ;; Author: MetroWind 12 | ;; URL: https://github.com/MetroWind/notink-theme 13 | ;; Keywords: faces 14 | ;; Version: 1.0 15 | ;; Package-Requires: ((emacs "26.1")) 16 | 17 | ;;; Commentary: 18 | ;; 19 | ;; Notink theme is a custom theme for Emacs. Inspired by e-ink displays, 20 | ;; it aims to be a comfortable grey-scale theme. 21 | 22 | ;;; Code: 23 | 24 | (deftheme notink "A custom theme inspired by e-ink displays") 25 | 26 | ;; Colors 27 | (let* ((color-fg "#4c5256") 28 | (color-bg "#c4cdd3") 29 | (color-bright "#ffffff") 30 | (color-black "#35393b") 31 | (color-dark "#616b72") 32 | (color-middle "#83919a") 33 | (color-light "#a9b5bd")) 34 | 35 | (custom-theme-set-faces 36 | 'notink 37 | `(default ((t (:background ,color-bg 38 | :foreground ,color-fg)))) 39 | `(cursor ((t (:background ,color-fg 40 | :foreground ,color-bg)))) 41 | `(region ((t (:background ,color-fg 42 | :foreground ,color-bg)))) 43 | `(secondary-selection ((t (:background ,color-light)))) 44 | `(mode-line ((t (:background ,color-dark 45 | :foreground ,color-bg 46 | :box nil)))) 47 | `(mode-line-buffer-id ((t (:foreground ,color-bg)))) 48 | `(mode-line-inactive ((t (:background ,color-fg 49 | :foreground ,color-bg)))) 50 | `(fringe ((t (:background ,color-bg)))) 51 | `(minibuffer-prompt ((t (:inherit italic :foreground ,color-dark)))) 52 | `(warning ((t (:foreground ,color-fg :background ,color-bright 53 | :weight unspecified)))) 54 | `(font-lock-builtin-face ((t (:foreground ,color-dark)))) 55 | `(font-lock-comment-face ((t (:inherit italic :foreground ,color-middle)))) 56 | `(font-lock-doc-face ((t (:inherit font-lock-comment-face)))) 57 | `(font-lock-constant-face ((t (:inherit italic :foreground ,color-dark)))) 58 | `(font-lock-function-name-face ((t (:foreground ,color-black)))) 59 | `(font-lock-keyword-face ((t (:foreground ,color-fg :inherit italic)))) 60 | `(font-lock-string-face ((t (:foreground ,color-dark)))) 61 | `(font-lock-type-face ((t (:foreground ,color-dark)))) 62 | `(font-lock-variable-name-face ((t (:foreground ,color-fg)))) 63 | `(font-lock-warning-face 64 | ((t (:foreground ,color-fg :background ,color-bright)))) 65 | 66 | `(isearch ((t (:background ,color-middle 67 | :foreground ,color-bg)))) 68 | `(isearch-fail ((t (:inherit default)))) 69 | 70 | `(lazy-highlight ((t (:background ,color-bright)))) 71 | `(link ((t (:foreground ,color-dark :underline t)))) 72 | `(link-visited ((t (:foreground ,color-middle :underline t)))) 73 | `(button ((t (:background ,color-bright :underline t :foreground nil)))) 74 | `(header-line ((t (:background ,color-light :foreground ,color-fg)))) 75 | `(shadow ((t (:foreground ,color-middle)))) 76 | `(show-paren-match ((t (:background ,color-dark :foreground ,color-bg)))) 77 | `(show-paren-mismatch ((t (:background ,color-bright 78 | :foreground ,color-fg)))) 79 | `(highlight ((t (:inverse-video nil :background ,color-bright)))) 80 | `(hl-line ((t (:inverse-video nil :background ,color-light)))) 81 | `(widget-field ((t (:background ,color-bright)))) 82 | 83 | ;; Faces for specific prog modes 84 | `(sh-heredoc ((t (:foreground nil :inherit font-lock-string-face)))) 85 | 86 | ;; Dired 87 | `(dired-directory ((t (:foreground ,color-dark)))) 88 | `(dired-symlink ((t (:foreground ,color-middle)))) 89 | `(dired-perm-write ((t (:background ,color-bright)))) 90 | 91 | ;; Diff 92 | `(diff-added ((t (:foreground unspecified :background ,color-bright)))) 93 | `(diff-removed ((t (:foreground ,color-bg :background ,color-dark)))) 94 | ;; `(diff-context ((t (:background nil)))) 95 | `(diff-file-header ((t (:bold t :background ,color-light :weight bold)))) 96 | `(diff-header ((t (:background ,color-light :foreground ,color-fg)))) 97 | 98 | ;; Whitespace 99 | `(whitespace-trailing ((t (:background ,color-light)))) 100 | `(whitespace-line ((t (:background ,color-light :foreground unspecified)))) 101 | 102 | ;; ERC 103 | `(erc-notice-face ((t (:foreground ,color-dark 104 | :weight unspecified)))) 105 | `(erc-header-line ((t (:inherit header-line)))) 106 | `(erc-timestamp-face ((t (:foreground ,color-middle :weight unspecified)))) 107 | `(erc-current-nick-face ((t (:background ,color-dark :foreground ,color-bg 108 | :weight unspecified)))) 109 | `(erc-input-face ((t (:foreground ,color-dark)))) 110 | `(erc-prompt-face ((t (:foreground ,color-middle 111 | :background nil 112 | :inherit italic 113 | :weight unspecified)))) 114 | `(erc-my-nick-face ((t (:foreground ,color-black)))) 115 | `(erc-pal-face ((t (:foreground ,color-dark :inherit italic)))) 116 | 117 | ;; Rainbow delimiters 118 | `(rainbow-delimiters-depth-1-face ((t (:foreground ,color-fg)))) 119 | `(rainbow-delimiters-depth-2-face ((t (:foreground ,color-middle)))) 120 | `(rainbow-delimiters-depth-3-face ((t (:foreground ,color-fg)))) 121 | `(rainbow-delimiters-depth-4-face ((t (:foreground ,color-middle)))) 122 | `(rainbow-delimiters-depth-5-face ((t (:foreground ,color-fg)))) 123 | `(rainbow-delimiters-depth-6-face ((t (:foreground ,color-middle)))) 124 | `(rainbow-delimiters-depth-7-face ((t (:foreground ,color-fg)))) 125 | `(rainbow-delimiters-unmatched-face ((t (:background ,color-bright)))) 126 | 127 | ;; Magit 128 | `(magit-branch-local ((t (:foreground ,color-dark :background nil)))) 129 | `(magit-branch-remote ((t (:foreground ,color-dark :background nil)))) 130 | `(magit-tag ((t (:foreground ,color-dark :background nil :inherit italic)))) 131 | `(magit-hash ((t (:foreground ,color-middle)))) 132 | `(magit-section-title ((t (:foreground ,color-fg :background nil)))) 133 | `(magit-section-heading ((t (:background nil :foreground ,color-fg)))) 134 | `(magit-section-highlight ((t (:background nil)))) 135 | `(magit-item-highlight ((t (:foreground ,color-fg 136 | :background ,color-bright)))) 137 | `(magit-log-author ((t (:foreground ,color-dark)))) 138 | `(magit-diff-added ((t (:inherit diff-added)))) 139 | `(magit-diff-added-highlight ((t (:inherit magit-diff-added)))) 140 | `(magit-diff-removed ((t (:inherit diff-removed)))) 141 | `(magit-diff-removed-highlight ((t (:inherit magit-diff-removed)))) 142 | `(magit-diff-context ((t (:inherit diff-context)))) 143 | `(magit-diff-context-highlight ((t (:inherit magit-diff-context)))) 144 | `(magit-popup-argument ((t (:inherit font-lock-function-name-face)))) 145 | `(magit-popup-disabled-argument ((t (:inherit font-lock-comment-face)))) 146 | `(magit-diff-hunk-heading 147 | ((t (:background unspecified :foreground unspecified 148 | :inherit header-line)))) 149 | `(magit-diff-hunk-heading-highlight 150 | ((t (:background unspecified :foreground unspecified 151 | :inherit magit-diff-hunk-heading)))) 152 | 153 | ;; Git-gutter-fringe 154 | `(git-gutter-fr:modified ((t (:foreground ,color-dark)))) 155 | `(git-gutter-fr:added ((t (:foreground ,color-dark)))) 156 | `(git-gutter-fr:deleted ((t (:foreground ,color-dark)))) 157 | 158 | ;; Company 159 | `(company-preview ((t (:foreground ,color-fg :background nil)))) 160 | `(company-preview-common ((t (:foreground ,color-fg :background nil)))) 161 | `(company-tooltip ((t (:foreground ,color-fg :background ,color-bright)))) 162 | `(company-tooltip-common ((t (:foreground ,color-middle)))) 163 | `(company-tooltip-selection ((t (:background ,color-bg)))) 164 | `(company-tooltip-common-selection ((t (:foreground ,color-middle)))) 165 | `(company-tooltip-annotation ((t (:foreground ,color-dark)))) 166 | `(company-scrollbar-bg ((t (:background ,color-bright)))) 167 | `(company-scrollbar-fg ((t (:background ,color-bg)))) 168 | 169 | ;; Powerline 170 | `(powerline-active2 ((t (:foreground ,color-fg :background ,color-bg)))) 171 | `(powerline-active1 ((t (:foreground ,color-bg :background ,color-dark)))) 172 | `(powerline-inactive2 ((t (:foreground ,color-bg 173 | :background ,color-middle)))) 174 | `(powerline-inactive1 ((t (:foreground ,color-fg 175 | :background ,color-middle)))) 176 | 177 | ;; Smart mode line 178 | `(sml/global ((t (:foreground ,color-bg)))) 179 | `(sml/charging ((t (:foreground ,color-bg)))) 180 | `(sml/discharging ((t (:foreground ,color-bg)))) 181 | `(sml/read-only ((t (:foreground ,color-bg)))) 182 | `(sml/filename ((t (:foreground ,color-bg :weight bold)))) 183 | `(sml/prefix ((t (:foreground ,color-bg :weight normal :inherit italic)))) 184 | `(sml/modes ((t (:foreground ,color-bg :weight bold)))) 185 | `(sml/modified ((t (:foreground ,color-bg)))) 186 | `(sml/outside-modified ((t (:foreground ,color-bg :background ,color-fg)))) 187 | `(sml/position-percentage ((t (:foreground ,color-bg :slant normal)))) 188 | 189 | ;; Helm 190 | `(helm-candidate-number ((t (:foreground ,color-fg :background nil)))) 191 | `(helm-source-header ((t (:inherit font-lock-comment-face 192 | :background unspecified :foreground unspecified)))) 193 | `(helm-selection ((t (:inherit region :distant-foreground nil 194 | :background nil)))) 195 | `(helm-prefarg ((t (:foreground ,color-dark)))) 196 | `(helm-ff-file ((t (:inherit default)))) 197 | `(helm-ff-directory ((t (:inherit dired-directory :foreground unspecified)))) 198 | `(helm-ff-executable ((t (:foreground unspecified)))) 199 | `(helm-ff-file-extension ((t (:foreground nil :background nil)))) 200 | `(helm-ff-invalid-symlink ((t (:inherit dired-symlink :foreground unspecified 201 | :background ,color-bright)))) 202 | `(helm-ff-symlink ((t (:inherit dired-symlink :foreground unspecified)))) 203 | `(helm-ff-prefix ((t (:background nil)))) 204 | `(helm-ff-dotted-directory ((t (:background nil :foreground ,color-light)))) 205 | `(helm-M-x-key ((t (:foreground ,color-middle)))) 206 | `(helm-buffer-file ((t (:foreground ,color-fg)))) 207 | `(helm-buffer-archive ((t (:inherit helm-buffer-file)))) 208 | `(helm-buffer-directory ((t (:foreground ,color-dark :background nil)))) 209 | `(helm-buffer-not-saved 210 | ((t (:inherit helm-buffer-file :foreground unspecified 211 | :background ,color-bright)))) 212 | `(helm-buffer-saved-out ((t (:inherit helm-buffer-not-saved)))) 213 | `(helm-buffer-modified ((t (:foreground ,color-dark)))) 214 | `(helm-buffer-process ((t (:foreground ,color-dark)))) 215 | `(helm-buffer-size ((t (:foreground ,color-middle)))) 216 | `(helm-match ((t (:inherit italic)))) 217 | 218 | ;; TeX 219 | `(font-latex-sedate-face ((t (:foreground ,color-dark)))) 220 | `(font-latex-math-face ((t (:inherit default)))) 221 | `(font-latex-script-char-face ((t (:inherit font-latex-math-face)))) 222 | 223 | ;; adoc-mode 224 | `(markup-meta-hide-face ((t (:height 1.0 :foreground ,color-middle)))) 225 | `(markup-meta-face ((t (:height 1.0 :foreground ,color-dark :family nil)))) 226 | `(markup-reference-face ((t (:underline nil :foreground ,color-dark)))) 227 | `(markup-gen-face ((t (:inherit default :foreground nil)))) 228 | `(markup-passthrough-face ((t (:inherit markup-dark)))) 229 | `(markup-replacement-face ((t (:family nil :foreground ,color-dark)))) 230 | `(markup-list-face ((t (:weight bold)))) 231 | `(markup-secondary-text-face ((t (:height 1.0 :foreground ,color-dark)))) 232 | `(markup-verbatim-face ((t (:foreground ,color-dark)))) 233 | `(markup-code-face ((t (:inherit markup-verbatim-face)))) 234 | `(markup-typewriter-face ((t (:inherit nil)))) 235 | `(markup-complex-replacement-face 236 | ((t (:background ,color-light :foreground ,color-fg)))) 237 | `(markup-title-0-face ((t (:height 1.728 :inherit markup-gen-face)))) 238 | `(markup-title-1-face ((t (:height 1.44 :inherit markup-gen-face)))) 239 | `(markup-title-2-face ((t (:height 1.2 :inherit markup-gen-face)))) 240 | `(markup-title-3-face ((t (:height 1.0 :inherit markup-gen-face)))) 241 | `(markup-title-4-face ((t (:height 1.0 :inherit markup-gen-face)))) 242 | `(markup-title-5-face ((t (:height 1.0 :inherit markup-gen-face)))) 243 | 244 | ;; Outline 245 | `(outline-1 ((t (:height 1.44 :foreground nil)))) 246 | `(outline-2 ((t (:height 1.2 :foreground nil)))) 247 | `(outline-3 ((t (:foreground nil)))) 248 | `(outline-4 ((t (:foreground nil)))) 249 | `(outline-5 ((t (:foreground nil)))) 250 | `(outline-6 ((t (:foreground nil)))) 251 | `(outline-7 ((t (:foreground nil)))) 252 | `(outline-8 ((t (:foreground nil)))) 253 | 254 | ;; Org-mode 255 | `(org-hide ((t (:foreground ,color-bg)))) 256 | `(org-table ((t (:foreground ,color-fg)))) 257 | `(org-code ((t (:foreground ,color-dark)))) 258 | `(org-date ((t (:foreground ,color-middle)))) 259 | `(org-done ((t (:weight normal :foreground ,color-middle)))) 260 | `(org-todo ((t (:weight normal :foreground nil :background ,color-bright)))) 261 | `(org-latex-and-related ((t (:foreground ,color-dark :italic t)))) 262 | `(org-checkbox ((t (:weight normal :foreground ,color-middle)))) 263 | `(org-verbatim ((t (:foreground ,color-dark)))) 264 | `(org-mode-line-clock ((t (:background nil)))) 265 | `(org-document-title ((t (:weight normal :foreground nil)))) 266 | `(org-drawer ((t (:foreground ,color-middle)))) 267 | `(org-block ((t (:foreground ,color-dark)))) 268 | `(org-block-begin-line ((t (:inherit font-lock-comment-face)))) 269 | `(org-block-end-line ((t (:inherit font-lock-comment-face)))) 270 | `(org-archived ((t (:foreground ,color-middle)))) 271 | `(org-warning ((t (:background ,color-bright)))) 272 | 273 | `(org-agenda-structure ((t (:foreground ,color-dark)))) 274 | `(org-agenda-done ((t (:foreground ,color-middle)))) 275 | `(org-scheduled-today ((t (:foreground nil :inherit default)))) 276 | `(org-scheduled-previously ((t (:foreground nil :inherit italic)))) 277 | `(org-upcoming-deadline ((t (:foreground ,color-dark :inherit italic)))) 278 | `(org-scheduled ((t (:foreground nil :inherit org-scheduled-today)))) 279 | `(org-time-grid ((t (:foreground ,color-middle)))) 280 | 281 | ;; org-tree-slide 282 | `(org-tree-slide-header-overlay-face 283 | ((t (:inherit font-lock-comment-face :foreground nil :background nil)))) 284 | 285 | ;; Message 286 | `(message-header-name ((t (:foreground ,color-dark)))) 287 | `(message-header-other ((t (:foreground ,color-middle)))) 288 | `(message-header-cc ((t (:inherit message-header-other)))) 289 | `(message-header-newsgroups ((t (:inherit message-header-other)))) 290 | `(message-header-xheader ((t (:inherit message-header-other)))) 291 | `(message-header-subject ((t (:inherit default)))) 292 | `(message-header-to ((t (:foreground ,color-dark)))) 293 | `(message-cited-text ((t (:foreground ,color-middle :inherit italic)))) 294 | `(message-mml ((t (:foreground ,color-middle)))) 295 | 296 | ;; Notmuch 297 | `(notmuch-search-unread-face ((t (:foreground ,color-dark)))) 298 | `(notmuch-tag-face ((t (:foreground ,color-middle)))) 299 | `(notmuch-tree-match-author-face ((t (:foreground ,color-dark)))) 300 | `(notmuch-tree-no-match-face ((t (:foreground ,color-middle)))) 301 | `(notmuch-tree-match-tag-face 302 | ((t (:inherit notmuch-tree-match-author-face)))) 303 | `(notmuch-tag-unread-face 304 | ((t (:foreground ,color-fg :background ,color-bright)))) 305 | `(notmuch-message-summary-face ((t (:foreground ,color-middle)))) 306 | 307 | ;; Compilation 308 | `(compilation-error ((t (:foreground ,color-fg :background ,color-bright)))) 309 | `(compilation-info ((t (:foreground ,color-middle)))) 310 | `(compilation-warning ((t (:foreground ,color-dark)))) 311 | 312 | ;; Highlight-indent-guides 313 | `(highlight-indent-guides-odd-face ((t (:background ,color-bright)))) 314 | `(highlight-indent-guides-even-face ((t (:background nil)))) 315 | 316 | ;; Telega 317 | `(telega-msg-heading ((t (:background nil :foreground ,color-dark 318 | :inherit nil)))) 319 | `(telega-msg-inline-reply ((t (:foreground ,color-middle :inherit nil)))) 320 | `(telega-entity-type-texturl ((t (:inherit nil :foreground ,color-dark)))) 321 | 322 | ;; Beancount 323 | `(beancount-date ((t (:inherit italic :foreground nil)))) 324 | `(beancount-account ((t (:inherit default)))) 325 | 326 | ;; LSP 327 | `(lsp-headerline-breadcrumb-path-face ((t (:foreground ,color-fg)))) 328 | `(lsp-headerline-breadcrumb-path-error-face 329 | ((t (:underline nil :background ,color-bright)))) 330 | `(lsp-headerline-breadcrumb-separator-face ((t (:foreground ,color-fg)))) 331 | 332 | ;; Flymake 333 | `(flymake-error ((t (:underline (:style wave :color ,color-bright))))) 334 | `(flymake-warning ((t (:underline (:style wave :color ,color-middle))))) 335 | 336 | ;; Flycheck 337 | `(flycheck-error ((t (:underline (:style wave :color ,color-bright))))) 338 | `(flycheck-warning ((t (:underline (:style wave :color ,color-middle))))) 339 | 340 | ;; Flyspell 341 | `(flyspell-duplicate ((t (:underline (:style wave :color ,color-middle))))) 342 | `(flyspell-incorrect ((t (:underline (:style wave :color ,color-bright))))) 343 | 344 | ;; Mail 345 | `(message-separator ((t (:foreground ,color-middle)))) 346 | 347 | ;; Eglot 348 | `(eglot-mode-line ((t (:inherit sml/global)))))) 349 | 350 | ;;;###autoload 351 | (and load-file-name 352 | (boundp 'custom-theme-load-path) 353 | (add-to-list 'custom-theme-load-path 354 | (file-name-as-directory 355 | (file-name-directory load-file-name)))) 356 | 357 | (provide-theme 'notink) 358 | 359 | ;; Local Variables: 360 | ;; no-byte-compile: t 361 | ;; End: 362 | 363 | ;;; notink-theme.el ends here 364 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MetroWind/notink-theme/d1e84622a491bb570d6a450706833fafaad74f39/screenshot.png --------------------------------------------------------------------------------