🏆 I provide private lessons on Emacs, Linux, and Life in general: https://protesilaos.com/coach/. Lessons continue throughout the year.

Released Modus themes 0.10.0

I just published version 0.10.0 of the Modus themes. These are my highly-accessible themes for GNU Emacs. They conform with the WCAG AAA standard for colour contrast accessibility (a minimum contrast ratio of 7:1 between the foreground and background values). You can find the packages on GNU ELPA, MELPA, MELPA stable:

  • modus-operandi-theme (light)
  • modus-vivendi-theme (dark)

Below are the release notes.

Modus Operandi and Modus Vivendi version 0.10.0

By Protesilaos Stavrou info@protesilaos.com on 2020-06-24

This entry records the changes since version 0.9.0 (2020-06-03). The present release is focused on stability and internal improvements.

Fixes and adjustments

Basil L. Contovounisios, aka @basil-conto, (and also a contributor to core Emacs) sent several patches that do the following:

  • Fix top-level parentheses so that the results of custom-theme-set-faces and custom-theme-set-variables are not passed as arguments to the first custom-theme-set-faces.

  • Fix the docstrings of the custom modus-theme-* faces.

  • Simplify the syntax of properties assigned to each face.

  • Improve the way styles are inherited by Dired and Ibuffer.

Basil also pointed out an inconsistency with regard to an unwanted underline effect for the doom-modeline-urgent face in Modus Vivendi. It was promptly removed.

From my part, I fixed issues 46 and 51 that concerned the way the compiler would evaluate each theme’s palette. The palette is now defined as a constant. Further information:

  • https://gitlab.com/protesilaos/modus-themes/-/issues/46
  • https://gitlab.com/protesilaos/modus-themes/-/issues/51

Improvements to existing faces

André Alexandre Gomes (@aadcg) provided valuable feedback and suggestions in issue 50 on the redesign of several org-mode faces.

The thread is long and contains lots of screenshots: https://gitlab.com/protesilaos/modus-themes/-/issues/50

The changes in outline:

  • Org checkboxes have a subtle background which gives them a more pronounced appearance while retaining their overall simplicity.

  • Org dates use a more saturated variant of cyan than they did before. It helps distinguish them from their context. Especially true for dates inside of tables.

  • Org agenda dates have also undergone a slight review to match the above.

  • Org time grid now uses a more appropriate foreground colour, which has been designed specifically for unfocused context.

  • Org todo keywords use a more semantically-correct variant of red, rather than the purple one they had before.

  • Org statistics’ cookies for pending tasks use a red variant as well rather than the previous yellow one, in the interest of consistency and to avoid exaggerations.

Other internal refinements

  • Subtle review of the Modus Vivendi palette. In short, it addresses:

    • Imbalanced levels of luminance and inconsistent differences in hue between them and their neighbouring colours (e.g. the greens between them, and the greens next to the yellows in the context of syntax highlighting). The result was that they would create an undesirable emphatic “pop out” effect when placed close to more moderate colours.

    • Differences in luminance and hue could lead to scenaria where two colours could be conflated with each other or otherwise fail to perform their intended function.

    • The complete report is on my website: https://protesilaos.com/codelog/2020-06-13-modus-vivendi-palette-review/

  • Major review of the diredfl faces, in the interest of improved readability and harmony between the various colours. This benefits from the palette changes in Modus Vivendi, but also from a similar review to Modus Operandi that was documented in version 0.9.0.

  • Refactor the names of dedicates colours for “marking” purposes. These are used in Dired, Ibuffer, Proced, etc. Then apply them consistently throughout each theme.

  • Make sure that stripes uses the same colours as hl-line-mode.

  • Let symlinks use a more appropriate colour in Dired and Trashed.

  • Refine the use of colour in magit-tag, eshell-prompt, message-header-name, log-edit-header, change-log-function, message-mml, message-header-name, message-separator. These are subtle (i.e. difficult) tweaks that improve the overall presentation in context.

  • Make diff indicators not use an unnecessary background when the user-facing option for “subtle diffs” is enabled (check the README for the exact name of this option). This ensures consistency between the indicators and the actual scope of the diffs.

  • Add support for the minibuffer-line package and extend existing support of the faces used in the built-in Emacs info pages.

My thanks to Basil and André for their contributions!