Emacs: modus-themes version 4.3.0
I will soon install the changes in emacs.git so please wait a little longer for the updates to trickle down to you.
- Package name (GNU ELPA):
modus-themes(also built into Emacs 28+)
- 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 repo on SourceHut: https://git.sr.ht/~protesilaos/modus-themes
- Mailing list: https://lists.sr.ht/~protesilaos/modus-themes
- Backronym: My Old Display Unexpectedly Sharpened … themes
All themes except the tritanopia ones have a new hover colour
The previous colour was not sufficiently distinct from what each theme
defines for the
bg-completion palette entry (preview a palette with
M-x modus-themes-preview-colors or
This would make it hard to spot the difference while, for example,
vertico-mode in tandem with
Same principle for the difference between the mouse hover and lazy isearch highlights (e.g. in Dired or Occur buffers).
Changing the hue here follows the same principle that underpinned the redesign of the grey backgrounds for version 4 of the project: depending on hardware capabilities, colour reproduction may not be optimal, so we need to be more considerate with the choice of colour values, erring on the side of caution.
are not affected by this initiative, as they already used highly distinct hues.
Thanks to Daniel Mendler for bringing this matter to my attention and
for testing the proposed alternatives. This was done via a private
channel and the information is shared with permission. Daniel is the
vertico, among many other excellent packages:
Japanese holidays have the expected style
Japanese calendars style Saturdays uniquely and the Modus themes now
do the same for those who use the
Saturdays show up in a blue colour (which changes to cyan for the
Each theme’s palette has a new semantic colour mapping called
date-holiday-other, just in case we ever encounter another scenario
like this one (users can override any entry in the palette—consult
the manual for the technicalities).
Thanks to Olaf Meeuwissen for bringing this package to my attention and showing me how traditional Japanese calendars style Saturdays. This was done in issue 311 on the GitLab mirror: https://gitlab.com/protesilaos/modus-themes/-/issues/311.
Each theme has semantic colour mappings for terminal emulators
These are used by
vterm, and the like. The idea is to
empower users to differentiate background and foreground values,
should they ever encounter a need to do so (when in doubt, do
By convention, terminal emulators use the same value for both background and foreground, although this is not optimal with high contrast themes because what works as a foreground does not necessarily look nice as a background.
The default values of the new mappings retain the prior state, just to not break existing configurations. Consider this a tacit user option for those who really need it.
Thanks to Tony Zorman for reporting the problem that provided the impetus for this change: https://lists.sr.ht/~protesilaos/modus-themes/%3C87fs4wforf.fsf%40hyperspace%3E.
All theme definitions conform with the latest standard for metadata
Themes are expected to declare their background type and affinity,
such that the built-in command
theme-choose-variant can do what it
describes (switch between related themes). I was already doing this,
though I had to make some adjustments. This is in response to Emacs
Thanks to Mauro Aranda for bringing the matter to my attention.
Proper colours for the inline preview of the
corfu top candidate
corfu-candidate-overlay package is used in tandem with the
corfu package to create an inline preview of the first matching
candidate. Thanks to Nicolas Semrau for bringing this matter to my
attention in issue 89 on the GitHub mirror:
Context indicators for the mode-line or header-line (breadcrumb.el)
I added support for the new
breadcrumb package by João Távora. It
displays information about where we are in the given file, such as
under which Org heading or inside which function. The indicator can
be shown on the mode-line or the header-line. Either way, it will now
be legible and consistent with its surroundings.
The new family of nerd-icons is covered by the themes
This is a new set of packages:
nerd-icons-ibuffer. A popular package that uses
the Nerd icons is
doom-modeline, which the themes support as well.
All icons look as intended again
Some faces from the
all-the-icons package were not configured
because I accidentally changed their name from something like
all-the-icons-red-warmer. I did that
while renaming the colours defined in each theme’s palette, to make
them more meaningful (“warmer red” can hint at something whereas “alt
red” is more abstract).
Corrected the documentation about custom Org faces
The Modus themes manual shows how to configure arbitrary TODO keywords
to inherit the style of an arbitrary face (get the list of faces
present in your Emacs with
M-x list-faces-display). The previous
value I used was faulty. It now is as intended. Thanks to
soaringbird for reporting the issue on the mailing list:
The colours used by
avy are better for users with tritanopia
I changed the sequence of colours displayed by commands such as
avy-goto-char-timer such that each individual background does not
blend with the ones adjacent to it, while respecting the overall needs
of a tritanopia-friendly design. I also tweaked the colour values to
achieve the desired result. The backgrounds remain distinct from
their context but now also work harmoniously together.
bg-dim palette entry is marginally brighter in all Modus operandi variants
After extensive testing and side-by-side comparisons, I have concluded that the marginal increase in brightness improves the affected interfaces.
bg-dim background is used, among others, in the header-line, the
popup of the
corfu packages, as well as the Org source
blocks (when the user option
modus-themes-org-blocks is configured
The “intense” palette override preset has new colours for tables and prose metadata
This concerns the
modus-themes-preset-overrides-intense (refer to
its documentation on how to use it). The primary target of these
changes is Org mode and the overall effect is subtle. The previous
colours did not combine nicely with all structural elements. For
example, Org clocktables would obscure timestamps by being the same
colour as them, while the table formula would not stand out. These
styles did not fit into the concept of “intense” colours.
The “warmer” palette override preset has more legible strings
modus-themes-preset-overrides-warmer uses a more prominent warm
green value for strings in programming modes. The effect is subtle,
though it fits in better with the overall aesthetic of these palette
Org document keywords like
#+author are optionally monospaced
When the user option
modus-themes-mixed-fonts is non-nil, all Org
document keywords will be rendered with the
fixed-pitch face. This
ensures consistency between keywords such as
#+author and “meta
#+texinfo. Thanks to user fluentpwn for the change: it
is one line and thus the author does not need to assign copyright to
the Free Software Foundation.
Git commit summary lines have a more precise style
This concerns the first line in a Git commit message, as seen while
working with the
magit package. Same principle for the
buffer used by the built-in VC framework. Before, I was hardcoding a
blue colour value, whereas now I apply the
success face. The
success face is designed to contrast with the
warning face that is
used to show overlong summaries. Furthermore, the added indirection
makes it possible to particularise the colour value, which I do for
the tritanopia themes that cannot use blue.
Removed explicit support for the built-in
css-mode. Its default faces are decent. They inherit from standard font-lock faces that the themes already cover.
Recalibrated wordwise (“refined”) diffs for deuteranopia. The
modus-vivendi-deuteranopiahave a little bit more intense colour values applied to wordwise, else “refined”, diffs. These concern removed lines. The effect is visible while using
magitor the built-in
Backported emacs.git commit
4cf33b6bd02b868ebbf112da7926d7c3c64517ce. It removed the space from the front matter of the
modus-themes.orgfile (i.e. the manual) because the Org export did not produce the right results, per Emacs bug#64548. Thanks to Stephen Berman for reporting the issue and making the requisite change.
Added support for the
erts-mode. Thanks to Kevin Fleming for informing me about this built-in mode. This was done in issue 85 on the GitHub mirror: https://github.com/protesilaos/modus-themes/issues/85.
Fixed a typo in the
modus-themes-preset-overrides-intensedoc string. Thanks to Nicolas Semrau for bringing this matter to my attention. It was done in issue 90 on the GitHub mirror: https://github.com/protesilaos/modus-themes/issues/90.
Made all commands that prompt for a theme (
modus-themes-preview-colors) apply the
themecategory to the available candidates. This allows the user to target said category to affect the relevant functions. For example, to set completion styles with
completion-category-overridesor to define a custom annotation function with the
Added support for new
appt-notificationface (Emacs 30). Change upstream by me.