motform/stimmung-themes

emacs tuned to inner harmonies

Emacs Lisp

152

149 commits

updated Sep 15, 2025

See the code

README

  #+BEGIN_QUOTE
  When you say: We're in a good /Stimmung/, you mean a good psychological tuning, being well tuned together. 
  #+END_QUOTE
/— Karlheinz Stockhausen, 1973/

* Stimmung, Emacs tuned to inner harmonies

/Stimmung-themes/ is a pair of monoesuqe Emacs themes with minimal syntax highlighting. They are inspired by [[https://github.com/tonsky/sublime-scheme-alabaster][Tonsky's Alabaster theme]], following the maxim that a theme that highlights everything paradoxically highlights nothing. Text backgrounds (comments, strings and constants) and font variations (definitions/callsites) are used as alternatives to text colors, ensuring a harmonious reading experience. The hues of the /stimmung-dark/ are selected to match the default macOS dark mode. The themes feature a (default golden beige) highlight color that you can set color and application of, see /Customization/.

Emacs packages often define their own faces, making theming a relatively sisyphean task. /Stimmung-themes/ defines all default faces and some of the most common, and uncommon, packages. This includes programming modes like [[https://github.com/emacs-lsp/lsp-ui][lsp-ui]] and [[https://github.com/magit/magit][magit]], but also things like [[https://github.com/hlissner/emacs-solaire-mode][solaire]] and productivity/communication modes like [[https://git.notmuchmail.org/git/notmuch][notmuch]] or [[https://github.com/skeeto/elfeed][elfeed]]. Open an issue or make pull request if you lack a definition, they are always appreciated!

** Screenshots
[[./.assets/clj.png]]

[[./.assets/tsx.png]]

[[./.assets/magit.png]]

The screenshots are set in [[https://fsd.it/shop/fonts/pragmatapro/][PragmataPro]] (with line-height [[https://github.com/tam5/font-patcher][patched]] to 1.4) and feature modeline/whitespace settings inspired by [[https://github.com/rougier][rougier]] that you can find in my [[https://github.com/motform/emacs.d][emacs.d]].


** Installation
[[https://melpa.org/#/stimmung-themes][Stimmung-themes is distributed via MELPA]]. Install it with your package manager of preference (~package.el~, ~straight~, ~use-package~) and make sure the following lines are in your init-file:

#+BEGIN_SRC emacs-lisp
(require 'stimmung-themes) ; if you use package.el
(stimmung-themes-load-light)
#+END_SRC

A typical use-package installation might look something like:

#+BEGIN_SRC emacs-lisp
(use-package stimmung-themes
  ;; :straight (stimmung-themes :host github :repo "motform/stimmung-themes") ; if you are a straight shooter
  :demand t
  :ensure t
  :config (stimmung-themes-load-light)) ; or (stimmung-themes-load-dark)
#+END_SRC

Note that some faces, like =org-block=, inherit from the =fixed-pitch= font, in order to allow them to properly work with =variable-pitch-mode=. This means that, in order to have a consistent experience, you may have to set the relevant =face-attribute=. For example:

#+BEGIN_SRC emacs-lisp
(set-face-attribute 'default        nil :family "Iosevka"            :height fixed-size    :weight 'medium)
(set-face-attribute 'fixed-pitch    nil :family "Iosevka"            :height fixed-size    :weight 'medium)
(set-face-attribute 'variable-pitch nil :family "Overpass Nerd Font" :height variable-size :weight 'normal)
#+END_SRC

** Customization

Stimmung offers extensive control what and how to highlight ~font-lock~ faces, i.e. the colors used for syntax highlighting. It exposes a number of customizable variables (see table) that take a value of either ~'background~ (highlight behind the text), ~'foreground~ (highlight of the text) or ~'none~ (no highlight). In addition to these, one can control the color of the background and foreground highlight in both modes. See [[https://github.com/motform/stimmung-themes/issues/20][this thread]] for the fruitful discussion that introduced these.

| variable                                         | values                                      |
|--------------------------------------------------+---------------------------------------------|
| ~stimmung-themes-dark-highlight-color~             | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-dark-highlight-color-foreground~  | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-light-highlight-color~            | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-light-highlight-color-foreground~ | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-builtin~                          | 'background (default), 'foreground or 'none |
| ~stimmung-themes-comment~                          | 'background (default), 'foreground or 'none |
| ~stimmung-themes-constant~                         | 'background (default), 'foreground or 'none |
| ~stimmung-themes-string~                           | 'background (default), 'foreground or 'none |
| ~stimmung-themes-markup~                           | 'background (default), 'foreground or 'none |
| ~stimmung-themes-type~                             | 'background (default), 'foreground or 'none |
| ~stimmung-themes-function-name~                    | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-keyword~                          | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-variable-name~                    | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-preprocessor~                     | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-regex~                            | 'background, 'foreground or 'none (default) |

There is a convenience function to toggle between the dark and light theme, ~stimmung-themes-toggle~, along with variants to interactively load the dark and light versions ~stimmung-themes-load-{light|dark}~.

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

emacs
emacs-theme
minimal
monochrome
theme

Contributors

motform

135 commits

slotThe

9 commits

Walheimat

2 commits

aartaka

1 commits

motform/stimmung-themes

emacs tuned to inner harmonies

Emacs Lisp

152

149 commits

updated Sep 15, 2025

See the code

README

  #+BEGIN_QUOTE
  When you say: We're in a good /Stimmung/, you mean a good psychological tuning, being well tuned together. 
  #+END_QUOTE
/— Karlheinz Stockhausen, 1973/

* Stimmung, Emacs tuned to inner harmonies

/Stimmung-themes/ is a pair of monoesuqe Emacs themes with minimal syntax highlighting. They are inspired by [[https://github.com/tonsky/sublime-scheme-alabaster][Tonsky's Alabaster theme]], following the maxim that a theme that highlights everything paradoxically highlights nothing. Text backgrounds (comments, strings and constants) and font variations (definitions/callsites) are used as alternatives to text colors, ensuring a harmonious reading experience. The hues of the /stimmung-dark/ are selected to match the default macOS dark mode. The themes feature a (default golden beige) highlight color that you can set color and application of, see /Customization/.

Emacs packages often define their own faces, making theming a relatively sisyphean task. /Stimmung-themes/ defines all default faces and some of the most common, and uncommon, packages. This includes programming modes like [[https://github.com/emacs-lsp/lsp-ui][lsp-ui]] and [[https://github.com/magit/magit][magit]], but also things like [[https://github.com/hlissner/emacs-solaire-mode][solaire]] and productivity/communication modes like [[https://git.notmuchmail.org/git/notmuch][notmuch]] or [[https://github.com/skeeto/elfeed][elfeed]]. Open an issue or make pull request if you lack a definition, they are always appreciated!

** Screenshots
[[./.assets/clj.png]]

[[./.assets/tsx.png]]

[[./.assets/magit.png]]

The screenshots are set in [[https://fsd.it/shop/fonts/pragmatapro/][PragmataPro]] (with line-height [[https://github.com/tam5/font-patcher][patched]] to 1.4) and feature modeline/whitespace settings inspired by [[https://github.com/rougier][rougier]] that you can find in my [[https://github.com/motform/emacs.d][emacs.d]].


** Installation
[[https://melpa.org/#/stimmung-themes][Stimmung-themes is distributed via MELPA]]. Install it with your package manager of preference (~package.el~, ~straight~, ~use-package~) and make sure the following lines are in your init-file:

#+BEGIN_SRC emacs-lisp
(require 'stimmung-themes) ; if you use package.el
(stimmung-themes-load-light)
#+END_SRC

A typical use-package installation might look something like:

#+BEGIN_SRC emacs-lisp
(use-package stimmung-themes
  ;; :straight (stimmung-themes :host github :repo "motform/stimmung-themes") ; if you are a straight shooter
  :demand t
  :ensure t
  :config (stimmung-themes-load-light)) ; or (stimmung-themes-load-dark)
#+END_SRC

Note that some faces, like =org-block=, inherit from the =fixed-pitch= font, in order to allow them to properly work with =variable-pitch-mode=. This means that, in order to have a consistent experience, you may have to set the relevant =face-attribute=. For example:

#+BEGIN_SRC emacs-lisp
(set-face-attribute 'default        nil :family "Iosevka"            :height fixed-size    :weight 'medium)
(set-face-attribute 'fixed-pitch    nil :family "Iosevka"            :height fixed-size    :weight 'medium)
(set-face-attribute 'variable-pitch nil :family "Overpass Nerd Font" :height variable-size :weight 'normal)
#+END_SRC

** Customization

Stimmung offers extensive control what and how to highlight ~font-lock~ faces, i.e. the colors used for syntax highlighting. It exposes a number of customizable variables (see table) that take a value of either ~'background~ (highlight behind the text), ~'foreground~ (highlight of the text) or ~'none~ (no highlight). In addition to these, one can control the color of the background and foreground highlight in both modes. See [[https://github.com/motform/stimmung-themes/issues/20][this thread]] for the fruitful discussion that introduced these.

| variable                                         | values                                      |
|--------------------------------------------------+---------------------------------------------|
| ~stimmung-themes-dark-highlight-color~             | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-dark-highlight-color-foreground~  | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-light-highlight-color~            | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-light-highlight-color-foreground~ | [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Colors.html][any Emacs color]]                             |
| ~stimmung-themes-builtin~                          | 'background (default), 'foreground or 'none |
| ~stimmung-themes-comment~                          | 'background (default), 'foreground or 'none |
| ~stimmung-themes-constant~                         | 'background (default), 'foreground or 'none |
| ~stimmung-themes-string~                           | 'background (default), 'foreground or 'none |
| ~stimmung-themes-markup~                           | 'background (default), 'foreground or 'none |
| ~stimmung-themes-type~                             | 'background (default), 'foreground or 'none |
| ~stimmung-themes-function-name~                    | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-keyword~                          | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-variable-name~                    | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-preprocessor~                     | 'background, 'foreground or 'none (default) |
| ~stimmung-themes-regex~                            | 'background, 'foreground or 'none (default) |

There is a convenience function to toggle between the dark and light theme, ~stimmung-themes-toggle~, along with variants to interactively load the dark and light versions ~stimmung-themes-load-{light|dark}~.

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

emacs
emacs-theme
minimal
monochrome
theme

Contributors

motform

135 commits

slotThe

9 commits

Walheimat

2 commits

aartaka

1 commits

Languages

Emacs Lisp

100.0%