Skip to content
  • Protesilaos Stavrou's avatar
    Add Emacs theme switch to the T.E.M.P.U.S. script · 9ee6a047
    Protesilaos Stavrou authored
    I just need to provide some background information on this, in order to
    avoid confusion.
    
    Tempus themes (Vim, terminals, GTK editors)
    -------------------------------------------
    
    The Tempus themes project covers Vim, terminal emulators, and some GTK
    text editors (including GNOME Builder).  Its overarching objective is
    that of a minimum contrast ration of 4.5:1 (WCAG AA) between the
    background and foreground values.  Other tools like Tmux and Dunst all
    make use of its colour values.
    
    Because of their roots in terminal emulators, the Tempus themes use the
    16-colour palette you find on such tools.  Refer to the portal page for
    more on the matter.[1] The project is in a stable state.
    
    Modus themes ("just" GNU Emacs)
    -------------------------------
    
    Whereas the Modus themes are designed specifically for Emacs.  They are
    much more complex and consist of a wider colour palette that covers the
    extensive array of interfaces inside of Emacs.  Their principal
    objective is similar to that of the afore-mentioned project: a minimum
    contrast ratio of 7:1 (WCAG AAA).
    
    Some items in the Tempus themes collection also conform with this higher
    standard, but the project as a whole only guarantees the "AA" score.
    
    Check the git source of the Modus themes.[2] They are under heavy
    development.
    
    Project history
    ---------------
    
    The Tempus themes came first (2017) and are a core part of my custom
    desktop session since its early days.  Every relevant interface was
    built around them.
    
    As of commit ec885d16 I am in the process of gradually incorporating my
    new Emacs setup in my dotfiles.[3]  This means lots and lots of breaking
    changes and necessary adjustments.
    
    FEAR NOT: my free/libre book "Prot's Dots For Debian" (PDFD) still
    works,[4] because it uses a snapshot of my dotfiles that contains code
    before the commit I just referenced.[5] PDFD guides you through the
    process of reproducing my custom desktop session on Debian 10 'buster'.
    I recently updated it by adding an Annex on the topic of multi-monitor
    support in BSPWM (and there have been other minor updates since its
    official release in early July 2019).
    
    The T.E.M.P.U.S. script (tempus)
    --------------------------------
    
    Now the part that may cause confusion: the TEMPUS script performs a live
    theme switch across my entire custom desktop session.  In the past, this
    meant using one of the items in the Tempus themes collection to apply
    the new colour values.  I thus gave the script a funny and convenient
    backronym: Themes Every Meticulous Person Ultimately Seeks (TEMPUS).
    
    Recall that the word "tempus" is Latin for "time" because the first
    items of the collection were named after the four seasons:
    
    + tempus autumn
    + tempus spring
    + tempus summer
    + tempus winter
    
    At any rate, and jokes notwithstanding, the backronym had the technical
    upside of offering a straightforward syntax for performing a theme
    change via a CLI prompt: you just had to type `tempus' followed by the
    unique identifier of an item from the Tempus themes collection.  For
    example, to switch to Tempus winter, you would run `tempus winter'.
    
    The other benefit was a more consistent naming convention for the
    `dmenu' front-end that offers an interactive medium for selecting an
    item from the collection: `tempusmenu'.
    
    I think that the script's name is okay, because it still uses the themes
    it was originally designed for.  Besides, I have no intention to remove
    support for the Tempus themes.  The project is still relevant.
    
    What I am doing with this commit, is just including a small function
    that performs a "theme switch" for yet another component of my custom
    desktop session: Emacs.  The fact that Emacs internally uses another
    project of mine (the Modus themes) should not really matter.  The
    end-user effect is exactly the same as before.
    
    I am just writing all this to make things clear and to refer to the
    present commit in case someone asks.
    
    [1]: https://gitlab.com/protesilaos/tempus-themes
    [2]: https://gitlab.com/protesilaos/modus-themes
    [3]: https://protesilaos.com/dotemacs
    [4]: https://protesilaos.com/pdfd
    [5]: https://gitlab.com/protesilaos/dotfiles
    9ee6a047