├── LICENSE ├── README.md └── monotropic-theme.el /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2017 Rodrigo Franco 2 | 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | GNU General Public License for more details. 12 | 13 | You should have received a copy of the GNU General Public License 14 | along with this program. If not, see . 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Monotropic color theme for Emacs 2 | 3 | (Almost) monochromatic theme for emacs. Originally based on [maio/eink-emacs](https://github.com/maio/eink-emacs). 4 | 5 | ## Install 6 | 7 | Available from [MELPA](https://melpa.org/#/monotropic-theme) 8 | 9 | ## Screenshots 10 | 11 | ![orgmode](http://caffo.railsplayground.net/temp/monotropic-shots/orgmode.png) 12 | ![elixir + helm](http://caffo.railsplayground.net/temp/monotropic-shots/elixir.png) 13 | ![javascript](http://caffo.railsplayground.net/temp/monotropic-shots/javascript.png) 14 | ![markdown](http://caffo.railsplayground.net/temp/monotropic-shots/markdown.png) 15 | 16 | 17 | Font used in screenshots is [Triplicate T3C](https://practicaltypography.com/triplicate.html) 18 | -------------------------------------------------------------------------------- /monotropic-theme.el: -------------------------------------------------------------------------------- 1 | ;;; monotropic-theme.el --- Monotropic Theme 2 | 3 | ;; Copyright 2018-present, all rights reserved. 4 | ;; 5 | ;; Code licensed under MIT licence. 6 | 7 | ;; Author: caffo 8 | ;; Version: 0.1 9 | ;; Package-Version: 0 10 | ;; Package-Requires: ((emacs "24")) 11 | ;; URL: https://github.com/caffo/monotropic-theme 12 | 13 | ;;; Commentary: 14 | 15 | ;; (Almost) monochromatic theme for Emacs. Originally based on maio/eink-emacs. 16 | 17 | ;;; Code: 18 | 19 | (deftheme monotropic 20 | "Monotropic -- relating to or exhibiting monotropy. Based on https://github.com/maio/eink-emacs") 21 | 22 | (let ((fg "#111111") 23 | (bg "#fffffa") 24 | (bg-light "#ddddda") 25 | (fg-light "#808080") 26 | (bg-highlight "#ddddda") 27 | (bg-highlight-2 "#eeeee8") 28 | (bg-highlight-3 "#faf0fc")) 29 | 30 | (custom-theme-set-faces 31 | 'monotropic 32 | 33 | ;; generic stuff 34 | `(default ((t (:background ,bg :foreground ,fg)))) 35 | `(button ((t (:foreground ,fg :underline t)))) 36 | `(cursor ((t (:background ,fg :foreground "white smoke")))) 37 | `(custom-variable-tag ((t (:foreground ,fg :weight bold)))) 38 | `(default-italic ((t (:italic t)))) 39 | `(font-latex-bold-face ((t (:foreground ,fg)))) 40 | `(font-latex-italic-face ((t (:foreground ,fg :slant italic)))) 41 | `(font-latex-match-reference-keywords ((t (:foreground ,fg)))) 42 | `(font-latex-match-variable-keywords ((t (:foreground ,fg)))) 43 | `(font-latex-string-face ((t (:foreground "#a9a9a9")))) 44 | `(font-lock-builtin-face ((t (:background ,bg :foreground ,fg)))) 45 | `(font-lock-comment-delimiter-face ((t (:foreground ,fg-light :weight normal)))) 46 | `(font-lock-comment-face ((t (:foreground ,fg-light :slant italic :weight normal )))) 47 | `(font-lock-constant-face ((t (:foreground ,fg)))) 48 | `(font-lock-doc-face ((t (:foreground ,fg)))) 49 | `(font-lock-function-name-face ((t (:foreground ,fg)))) 50 | `(font-lock-keyword-face ((t (:foreground ,fg)))) 51 | `(font-lock-preprocessor-face ((t (:foreground ,fg)))) 52 | `(font-lock-reference-face ((t (:foreground ,fg)))) 53 | `(font-lock-string-face ((t (:foreground ,fg)))) 54 | `(font-lock-type-face ((t (:foreground ,fg)))) 55 | `(font-lock-variable-name-face ((t (:foreground ,fg :underline nil)))) 56 | `(font-lock-warning-face ((t (:foreground ,fg :weight bold)))) 57 | `(fringe ((t (:background ,bg :foreground ,bg)))) 58 | `(gnus-header-content ((t (:foreground ,fg)))) 59 | `(gnus-header-from ((t (:foreground ,fg)))) 60 | `(gnus-header-name ((t (:foreground ,fg)))) 61 | `(gnus-header-subject ((t (:foreground ,fg)))) 62 | `(highlight ((t nil))) 63 | `(ido-first-match ((t (:foreground ,fg)))) 64 | `(ido-only-match ((t (:foreground ,fg)))) 65 | `(ido-subdir ((t (:foreground ,fg)))) 66 | `(isearch ((t (:background "#eeeee8" :foreground ,fg)))) 67 | `(link ((t (:foreground ,fg)))) 68 | `(minibuffer-prompt ((t (:foreground ,fg :weight bold)))) 69 | `(mode-line ((t (:background ,bg-light :foreground ,fg :height 1.1 )))) 70 | `(mode-line-buffer ((t (:foreground ,fg :weight bold)))) 71 | `(mode-line-inactive ((t (:background ,bg-light :foreground ,bg-light)))) 72 | `(mode-line-minor-mode ((t (:weight ultra-light)))) 73 | `(modeline ((t (:background ,bg :foreground ,fg :height 1.4)))) 74 | `(org-agenda-date ((t (:foreground ,fg :height 1.2)))) 75 | `(org-agenda-date-today ((t (:foreground ,fg :weight bold :height 1.4)))) 76 | `(org-agenda-date-weekend ((t (:foreground ,fg :weight normal)))) 77 | `(org-agenda-structure ((t (:foreground ,fg :weight bold)))) 78 | `(org-block ((t (:foreground ,fg)))) 79 | `(org-block-begin-line ((t (:foreground ,fg-light)))) 80 | `(org-block-end-line ((t (:foreground ,fg-light)))) 81 | `(org-date ((t (:foreground ,fg) :underline))) 82 | `(org-done ((t (:foreground ,fg-light)))) 83 | `(org-hide ((t (:foreground ,bg)))) 84 | `(org-level-1 ((t (:foreground ,fg :weight semi-bold :height 1.3)))) 85 | `(org-level-2 ((t (:foreground ,fg :weight semi-bold :height 1.1)))) 86 | `(org-level-3 ((t (:foreground ,fg :weight semi-bold :height 1.1)))) 87 | `(org-level-4 ((t (:foreground ,fg :weight semi-bold :height 1.1)))) 88 | `(org-level-5 ((t (:foreground ,fg :weight semi-bold :height 1.1)))) 89 | `(org-level-6 ((t (:foreground ,fg :weight semi-bold :height 1.1)))) 90 | `(org-link ((t (:foreground ,fg :underline t)))) 91 | `(org-quote ((t (:foreground ,fg :slant italic :inherit org-block)))) 92 | `(org-scheduled ((t (:foreground ,fg)))) 93 | `(org-sexp-date ((t (:foreground ,fg)))) 94 | `(org-special-keyword ((t (:foreground ,fg)))) 95 | `(org-todo ((t (:foreground ,fg)))) 96 | `(org-verse ((t (:inherit org-block :slant italic)))) 97 | `(org-table ((t (:foreground, fg)))) 98 | `(region ((t (:background "#eeeee8" :foreground ,fg)))) 99 | `(slime-repl-inputed-output-face ((t (:foreground ,fg)))) 100 | `(whitespace-line ((t (:background ,bg-highlight-2 :foreground ,fg)))) 101 | 102 | ;; magit 103 | `(magit-header ((t (:weight bold)))) 104 | `(magit-item-mark ((t (:background ,bg-highlight)))) 105 | `(magit-item-highlight ((t (:weight bold)))) 106 | `(magit-section-heading ((t (:weight bold :height 1.2)))) 107 | `(magit-section-highlight ((t (:inherit nil :weight bold)))) 108 | `(magit-diff-context-highlight ((t (:weight bold)))) 109 | `(magit-branch-local ((t (:weight bold)))) 110 | `(magit-branch-remote ((t (:weight bold)))) 111 | 112 | 113 | ;; errors and warnings 114 | `(error ((t (:underline "#dadada")))) 115 | `(warning ((t (:underline "#dadada")))) 116 | 117 | ;; compile 118 | `(compilation-error ((t (:inherit error)))) 119 | 120 | ;; flycheck 121 | `(flycheck-error ((t (:inherit error)))) 122 | `(flycheck-warning ((t (:inherit warning)))) 123 | `(flycheck-info ((t (:inherit warning)))) 124 | 125 | ;; flyspell 126 | `(flyspell-duplicate ((t (:inherit error)))) 127 | `(flyspell-incorrect ((t (:inherit error)))) 128 | 129 | ;; dired 130 | `(dired-directory ((t (:weight bold)))) 131 | 132 | ;; helm 133 | `(helm-source-header ((t (:foreground ,fg :background "grey90" :weight bold)))) 134 | `(helm-header ((t (:foreground ,fg)))) 135 | `(helm-selection-line ((t (:inherit region :weight bold)))) 136 | `(helm-selection ((t (:background ,bg-highlight)))) 137 | `(helm-ff-directory ((t (:foreground ,fg :weight bold)))) 138 | `(helm-ff-dotted-directory ((t (:foreground ,fg :weight bold)))) 139 | `(helm-ff-symlink ((t (:foreground ,fg :slant italic)))) 140 | `(helm-ff-executable ((t (:foreground ,fg)))) 141 | `(helm-buffer-directory ((t (:foreground, fg)))) 142 | `(helm-buffer-process ((t (:foreground, fg)))) 143 | `(helm-M-x-key ((t (:foreground, fg :weight bold)))) 144 | `(helm-grep-match ((t (:foreground, fg :weight bold)))) 145 | `(helm-match ((t (:foreground, fg :weight bold)))) 146 | `(helm-candidate-number ((t (:foreground, fg :weight bold)))) 147 | `(helm-header-line-left-margin ((t (:foreground, fg :weight bold)))) 148 | 149 | ;; iedit 150 | `(iedit-occurrence ((t (:background ,bg-highlight-3 :foreground ,fg)))) 151 | 152 | ;; company 153 | `(company-echo-common ((t (:foreground ,fg)))) 154 | `(company-tooltip-selection ((t (:background ,bg-highlight)))) 155 | 156 | ;; parens - parenface 157 | '(parenface-paren-face ((t (:foreground "gray70")))) 158 | '(parenface-curly-face ((t (:foreground "gray70")))) 159 | '(parenface-bracket-face ((t (:foreground "gray70")))) 160 | 161 | ;; parens - paren-face 162 | '(parenthesis ((t (:foreground "gray70")))) 163 | 164 | ;; parens - other 165 | `(sp-show-pair-match-face ((t (:foreground "black" :weight bold)))) 166 | `(sp-show-pair-mismatch-face ((t (:background "red" :foreground "black" :weight bold)))) 167 | `(show-paren-match ((t (:foreground "black" :weight bold)))) 168 | `(show-paren-mismatch ((t (:background "red" :foreground "black" :weight bold)))) 169 | 170 | ;; js2 171 | `(js2-function-param ((t (:foreground ,fg)))) 172 | `(js2-error ((t (:inherit error)))) 173 | `(js2-external-variable ((t (:foreground ,fg)))) 174 | 175 | ;; perl 176 | `(cperl-hash-face ((t (:foreground ,fg)))) 177 | `(cperl-array-face ((t (:foreground ,fg)))) 178 | `(cperl-nonoverridable-face ((t (:foreground ,fg)))) 179 | 180 | ;; rpm-spec-mode 181 | `(rpm-spec-tag-face ((t (:inherit default)))) 182 | `(rpm-spec-package-face ((t (:inherit default)))) 183 | `(rpm-spec-macro-face ((t (:inherit default)))) 184 | `(rpm-spec-doc-face ((t (:inherit default)))) 185 | `(rpm-spec-var-face ((t (:inherit default)))) 186 | `(rpm-spec-ghost-face ((t (:inherit default)))) 187 | `(rpm-spec-section-face ((t (:inherit default :weight bold)))) 188 | 189 | ;; elixir 190 | `(elixir-operator-face ((t (:foreground, fg :weight bold)))) 191 | `(elixir-negation-face ((t (:foreground, fg :weight bold)))) 192 | `(elixir-attribute-face ((t (:foreground, fg, :background, bg :slant italic )))) 193 | `(elixir-atom-face ((t (:foreground, fg, :background, bg :weight bold )))) 194 | `(elixir-ignored-var-face ((t (:foreground, fg, :background, bg )))) 195 | 196 | ;; highlight-symbol 197 | `(highlight-symbol-face ((t (:background ,bg-highlight)))) 198 | `(evil-search-highlight-persist-highlight-face ((t (:background ,bg-highlight)))) 199 | 200 | ;; highlight-symbol 201 | 202 | `(highlight ((t (:background ,bg-highlight)))) 203 | `(highlight-symbol-face ((t (:background ,bg-highlight)))) 204 | `(evil-search-highlight-persist-highlight-face ((t (:background ,bg-highlight)))) 205 | `(global-evil-search-highlight-persist ((t (:background ,bg-highlight)))) 206 | `(evil-ex-search ((t (:background ,bg-highlight)))) 207 | `(evil-ex-lazy-highlight ((t (:background ,bg-highlight)))) 208 | `(evil-ex-substitute-matches ((t (:background ,bg-highlight)))) 209 | 210 | 211 | ;; avy 212 | `(avy-lead-face ((t (:foreground ,fg :background ,bg-highlight-2)))) 213 | `(avy-lead-face-0 ((t (:inherit avy-lead-face, :background ,bg-highlight)))) 214 | `(avy-lead-face-1 ((t (:inherit avy-lead-face)))) 215 | `(avy-lead-face-2 ((t (:inherit avy-lead-face)))) 216 | `(avy-background-face ((t (:foreground , bg-highlight)))) 217 | 218 | ;; linum 219 | `(linum ((t (:foreground ,bg-highlight)))) 220 | `(linum-relative-current-face ((t (:foreground ,fg-light)))) 221 | 222 | ;; eshell 223 | `(eshell-ls-directory-face ((t (:foreground ,fg :weight bold)))) 224 | `(eshell-ls-archive-face ((t (:foreground ,fg)))) 225 | `(eshell-ls-backup-face ((t (:foreground ,fg)))) 226 | `(eshell-ls-clutter-face ((t (:foreground ,fg)))) 227 | `(eshell-ls-directory-face ((t (:foreground ,fg)))) 228 | `(eshell-ls-executable-face ((t (:foreground ,fg)))) 229 | `(eshell-ls-missing-face ((t (:foreground ,fg)))) 230 | `(eshell-ls-picture-face ((t (:foreground ,fg)))) 231 | `(eshell-ls-product-face ((t (:foreground ,fg)))) 232 | `(eshell-ls-readonly-face ((t (:foreground ,fg)))) 233 | `(eshell-ls-special-face ((t (:foreground ,fg)))) 234 | `(eshell-ls-symlink-face ((t (:foreground ,fg)))) 235 | `(eshell-ls-text-face ((t (:foreground ,fg)))) 236 | `(eshell-ls-todo-face ((t (:foreground ,fg)))) 237 | `(eshell-ls-unreadable-face ((t (:foreground ,fg)))) 238 | `(eshell-prompt-face ((t (:foreground ,fg)))) 239 | 240 | ;; feebleline 241 | `(feebleline-time-face ((t (:foreground ,fg-light)))) 242 | `(feebleline-linum-face ((t (:foreground ,fg-light)))) 243 | `(feebleline-bufname-face ((t (:foreground ,fg-light)))) 244 | `(feebleline-previous-buffer-face ((t (:foreground ,fg-light)))) 245 | `(feebleline-asterisk-face ((t (:foreground ,fg-light)))) 246 | 247 | ;; shell-script mode 248 | `(sh-quoted-exec ((t (:background ,bg :foreground ,fg)))) 249 | 250 | ;; misc 251 | `(hl-line ((t (:background "#fcfaf0" )))) 252 | `(shadow ((t (:foreground "grey75")))) 253 | `(idle-highlight ((t (:background ,bg-highlight)))) 254 | `(yas-field-highlight-face ((t (:background ,bg-highlight-2 :foreground ,fg)))) 255 | `(eshell-prompt ((t (:foreground ,fg :weight bold)))) 256 | `(bm-face ((t (:background ,bg-highlight-2 )))) 257 | `(org-headline-done ((t (:foreground , "#e2e1d8" :slant italic)))) 258 | `(cider-result-overlay-face ((t (:weight bold)))))) 259 | 260 | 261 | ;;;###autoload 262 | (when load-file-name 263 | (add-to-list 264 | 'custom-theme-load-path 265 | (file-name-as-directory (file-name-directory load-file-name)))) 266 | 267 | (provide-theme 'monotropic) 268 | ;;; monotropic-theme.el ends here 269 | 270 | --------------------------------------------------------------------------------