Lambda-Emacs/lambda-themes

MOVED TO CODEBERG (https://codeberg.org/Lambda-Emacs/lambda-themes). This GitHub repo is an archived mirror.

Emacs Lisp

206

129 commits

updated May 30, 2026

See the code

README

* This project has moved to Codeberg
Active development, issues, and releases are now at https://codeberg.org/Lambda-Emacs/lambda-themes

This GitHub repository is a read-only archived mirror and is no longer updated.

-----

#+html: <a href="https://www.buymeacoffee.com/fxpy8fzgyxg" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 25px !important;width: 120px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>

* Aims of Theme

Lambda-themes is a collection of four higher and lower contrast light and dark
themes. The color palette is limited, and organized according to function and
salience. Here I largely agree with Nicolas Rougier that [[https://arxiv.org/pdf/2008.06030.pdf][attentional constraints]]
matter when thinking about the color palette. Lambda-themes tries to use color
in a way to provide for a reasonable compromise between aesthetics and
readability.

In general the theme aims to use as few highly distinct colors as possible
without crossing over into full "monochrome" territory. It also means that the
themes use various devices other than foreground face color to capture
meaningful differences in text. Different text weights are used throughout, as
are subtle differences in background coloring. Colored headlines are largely
avoided.

* Screenshots
#+BEGIN_HTML
<div>
<p>Splash</p>
<img src="./screenshots/light-splash.png" width=47.5%/>
<img src="./screenshots/dark-splash.png" width=47.5%/>
<img src="./screenshots/light-faded-splash.png" width=47.5%/>
<img src="./screenshots/dark-faded-splash.png" width=47.5%/>
</div>

<div>
<p>Colors</p>
<img src="./screenshots/colors-lambda-light.png"  width=47.5%/>
<img src="./screenshots/colors-lambda-dark.png" width=47.5%/>
<img src="./screenshots/colors-lambda-light-faded.png" width=47.5%/>
<img src="./screenshots/colors-lambda-dark-faded.png"  width=47.5%/>
</div>
#+END_HTML

Note that I use SF Mono for my font here, and [[https://github.com/Fanael/rainbow-delimiters][rainbow-delimiters]] to colorize
parens. The mode-line/status-line is from [[https://github.com/Lambda-Emacs/lambda-line][lambda-line]]. 

* Installation

Lambda-themes is not yet on MELPA. In the meantime to use this package you'll
have to clone or otherwise download the repo and put it into your load path.
Here's a basic way of setting it up using [[https://github.com/jwiegley/use-package][use-package]] and [[https://github.com/raxod502/straight.el][straight]].

#+begin_src emacs-lisp
  (use-package lambda-themes
    :straight (:type git :host github :repo "lambda-emacs/lambda-themes") 
    :custom
    (lambda-themes-set-italic-comments t)
    (lambda-themes-set-italic-keywords t)
    (lambda-themes-set-variable-pitch t) 
    :config
    ;; load preferred theme 
    (load-theme 'lambda-light))
#+end_src

* Options

See =M-x customize-group lambda-themes= for the full list of options.

- Set evil-cursor colors
- Set italic comments or keywords
- Set use of variable pitch in headlines, etc. 
- Set a custom color palette.

* Color Palettes

Lambda-themes exports the color palette for each theme variant as constants,
allowing you to use the theme colors in your own customizations. The following
palettes are available:

- =lambda-themes-dark-palette= - Dark theme colors
- =lambda-themes-dark-faded-palette= - Dark faded theme colors  
- =lambda-themes-light-palette= - Light theme colors
- =lambda-themes-light-faded-palette= - Light faded theme colors

Each palette is an association list with color names mapped to hex values:

#+begin_src emacs-lisp
  ;; Example: Get the background color from the dark theme
  (alist-get 'bg lambda-themes-dark-palette)  ; => "#141414"
  
  ;; Example: Use theme colors in your own face customization
  (set-face-attribute 'some-face nil
                      :foreground (alist-get 'focus lambda-themes-light-palette)
                      :background (alist-get 'highlight lambda-themes-light-palette))
  
  ;; Example: Create a custom face using theme colors
  (defface my-custom-face
    `((((background dark))
       :foreground ,(alist-get 'crucial lambda-themes-dark-palette)
       :background ,(alist-get 'ultralight lambda-themes-dark-palette))
      (((background light))
       :foreground ,(alist-get 'crucial lambda-themes-light-palette)
       :background ,(alist-get 'highlight lambda-themes-light-palette)))
    "My custom face using lambda-themes colors.")
#+end_src

Available color keys in each palette:
- =fg=, =bg= - Foreground and background colors
- =ultralight=, =highlight=, =lowlight= - Background variants
- =urgent=, =crucial=, =focus= - Accent colors
- =default=, =salient=, =faded= - Text variants
- =error=, =warning=, =success= - Status colors
- And more specialized colors for UI elements


* Recent Changes

** Fixed Issues
- *Issue #12*: Variable pitch setting now properly updates when changed. The
  =lambda-themes-set-variable-pitch= customization variable includes a custom
  setter that automatically reloads the active theme when its value changes,
  ensuring that disabling variable pitch takes effect immediately.

** New Features  
- *Issue #7*: Color palettes are now exported and documented for all theme
  variants, allowing users to access theme colors for custom face definitions
  and other customizations.

* Acknowledgments

- The colors for this theme have been inspired by [[https://github.com/rougier][Nicolas Rougier's]] work on
  [[https://github.com/rougier/elegant-emacs][elegant-emacs]] and [[https://github.com/rougier/nano-emacs][nano-emacs]], but has evolved with some ideas and colors
  borrowed from [[https://material.io/design/color/the-color-system.html#color-theme-creation][material colors]], [[https://github.com/bbatsov/solarized-emacs][solarized]] and [[https://github.com/arcticicestudio/nord-emacs][nord]], as well as color design
  aided by [[https://coolors.co][coolers.co]] and the classic [[https://www.c82.net/werner/][Werner's Nomenclature]]. The faded themes
  are variations on my [[https://github.com/mclear-tools/bespoke-themes][bespoke-themes]] design.
- The function for loading the specific color theme is taken from
  [[https://github.com/humanoid-colors/emacs-humanoid-themes][humanoid-themes]].

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

mclearc

123 commits

kvvba

4 commits

autrimpo

2 commits

Lambda-Emacs/lambda-themes

MOVED TO CODEBERG (https://codeberg.org/Lambda-Emacs/lambda-themes). This GitHub repo is an archived mirror.

Emacs Lisp

206

129 commits

updated May 30, 2026

See the code

README

* This project has moved to Codeberg
Active development, issues, and releases are now at https://codeberg.org/Lambda-Emacs/lambda-themes

This GitHub repository is a read-only archived mirror and is no longer updated.

-----

#+html: <a href="https://www.buymeacoffee.com/fxpy8fzgyxg" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 25px !important;width: 120px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>

* Aims of Theme

Lambda-themes is a collection of four higher and lower contrast light and dark
themes. The color palette is limited, and organized according to function and
salience. Here I largely agree with Nicolas Rougier that [[https://arxiv.org/pdf/2008.06030.pdf][attentional constraints]]
matter when thinking about the color palette. Lambda-themes tries to use color
in a way to provide for a reasonable compromise between aesthetics and
readability.

In general the theme aims to use as few highly distinct colors as possible
without crossing over into full "monochrome" territory. It also means that the
themes use various devices other than foreground face color to capture
meaningful differences in text. Different text weights are used throughout, as
are subtle differences in background coloring. Colored headlines are largely
avoided.

* Screenshots
#+BEGIN_HTML
<div>
<p>Splash</p>
<img src="./screenshots/light-splash.png" width=47.5%/>
<img src="./screenshots/dark-splash.png" width=47.5%/>
<img src="./screenshots/light-faded-splash.png" width=47.5%/>
<img src="./screenshots/dark-faded-splash.png" width=47.5%/>
</div>

<div>
<p>Colors</p>
<img src="./screenshots/colors-lambda-light.png"  width=47.5%/>
<img src="./screenshots/colors-lambda-dark.png" width=47.5%/>
<img src="./screenshots/colors-lambda-light-faded.png" width=47.5%/>
<img src="./screenshots/colors-lambda-dark-faded.png"  width=47.5%/>
</div>
#+END_HTML

Note that I use SF Mono for my font here, and [[https://github.com/Fanael/rainbow-delimiters][rainbow-delimiters]] to colorize
parens. The mode-line/status-line is from [[https://github.com/Lambda-Emacs/lambda-line][lambda-line]]. 

* Installation

Lambda-themes is not yet on MELPA. In the meantime to use this package you'll
have to clone or otherwise download the repo and put it into your load path.
Here's a basic way of setting it up using [[https://github.com/jwiegley/use-package][use-package]] and [[https://github.com/raxod502/straight.el][straight]].

#+begin_src emacs-lisp
  (use-package lambda-themes
    :straight (:type git :host github :repo "lambda-emacs/lambda-themes") 
    :custom
    (lambda-themes-set-italic-comments t)
    (lambda-themes-set-italic-keywords t)
    (lambda-themes-set-variable-pitch t) 
    :config
    ;; load preferred theme 
    (load-theme 'lambda-light))
#+end_src

* Options

See =M-x customize-group lambda-themes= for the full list of options.

- Set evil-cursor colors
- Set italic comments or keywords
- Set use of variable pitch in headlines, etc. 
- Set a custom color palette.

* Color Palettes

Lambda-themes exports the color palette for each theme variant as constants,
allowing you to use the theme colors in your own customizations. The following
palettes are available:

- =lambda-themes-dark-palette= - Dark theme colors
- =lambda-themes-dark-faded-palette= - Dark faded theme colors  
- =lambda-themes-light-palette= - Light theme colors
- =lambda-themes-light-faded-palette= - Light faded theme colors

Each palette is an association list with color names mapped to hex values:

#+begin_src emacs-lisp
  ;; Example: Get the background color from the dark theme
  (alist-get 'bg lambda-themes-dark-palette)  ; => "#141414"
  
  ;; Example: Use theme colors in your own face customization
  (set-face-attribute 'some-face nil
                      :foreground (alist-get 'focus lambda-themes-light-palette)
                      :background (alist-get 'highlight lambda-themes-light-palette))
  
  ;; Example: Create a custom face using theme colors
  (defface my-custom-face
    `((((background dark))
       :foreground ,(alist-get 'crucial lambda-themes-dark-palette)
       :background ,(alist-get 'ultralight lambda-themes-dark-palette))
      (((background light))
       :foreground ,(alist-get 'crucial lambda-themes-light-palette)
       :background ,(alist-get 'highlight lambda-themes-light-palette)))
    "My custom face using lambda-themes colors.")
#+end_src

Available color keys in each palette:
- =fg=, =bg= - Foreground and background colors
- =ultralight=, =highlight=, =lowlight= - Background variants
- =urgent=, =crucial=, =focus= - Accent colors
- =default=, =salient=, =faded= - Text variants
- =error=, =warning=, =success= - Status colors
- And more specialized colors for UI elements


* Recent Changes

** Fixed Issues
- *Issue #12*: Variable pitch setting now properly updates when changed. The
  =lambda-themes-set-variable-pitch= customization variable includes a custom
  setter that automatically reloads the active theme when its value changes,
  ensuring that disabling variable pitch takes effect immediately.

** New Features  
- *Issue #7*: Color palettes are now exported and documented for all theme
  variants, allowing users to access theme colors for custom face definitions
  and other customizations.

* Acknowledgments

- The colors for this theme have been inspired by [[https://github.com/rougier][Nicolas Rougier's]] work on
  [[https://github.com/rougier/elegant-emacs][elegant-emacs]] and [[https://github.com/rougier/nano-emacs][nano-emacs]], but has evolved with some ideas and colors
  borrowed from [[https://material.io/design/color/the-color-system.html#color-theme-creation][material colors]], [[https://github.com/bbatsov/solarized-emacs][solarized]] and [[https://github.com/arcticicestudio/nord-emacs][nord]], as well as color design
  aided by [[https://coolors.co][coolers.co]] and the classic [[https://www.c82.net/werner/][Werner's Nomenclature]]. The faded themes
  are variations on my [[https://github.com/mclear-tools/bespoke-themes][bespoke-themes]] design.
- The function for loading the specific color theme is taken from
  [[https://github.com/humanoid-colors/emacs-humanoid-themes][humanoid-themes]].

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

Contributors

mclearc

123 commits

kvvba

4 commits

autrimpo

2 commits

Languages

Emacs Lisp

100.0%