modus-themes 
- Description
- Elegant, highly legible and customizable themes
- Latest
- modus-themes-5.3.0.tar (.sig), 2026-Jun-21, 1.78 MiB
- Maintainer
- Protesilaos <info@protesilaos.com>
- Website
- https://github.com/protesilaos/modus-themes
- Browse ELPA's repository
- CGit or Gitweb
- Badge
- Manual
- modus-themes
To install this package from Emacs, use package-install or list-packages.
Full description
Modus themes for GNU Emacs
IMAGES HERE: https://protesilaos.com/emacs/modus-themes-pictures.
Highly accessible themes, conforming with the highest standard for colour contrast between background and foreground values (WCAG AAA). They also are optimised for users with red-green colour deficiency.
The themes are very customisable and provide support for a very wide range of packages. Their manual is detailed so that new users can get started, while it also provides custom code for all sorts of more advanced customisations.
Since August 2020, the original Modus themes (modus-operandi,
modus-vivendi) are built into Emacs version 28 or higher. Emacs 28
ships with modus-themes version 1.6.0. Emacs 29 includes version
3.0.0. Emacs 30 provides a newer, refactored version that
thoroughly refashions how the themes are implemented and customized.
Such major versions are not backward-compatible due to the limited
resources at my disposal to support multiple versions of Emacs and of
the themes across the years.
Starting with version 5.0.0 of the modus-themes, other packages
can be built on top to provide their own "Modus" derivative themes.
The manual has a section about building on top of Modus. My
ef-themes and standard-themes are done in this way (versions
2.0.0 and 3.0.0, respectively).
- Package name (GNU ELPA):
modus-themes - Official manual: https://protesilaos.com/emacs/modus-themes
- Change log: https://protesilaos.com/emacs/modus-themes-changelog
- Colour palette: https://protesilaos.com/emacs/modus-themes-colors
- Sample pictures: https://protesilaos.com/emacs/modus-themes-pictures
- Git repositories:
- Backronym: My Old Display Unexpectedly Sharpened ... themes.
(use-package modus-themes
:ensure t
:demand t
:init
;; Starting with version 5.0.0 of the `modus-themes', other packages
;; can be built on top to provide their own "Modus" derivatives.
;; For example, this is what I do with my `ef-themes' and
;; `standard-themes' (starting with versions 2.0.0 and 3.0.0,
;; respectively).
;;
;; The `modus-themes-include-derivatives-mode' makes all Modus
;; commands that act on a theme consider all such derivatives, if
;; their respective packages are available and have been loaded.
;;
;; Note that those packages can even completely take over from the
;; Modus themes such that, for example, `modus-themes-rotate' only
;; goes through the Ef themes (to this end, the Ef themes provide
;; the `ef-themes-take-over-modus-themes-mode' and the Standard
;; themes have the `standard-themes-take-over-modus-themes-mode'
;; equivalent).
;;
;; If you only care about the Modus themes, then (i) you do not need
;; to enable the `modus-themes-include-derivatives-mode' and (ii) do
;; not install and activate those other theme packages.
(modus-themes-include-derivatives-mode 1)
:bind
(("<f5>" . modus-themes-rotate)
("C-<f5>" . modus-themes-select)
("M-<f5>" . modus-themes-load-random))
:config
;; Your customizations here. All customizations must evaluated
;; BEFORE loading the theme.
(setq modus-themes-to-toggle '(modus-operandi modus-vivendi)
modus-themes-to-rotate modus-themes-items
modus-themes-mixed-fonts t
modus-themes-variable-pitch-ui t
modus-themes-italic-constructs t
modus-themes-bold-constructs t
modus-themes-completions '((t . (bold)))
modus-themes-prompts '(bold)
modus-themes-headings
'((agenda-structure . (variable-pitch light 2.2))
(agenda-date . (variable-pitch regular 1.3))
(t . (regular 1.15))))
(setq modus-themes-common-palette-overrides nil)
;; Finally, load your theme of choice (or a random one with
;; `modus-themes-load-random', `modus-themes-load-random-dark',
;; `modus-themes-load-random-light').
(modus-themes-load-theme 'modus-operandi))
Emacs themes based on Modus
This is not an exhaustive list. You are welcome to add your package here.
ef-themesby Protesilaos https://github.com/protesilaos/ef-themesstandard-themesby Protesilaos https://github.com/protesilaos/standard-themesmodus-ewal-themeby Oliwier Czerwiński https://github.com/deadendpl/modus-ewal-thememodus-flexokiby Derek Passen https://github.com/dpassen/modus-flexokifaff-theme(since version 4) by James Ferguson https://github.com/WJCFerguson/emacs-faff-thememodus-catpuccinby Magnus Therning https://gitlab.com/magus/modus-catppuccinpixel-themesby Lucas https://github.com/lucasobx/pixel-themes
Other Emacs packages based on Modus
modus-themes-exporterby Protesilaos https://github.com/protesilaos/modus-themes-exporter
Projects inspired by the Modus themes
This is not an exhaustive list. You are welcome to add your project here.
hugo-modusby Yejun Su is a theme for the Hugo static site generator: https://github.com/goofansu/hugo-modus. It uses colours from the Modus themes.modus-themes.nvimby Miika Nissi and others is a port for NeoVim: https://github.com/miikanissi/modus-themes.nvim.zed-modus-themesby Vitaly Slobodin is a port for the Zed editor: https://github.com/vitallium/zed-modus-themes.
Old versions
| modus-themes-5.2.0.tar.lz | 2025-Dec-31 | 247 KiB |
| modus-themes-5.1.0.tar.lz | 2025-Nov-07 | 235 KiB |
| modus-themes-5.0.0.tar.lz | 2025-Nov-01 | 234 KiB |
| modus-themes-4.8.1.tar.lz | 2025-Jul-10 | 224 KiB |
| modus-themes-4.8.0.tar.lz | 2025-Jun-11 | 225 KiB |
| modus-themes-4.7.0.tar.lz | 2025-Apr-17 | 223 KiB |
| modus-themes-4.6.0.tar.lz | 2024-Oct-27 | 221 KiB |
| modus-themes-4.5.0.tar.lz | 2024-Aug-21 | 215 KiB |
| modus-themes-4.4.0.tar.lz | 2024-Mar-31 | 212 KiB |
| modus-themes-4.3.0.tar.lz | 2023-Sep-19 | 206 KiB |
| modus-themes-4.1.1.tar.lz | 2023-Feb-23 | 194 KiB |
| modus-themes-3.0.0.tar.lz | 2022-Oct-28 | 138 KiB |
| modus-themes-2.7.1.tar.lz | 2022-Oct-01 | 137 KiB |
| modus-themes-2.6.0.tar.lz | 2022-Aug-19 | 137 KiB |
| modus-themes-2.5.0.tar.lz | 2022-Aug-03 | 136 KiB |
| modus-themes-2.0.0.tar.lz | 2021-Dec-25 | 118 KiB |
| modus-themes-1.7.0.tar.lz | 2021-Nov-18 | 122 KiB |
| modus-themes-1.6.0.tar.lz | 2021-Sep-29 | 117 KiB |
| modus-themes-1.5.0.tar.lz | 2022-Feb-10 | 114 KiB |
| modus-themes-1.4.0.tar.lz | 2021-May-25 | 108 KiB |
News
This document contains the release notes that are included in each tagged commit on the project's main git repository: https://github.com/protesilaos/modus-themes.
The newest release is at the top. Since the notes are meant to be in plain text format, I copy them verbatim.
For further details, please consult these additional resources:
- Manual
- https://protesilaos.com/emacs/modus-themes
- Screenshots
- https://protesilaos.com/emacs/modus-themes-pictures
5.3.0 on 2026-06-21
The Modus themes are in a stable state. To my mind, they provide the best "default theme" experience across the 40+ original themes I have carefully designed.
Modus is also a platform for making themes for Emacs. There are plenty of derivatives already. I am linking to them through the project's README.md and am always happy to mention more packages—just let me know.
This version does not include many user-facing changes. Most of my work focused on making internal refinements.
Load the themes through the early-init.el
The Modus themes can now be loaded through the early-init.el file.
The idea is to avoid the flash of light that occurs under certain
conditions during startup.
This feature is the result of several changes to helper functions,
especially those contributing to the modus-themes-generate-palette
function that Modus derivatives may be relying on.
Thanks to Steven Allen for an intermediate refinement in pull request 194 and to Mike Olson for another relevant tweak in pull request 199:
- https://github.com/protesilaos/modus-themes/pull/194
- https://github.com/protesilaos/modus-themes/pull/199
Steven's contribution no longer exists in the code base due to other changes I made, but was still useful at the time.
Both changes are small, meaning that their authors do not need to assign copyright to the Free Software Foundation.
Also thanks to Jacod "Jake" Gordon for reminding me to apply one of
the new functions to the org-habit faces. This was done in issue
197: https://github.com/protesilaos/modus-themes/issues/197.
The underline for widget fields has the correct colour
Relevant faces use the palette entry for border (invoke the command
modus-themes-preview-colors or modus-themes-preview-colors-current
to view the entries in a theme's palette).
A popular package that makes use of widget.el widgets is notmuch.
Thanks to ukiran03 for the contribution, which was done in pull request 193: https://github.com/protesilaos/modus-themes/pull/193. The change is small, meaning that ukiran03 does not need to assign copyright to the Free Software Foundation.
A palette can now have a bg-popup entry
This gives users and derivative themes the option to pick a suitable
value for popup interfaces, such as those of the company and corfu
packages.
Thanks to aikrahguzar for making this suggestion in issue 70 of my
ef-themes repository (the ef-themes are built on top of the
modus-themes since Modus version 5.0.0, Ef version 2.0.0):
https://github.com/protesilaos/ef-themes/issues/70.
Support for faces or packages
linby Protesilaos.pulsarby Protesilaos.institution-calendarby Protesilaos.markdown-ts-modeby Rahul Martim Juliato and Stéphane Marks.trust-managerby Eshel Yaron.typst-ts-modeby Ziqi Yang. Thanks to Pranshu Sharma for suggesting its inclusion in issue 208: https://github.com/protesilaos/modus-themes/issues/208.- new
elfeedfaces since the maintenance of the project was assumed
… …