modus-themes 
- Description
- Elegant, highly legible and customizable themes
- Latest
- modus-themes-5.0.0.tar (.sig), 2025-Nov-01, 1.65 MiB
- Maintainer
- Protesilaos Stavrou <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:
(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))
Old versions
| 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.2.0.tar.lz | 2023-May-30 | 202 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.4.1.tar.lz | 2022-Jun-01 | 133 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 | 2021-Jul-15 | 114 KiB |
| modus-themes-1.5.0.tar.lz | 2021-Jul-15 | 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.0.0 on 2025-11-01
This is a major release. There are some small breaking changes. The
big new feature is that Modus can be used as the basis for other theme
projects. Two of my other theme packages, the ef-themes and the
standard-themes are already done in this way: their next major
versions will formalise what I have been developing for a while now
(though the doric-themes will remain their own thing for the time
being).
Build on top of Modus
This is of immediate interest to package developers or advanced users. It changes nothing for existing users of the Modus themes. Please refer to the manual on the matter and feel welcome to contact me if you have any questions—I am happy to help.
Evaluate:
(info "(modus-themes) Build on top of the Modus themes")
Or visit: https://protesilaos.com/emacs/modus-themes#h:86eb375b-9be4-43ce-879a-0686a524a63b.
Why build on top of Modus? To benefit from (i) the wide face coverage
and extensive detail-oriented testing, (ii) the use of palette
mappings, (iii) the palette preview done with
modus-themes-list-colors or related, (iv) the inclusion of the
derivative theme in the workings of all Modus commands that load a
theme, like modus-themes-rotate and modus-themes-select (see the
new minor mode modus-themes-include-derivatives-mode).
Derivative themes can be as simple as a few extra colours on top of,
say, modus-operandi. They can also be more involved, with new
palette mappings and custom faces that use them. Such themes can
define commands which load only their own themes (see
modus-themes-define-derivative-command) and they can even take over
the Modus themes completely, in terms of becoming the only ones that
are exposed to the commands that load a theme, like
modus-themes-rotate and modus-themes-select.
Thanks to Suleyman Boyar for fixing an intermediate omission with an earlier version of the code that derives a theme. I did eventually change the whole approach to use a function instead of a macro, but Suleyman's contribution was still useful at the time. This was done in pull request 156: https://github.com/protesilaos/modus-themes/pull/156. The change is small, meaning that Suleyman does not need to assign copyright to the Free Software Foundation.
Colours can be copied from the palette preview buffer
The commands modus-themes-list-colors and modus-themes-list-colors-current
display the given theme's palette in a tabulated listing. Each line
visualises the colour it references. From that buffer it is now
possible to call the following commands (bound to the modus-themes-preview-mode-map):
| Default key binding | Name of the command |
|---|---|
w |
modus-themes-preview-mode-copy-color |
W |
modus-themes-preview-mode-copy-entry |
m |
modus-themes-preview-mode-mark |
M |
modus-themes-preview-mode-mark-all |
u |
modus-themes-preview-mode-unmark |
U |
modus-themes-preview-mode-unmark-all |
… …