Skip to content
Tags give the ability to mark specific points in history as being important
  • 0.8.1
    89a31f62 · Update to version 0.8.1 ·
    0.8.1
    
    Fixes a missing comma in a single colour variable.
  • 0.8.0
    29078bdb · Upgrade to version 0.8.0 ·
    Modus Operandi and Modus Vivendi version 0.8.0
    
    By Protesilaos Stavrou <info@protesilaos.com> on 2020-04-28
    
    This entry records the changes since version 0.7.0 (2020-03-30).  The
    present release contains a little more than a hundred commits, covering
    one month of intense work.
    
    All changes are aligned with the primary objective of this project,
    which is conformance with the WCAG AAA accessibility standard for colour
    contrast.  This translates to a minimum contrast ratio of 7:1 between a
    given combination of foreground and background colours.
    
    All customisation options mentioned herein are off ('nil') by default.
    The project's policy is to offer such features on an "opt-in" basis,
    while always respecting the principle of least surprise.
    
    Refer to the README for further information.
    
    Four new customisation options
    ------------------------------
    
    The options in outline, with their detailed description below:
    
    + Rainbow headings
    + Section headings
    + 3D modeline
    + Subtle diffs
    
    1. "Rainbow headings" will apply more vivid colours to headings in
       'org-mode' and 'outline-mode'.  The gradation is similar to that of a
       rainbow's colour spectrum.
    
       The default is to use colour values that are closer to the grey
       scale.
    
    2. "Section headings" also apply to 'org-mode' and 'outline-mode'.  They
       will draw an overline over each heading and use a nuanced background
       colour that is appropriate for each level.  For Org, this option has
       some additional effects, where it will render keywords and priority
       cookies in a box and add to them a subtle background.  This is to
       make sure that everything feels consistent (to the extent possible).
    
       The default is to not use overlines, backgrounds, boxes in any of the
       relevant faces.  This is consistent with the standard austere
       colouration of headings: to not deviate too much from a "plain text"
       aesthetic.
    
    NOTE: "rainbow headings" and "section headings" can work on their own or
    be combined together.
    
    3. "3D modeline" will use a faux unpressed button style for the current
       window's modeline (like the standard looks of 'emacs -Q').  The
       colours used for the active and inactive modelines are tweaked
       accordingly to maximise the effect while retaining the visual
       distinction between them.
    
       The default is to draw the modelines in a two-dimensional style, with
       the active one having a more noticeable border around it.
    
    4. "Subtle diffs" will use colour-coded text for line-wise differences
       without applying any appropriately-coded background value or, where
       necessary, by using only a subtle greyscale background.  This affects
       'diff-mode', 'magit', 'ediff', and 'smerge-mode'.  For Magit an extra
       set of tweaks is implemented to account for the differentiation
       between the focused and unfocused diff hunks.
    
       Due to their unique requirements, word-wise or refined changes are
       always drawn with a colour-coded background, though it is less
       intense when this option is enabled.
    
       The default is to use a colour-coded background and foreground
       combination (e.g. light green text on a dark green backdrop) and to
       make appropriate adjustments for refined diffs and modes of
       interaction such as Magit's focused/unfocused diff states.
    
    Other major refinements
    -----------------------
    
    + Thoroughly revise the colours of 'ediff' and 'smerge-mode', so that
      they are aligned with those of 'diff-mode' and 'magit'.  This is in
      addition to the "subtle diffs" options mentioned in the previous
      section.
    
    + Review the faces used by Flycheck and Flymake.  A wavy/curly underline
      is now used in all terminals that support it.  The underlined text is
      drawn with a more nuanced foreground than before.  The previous design
      was exaggerating an already clear effect and could make things more
      difficult under certain circumstances.
    
    + All language checkers, including the aforementioned linter front-ends,
      now benefit from a new set of colours that are designed specifically
      for this particular purpose.  Makes the affected faces feel more
      different than their context.
    
    + Use dedicated colours for escape sequences, regular expression
      constructs, and quoted characters.  The goal is to better
      differentiate them from their surroundings.
    
    + Tweak the colours of 'hydra' to improve the distinction between its
      various types of behaviour.
    
    + Reduce the overall luminance of the background colours used in the
      fringes by the likes of 'flycheck', 'flymake', 'diff-hl', etc.  They
      should now not stand out more than they should, while retaining their
      intended role.
    
    + Implement more saturated colours in Elfeed.  The previous choices
      could make it harder to differentiate the various parts of the
      presentation.
    
    + Make better use of the customisation options for bold and slanted
      constructs where that is allowed.  If a face is not tied to the
      semantics of these styles then it is drawn without them, unless the
      user specifically opts for the relevant customisation options.
    
    Added support for packages (A-Z)
    --------------------------------
    
    + ag
    + color-rg
    + ctrlf
    + debbugs
    + eglot
    + forge
    + helpful
    + highlight-symbol
    + ibuffer
    + icomplete
    + iflipb
    + magit-imerge
    + man
    + orderless
    + page-break-lines
    + parrot
    + phi-grep
    + phi-search
    + pomidor
    + rcirc
    + spell-fu
    + switch-window
    + swoop
    + tab-bar-mode
    + tab-line-mode
    + trashed
    + tomatinho
    + tuareg
    + vimish-fold
    + visible-mark
    + vterm
    + wcheck-mode
    + winum
    + woman
    
    Miscellaneous changes and concluding remarks
    --------------------------------------------
    
    + Rewrote large parts of the README to make the customisation options
      easier to discover and understand.
    
    + Updated the screen shots and their description in the relevant Wiki
      page: https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots
  • 0.7.0
    cedb3310 · Upgrade to version 0.7.0 ·
    0.7.0
    
    Modus Operandi and Modus Vivendi version 0.7.0
    
    By Protesilaos Stavrou <info@protesilaos.com> on 2020-03-30
    
    This entry documents the changes since version 0.6.0 (2020-03-01).  The
    present release is the largest to date containing 110 commits.
    
    All changes conform with the primary objective of this project, which is
    conformance with the WCAG AAA accessibility standard for colour
    contrast.  This represents a minimum contrast ratio of 7:1 between a
    given combination of foreground and background colours.
    
    All customisation options mentioned herein are off ('nil') by default.
    The project's policy is to offer such features on an "opt-in" basis.
    Refer to the README or each theme's source code for the names of these
    user-facing symbols.
    
    Major refinements to existing face groups
    -----------------------------------------
    
    + The headline feature of this release is a refined set of colours for
      visualising version-control-system differences ("diffs").  The new
      colours are less intense than before and are designed to better convey
      the meaning of the constructs they apply to.  Affected face groups are
      those of 'magit' and 'diff-mode'.  A future release will assess how
      similar packages, such as 'ediff', can benefit from this work.
    
    + The other major set of changes concerns the colours that apply to
      fringes (see 'fringe-mode').  A new customisation option allows for a
      distinct background for the fringes (courtesy of Anders Johansson in
      commit 80fb704).  The default uses the same colours as the main
      buffer's background.  Building on this effort, fringe indicators, such
      as those of 'flycheck' now benefit from an entirely new set of
      background+foreground colour combinations that are designed
      specifically for the fringes.
    
    + A new customisation option allows users to render 'org-mode' source
      blocks in a distinct background colour.  The default is to use the
      same background as the rest of the buffer.  When this option is
      enabled, the background colour for the beginning and end line of such
      blocks is extended to the end of the window (using the ':extend t'
      attribute for >= Emacs 27).  Older Emacs versions already extend to
      the end of the window.
    
    + The colour combination that shows the matching parentheses or
      delimiters has been reviewed.  The commit is fairly small and the
      changes are immediately noticeable only to the most discerning of
      eyes.  Still, the considerations informing the review imposed a
      rigorous method.  Rather than summarise the findings, interested
      readers are advised to refer to commit af3a327: it offers a
      comprehensive analysis on the matter.
    
    Added support for packages (A-Z)
    --------------------------------
    
    + auctex/tex
    + bm
    + buffer-expose
    + centaur-tabs
    + cider (tentative, feedback is much appreciated)
    + csv-mode
    + dynamic-ruler
    + ebdb
    + elfeed-score
    + flyspell-correct
    + fold-this
    + freeze-it
    + frog-menu
    + git-walktree
    + helm-switch-shell
    + highlight-defined
    + highlight-escape-sequences (hes-mode)
    + highlight-numbers
    + highlight-thing
    + hl-todo
    + ioccur
    + julia
    + kaocha-runner
    + markup-faces (adoc-mode)
    + multiple-cursors
    + num3-mode
    + org-roam
    + org-superstar
    + org-treescope
    + outline-minor-mode
    + paradox
    + rainbow-identifiers
    + rg
    + ripgrep
    + sallet (tentative, feedback is much appreciated)
    + selectrum
    + sesman
    + side-notes
    + skewer-mode
    + stripes
    + symbol-overlay
    + syslog-mode
    + vc-annotate (C-x v g)
    + volatile-highlights
    + web-mode
    + yaml-mode
    
    Note about VC-annotate
    ----------------------
    
    Quoting from the relevant note in the project's README:
    
        Due to the unique way `vc-annotate' (`C-x v g') applies colours,
        support for its background mode (`vc-annotate-background-mode') is
        disabled at the theme level.
    
        Normally, such a drastic measure should not belong in a theme:
        assuming the user's preferences is bad practice.  However, it has
        been deemed necessary in the interest of preserving colour contrast
        accessibility while still supporting a useful built-in tool.
    
        If there actually is a way to avoid such a course of action, without
        prejudice to the accessibility standard of this project, then please
        report as much (or contribute as per the information in the
        Contributing section).
    
    Overview of refinements to already supported packages
    -----------------------------------------------------
    
    In this section the notion of "dedicated colours" pertains to colour
    values that are reserved for special faces.  They are never used for
    syntax highlighting or other common scenaria.
    
    + Define new background colours for fringe indicators (as noted in the
      first section).  Apply them to 'bm', 'diff-hl', 'git-gutter',
      'flycheck' fringe indicators.  All such indicators are now made more
      visible and work better with the new customisation option for
      rendering the fringes in a distinct background.
    
    + Define dedicated colours for tab-like interfaces.  Currently these
      apply only to 'centaur-tabs'.  The intention is to eventually
      implement them to the tab modes that ship with Emacs 27, as well as
      any other package that offers such functionality.
    
    + Define dedicated colours for actions that "mark" items.  Use them in
      'dired', 'proced', 'gnus'. An accented background is combined with an
      accented foreground.  The intention is to make the underlying
      construct distinct even under circumstances where the mark's
      background changes, such as when it intersects with 'hl-line-mode' or
      'stripes': the accented foreground will still be recognisable as a
      colour that differs from the main foreground.  The use of a bold font
      weight further reinforces the intended action.
    
    + Refine 'dired' faces to account for the new "mark" styles.
      Directories are no longer rendered in a bold weight.
    
    + Tweak the colours used in the built-in 'diary' and 'calendar' for
      better usability.
    
    + Tweak 'deadgrep' colours for consistency with packages that offer
      similar functionality.
    
    + Tweak 'compilation-line-number' in the interest of consistency with
      similar interfaces.
    
    + Use a more appropriate colour for 'trailing-whitespace'.  It now is a
      colour value that was designed specifically as a background.
    
    + Expand 'fountain-mode' support by covering its new heading faces.  The
      headings will be presented in larger font sizes, or using proportional
      fonts, should the user enable the relevant theme customisation options
      (see README or source code).
    
    + Remove bold weight from matching parentheses in 'show-paren-mode' and
      'smartparens'.  The temporarily applied bold weight can cause
      misalignments while using certain fonts.  Also apply the new colours
      for matching delimiters, as documented in the first section.
    
    + Refine 'outline-mode' colours to be consistent with those of Org's
      headings.
    
    + Several usability and colour refinements for 'helm' and related
      packages in that milieu.
    
    + Remove box property from emphasis markers in the mode line.  It
      created inconsistencies with other faces.
    
    + Refine the colours used in Magit logs, `change-log', `log-view'.  They
      are meant to be more distinct from their context, without drawing too
      much attention to themselves.
    
    + Minor internal fixes for indentation and the like.
    
    Miscellaneous changes and concluding remarks
    --------------------------------------------
    
    + Add section in the README which documents a legal requirement for all
      potential non-trivial code contributions: the need to assign copyright
      to the Free Software Foundation.  The Modus Themes are now distributed
      via the official GNU ELPA repository and copyright over them is
      assigned to the FSF.
    
    + Add CHANGELOG file which consolidates all tagged release notes such as
      this one.
    
    + Add new screen shots to the relevant Wiki page, together with detailed
      descriptions on what is being demonstrated:
      https://gitlab.com/protesilaos/modus-themes/-/wikis/Screenshots
    
    Special thanks to Manuel Uberti for reporting several issues and
    offering feedback where appropriate.  I was able to add support for lots
    of new packages.  While a few among the already supported face groups
    underwent tweaks and refinements.  The 'helm' ecosystem benefited the
    most.
    
    Thanks to Anders Johansson for the patch that introduced the
    fringes-related customisation option.  It inspired me to reconsider the
    use of this particular area of the interface, which eventually led to
    the barrage of commits that refashioned the fringe indicators.  A major
    win overall.
    
    Thanks to Jonathan Otsuka for fixing an error of mine on the naming of
    some symbols.  My apologies for missing it: I will be more careful from
    now on.
    
    Note: both patches were small, requiring no copyright assignment.
    Larger contributions are always welcome, though make sure you read the
    section in the README with regard to assigning copyright to the Free
    Software Foundation.
  • 0.6.0
    Version 0.6.0
    
    This release contains lots of refinements and additions.
    
    Let me start with an administrative point: I have completed the process
    of assigning my copy rights to the Free Software Foundation.  This
    covers every contribution I make to GNU Emacs.  In practice, it means
    that the Modus themes can now be included in the official ELPA archive
    and theoretically be shipped with Emacs itself.  The ELPA inclusion is
    ongoing.  Once it is completed, I will update the docs accordingly.
    
    The administrative change has no effect on the way this project is
    handled.  I still am the developer/maintainer and will continue to
    improve things further.  If you still have questions, feel free to
    contact me: https://protesilaos.com/contact
    
    Moving on to the changes since version 0.5.0 (2020-01-26).
    
    Added support for:
    
    + alert
    + apropos (built-in)
    + dap-mode
    + deft
    + dim-autoload
    + dired-git
    + enhanced-ruby-mode
    + gbd-mi.el (built-in library)
    + helm-ls-git
    + helm-xref
    + imenu-list
    + jira (org-jira)
    + js2-mode
    + jupyter
    + org-pomodoro
    + origami
    + rmail (built-in)
    + vc-print-log (built-in)
    + window-divider-mode (built-in)
    + xref (built-in)
    
    Refinements to existing faces:
    
    + A new subset of "nuanced" accent colours has been introduced.  These
    are named {red,green,yellow,blue,magenta,cyan}-nuanced.  Their purpose
    is to be used in contexts where lots of structured information is
    presented to the user, but each component does not need to draw too much
    attention to itself (e.g. Org's metadata).  As always, their contrast
    ratio is designed to always be >= 7:1 relative to the backgrounds they
    may be combined with.
    
    + Greatly improve the support for Gnus, even though most changes are
    subtle and are made in the interest of consistency.  The group levels
    now make use of the "nuanced" palette where appropriate (to denote
    levels of lower importance).
    
    + Several refinements for Org, including the use of "nuanced" colours
    for various metadata tags.  The agenda headers will now be scaled
    appropriately and use a variable-pitch font if the user sets the
    relevant customisation values of the theme they are using (check the
    documentation in each theme file or the repo's README).
    
    + Lots of refinements for Helm.  Some of these were introduced to align
    the overall aesthetic with equivalent metaphors in Ivy.  Others are
    meant to improve the styles of the headers and make various constructs
    consistent with their variants in the Helm ecosystem but also with their
    non-Helm counterparts (such as xref file names with and without Helm,
    but also with Helm's grep).
    
    + Improve the colours of buttons in contexts such as M-x customize.
    This is especially noticeable in modus-vivendi-theme (the dark theme)
    where the buttons are a darker shade of grey rather than the original
    lighter one.
    
    + Keycast now uses styles that are more consistent with the overall
    aesthetic of the Modus themes.  This means that the mode line indicators
    are blue-ish (blue is generally used for highlights in the mode line,
    but also when hovering over an item with the mouse pointer).  The pseudo
    button effect (colours + 3d) has been removed in favour of a flat look,
    in line with the flatness of the mode line itself.  Whereas before the
    keycast faces where designed to be consistent with the package's
    defaults.
    
    There were also a few minor refinements for:
    
    + calendar and diary
    + icomplete
    + mm-uu-extract
    + nobreak-hyphen and nobreak-space
    + org-habit
    + tooltip-mode
    
    Finally, the Commentary section of each theme has been greatly expanded.
    It now includes the user-facing customisation options and the complete
    list of supported packages.
  • 0.5.0
    ec9332a6 · Bump version to 0.5.0 ·
    Version 0.5.0
    
    This release contains support for several new packages and lots of
    refinements for existing ones.  A lot of work went into making the
    themes more robust by reviewing the inheritance of styles from one
    face group to another (in general, the ':inherit' property should not
    be used frivolously).  Several subtle changes were made to the colour
    palette of both themes to ensure consistency, enable more possible
    combinations, and avoid potential ambiguity under certain potential
    circumstances.
    
    Overall, this release gives me confidence that the themes have reached
    a fairly stable state.  What follows is an overview of the changes
    since version 0.4.0 (2020-01-02).
    
    Added support for:
    
    + equake
    + flymake
    + focus
    + fountain (fountain-mode)
    + git-lens
    + git-timemachine
    + hi-fill-column
    + highlight-blocks
    + info-colors
    + lsp-mode
    + lsp-ui
    + proced (built-in)
    + regexp-builder (built-in)
    + suggest
    
    Refinements:
    
    + The header line uses its own dedicated colours.  Several changes
      were made in 'eww', 'info', 'elfeed', 'magit', 'flycheck' to make
      sure that any accent value that appears there conforms with the
      overarching accessibility objective of the Modus themes (contrast
      ratio of >= 7:1, else WCAG AAA).
    + 'ivy' no longer uses a box style for the current line, as that was
      not always reliable.  Appropriate colours are used instead.
    + 'org-mode' blocks use a foreground value that distinguishes their
      opening and closing tags from source code comments.
    + The 'org-ellipsis' face was configured to always inherit the looks
      of its respective heading or element, rather than have its own
      excessive styling.
    + 'paren-match' has colours that are designed specifically for it.
      This is done to retain their utility while making sure they are not
      mistaken for some other type of feedback.
    + 'magit' has explicit styles for the mode line process indicators,
      instead of inheriting from another face.  The intention is to use
      foreground values that are designed specifically for use on the mode
      line (the minimum contrast ratio requirement).
    + 'erc' faces have been thoroughly reviewed in the interest of better
      usability.  Its mode line indicators now use appropriate colours.
    + The faces of the 'messages' library have been thoroughly reviewed.
      This affects various email interfaces, but also 'elfeed' entry
      metadata headings.
    + 'whitespace-mode' no longer has a newline character that stands out.
      That kind of emphasis was not necessary, given that the symbol used
      is a dollar sign, which is already far more visible than a mid dot.
    + 'font-lock' (generic syntax highlighting) has better colour
      combinations for regexp grouping constructs.
    + 'rainbow-delimiters' was given its missing base error face.
    + 'git-commit' comment action uses a slightly different foreground
      value than before to better match its context.
    + 'isearch' and 'query-replace' use colours that properly denote each
      action's utility.
    + 'visual-regexp' has been reviewed to make the matching groups more
      distinct from each other.
    + 'occur' and any other buffer that relies on the 'match' face can now
      benefit from the new colour combinations, in that its results cannot
      be confused for the active 'isearch' or 'query-replace' or even
      their lazily highlighted results (or, indeed, of any other search
      tool).
    + 'company' uses faces for its search feedback that are consistent
      with other search metaphors.
    + Emacs 27's new ':extend' property is only implemented where
      necessary (note that the latest release is version 26.3).
  • 0.4.0
    ed89fbe2 · Update to version 0.4.0 ·
    Version 0.4.0
    
    This is an overview of the changes since version 0.3.0 (2019-12-25).
    
    Add support for:
    
    	+ ert
    	+ flycheck-indicator
    	+ mentor
    	+ mu4e-conversation
    	+ powerline-evil
    	+ telephone-line
    	+ vc (built-in version control)
    
    Refinements to already-supported packages:
    
    	+ company-mode (several refinements)
    	+ doom-modeline (major review)
    	+ helm (several tweaks)
    	+ hl-line-mode (use unique background)
    	+ ivy (improve matching line)
    	+ line-number-mode (minor tweaks)
    	+ markdown-mode (comprehensive expansion)
    	+ mode-line (more appropriate styles for the highlight)
    	+ powerline (minor tweaks)
    	+ region (use unique background)
    	+ swiper (improve matching line in main window)
    	+ whitespace-mode (several refinements)
        + mu4e (tweak mu4e-modeline-face for consistency)
    
    Miscellaneous:
    
    	+ Fix actual and potential problems with cursor faces that would
          distort the use of appropriate background and foreground colours.
          The documentation stipulates that the `cursor' face cannot be
          inherited by other faces, due to its peculiar nature of only
          recognising the background colour.
    	+ Add support for more bold constructs in code.  As with all such
          options, it is disabled by default, expecting the user to
          explicitly opt in.
    	+ Declare additional custom faces.  Only meant for internal use.
    	+ Subtle refinements to "active" colour values in both Modus
          Operandi and Modus Vivendi.  These mostly concern the mode line
          (with a few special exceptions), where emphasis has been placed on
          the need to provide greater contrast between accent values that
          can be used there.
    	+ Minor documentation refinements.
  • 0.3.0
    53b4fed8 · Update to version 0.3.0 ·
    Release version 0.3.0
    
    Overview of changes since 0.2.0 (2019-12-18):
    
    + Add support for the following packages:
    
      * apt-sources-list
      * calfw
      * counsel-css
      * counsel-notmuch
      * counsel-org-capture-string
      * cov
      * disk-usage
      * evil-visual-mark-mode
      * geiser
      * keycast
      * org-journal
      * org-noter
      * paren-face
      * powerline
      * vc
      * xah-elisp-mode
    
    + Explicitly style the following packages (these were already covered,
      in terms of the colours they used, but are now targeted directly):
    
      * calendar
      * counsel
      * cursor
      * package (M-x list-packages)
    
    + Minor tweaks to face groups:
    
      * dired
      * compile
    
    + Fixes and refinements:
    
      * Documentation strings will now inherit the option for slanted
        constructs (off by default -- see the README about all the user
        options).
      * Comment delimiters have the same styles as the body of the comment
        to avoid inconsistencies when the option for slanted constructs is
        enabled.
      * The line number that is displayed in the compile log is now
        correctly styled.
      * Removed duplicate entries for ivy-remote and added ivy-separator.
      * Ensure that the minibuffer prompt is always above the minimum
        contrast ratio of 7:1, by using a more appropriate shade of cyan.
      * Properly reference a couple of variables in Modus Vivendi.
    
    + Internal adjustments:
    
      * Decouple the core dired faces from those of external packages.
      * Same for org and org-recur.
    
    + Minor documentation updates.
  • 0.2.1
    Fix version in files.
    
    For the release notes, refer to version 0.2.0:
    
    https://gitlab.com/protesilaos/modus-themes/-/tags/0.2.0
  • 0.2.0
    Release version 0.2.0
    
    Overview of changes since 0.1.0 (2019-12-09):
    
    + Comprehensive review of `org-mode' faces.  The use of colour should
    now be more consistent with the semantics of each element.  These should
    also respond better to a variety of combinations, such as when the user
    has `hl-line-mode' enabled.  The agenda view is the greatest beneficiary
    of this review.
    
    + Make `mu4e' mode line faces consistent with other elements that may be
    placed on the mode line.
    
    + Make `gnus' header name/subject more distinct.
    
    + Several minor refinements to `ivy' and its extensions.
    
    + General usability refinements to `ace-window'.
    
    + Minor review of `elfeed' styles, in the interest of improving the
    contrast between the elements.
    
    + Add support for:
      + `persp-mode' (fork of the already supported `perspective')
      + `dashboard'
      + `evil-mode'
      + `evil-goggles'
      + `ruler-mode'
  • 0.1.0
    Version 0.1.0
    
    First stable release of Modus Operandi and Modus Vivendi.