Add ef-arcadia theme

This commit is contained in:
Protesilaos 2026-05-20 22:33:58 +03:00
parent 9e87eab362
commit 3a15cdebaf
No known key found for this signature in database
GPG key ID: 99BD6459CD5CA3EA
3 changed files with 297 additions and 0 deletions

View file

@ -97,6 +97,59 @@ C1 and C2 are color values written in hexadecimal RGB."
| #e7d2bc | 5653 | 1.26 |
#+TBLFM: $2='(Δ $1 @1$1) :: $3='(Λ $1 @1$1);%.2f
* ef-arcadia
:PROPERTIES:
:CUSTOM_ID: h:5931bca9-4574-452c-9807-4c29f7ec0f7f
:END:
** Base colours
:PROPERTIES:
:CUSTOM_ID: h:45bde6a3-5448-421a-8344-61a6edc25127
:END:
| Name | | #d6e4d3 | #ced7c8 | #b0b7aa |
|----------------+---------+---------+---------+---------|
| fg-main | #40314e | 9.00 | 8.02 | 5.77 |
| fg-dim | #646170 | 4.56 | 4.07 | 2.93 |
| fg-alt | #3f5f5f | 5.28 | 4.71 | 3.38 |
| red | #882000 | 7.05 | 6.29 | 4.53 |
| red-warmer | #9a1500 | 6.41 | 5.71 | 4.11 |
| red-cooler | #800e38 | 7.80 | 6.96 | 5.01 |
| red-faint | #702f1f | 7.52 | 6.70 | 4.82 |
| green | #206020 | 5.77 | 5.15 | 3.70 |
| green-warmer | #3f7000 | 4.50 | 4.02 | 2.89 |
| green-cooler | #006e50 | 4.75 | 4.24 | 3.05 |
| green-faint | #125724 | 6.58 | 5.87 | 4.22 |
| yellow | #6b4500 | 6.42 | 5.73 | 4.12 |
| yellow-warmer | #743f00 | 6.48 | 5.78 | 4.16 |
| yellow-cooler | #775228 | 5.26 | 4.69 | 3.38 |
| yellow-faint | #6a5937 | 5.13 | 4.58 | 3.29 |
| blue | #113384 | 8.68 | 7.75 | 5.57 |
| blue-warmer | #3a40a0 | 6.57 | 5.86 | 4.21 |
| blue-cooler | #0020b9 | 8.34 | 7.43 | 5.35 |
| blue-faint | #302080 | 9.67 | 8.62 | 6.20 |
| magenta | #922e7f | 5.45 | 4.86 | 3.49 |
| magenta-warmer | #960f4f | 6.42 | 5.72 | 4.12 |
| magenta-cooler | #503094 | 7.25 | 6.47 | 4.65 |
| magenta-faint | #72366f | 6.43 | 5.73 | 4.13 |
| cyan | #125a7f | 5.69 | 5.07 | 3.65 |
| cyan-warmer | #2a5090 | 6.00 | 5.35 | 3.85 |
| cyan-cooler | #005070 | 6.68 | 5.95 | 4.28 |
| cyan-faint | #304650 | 7.51 | 6.70 | 4.82 |
#+TBLFM: $3='(Λ $2 @1$3);%.2f :: $4='(Λ $2 @1$4);%.2f :: $5='(Λ $2 @1$5);%.2f
** Distance and contrast between main backgrounds
:PROPERTIES:
:CUSTOM_ID: h:32f4eb28-f1d8-4eb6-8209-679a27de382d
:END:
# bg-main / bg-dim, bg-main / bg-alt
| #d6e4d3 | distance | contrast |
|---------+----------+----------|
| #ced7c8 | 1128 | 1.12 |
| #b0b7aa | 15973 | 1.56 |
#+TBLFM: $2='(Δ $1 @1$1) :: $3='(Λ $1 @1$1);%.2f
* ef-atlantis
:PROPERTIES:
:CUSTOM_ID: h:e5007c31-f79f-40b2-b9a6-c67423dba936

243
ef-arcadia-theme.el Normal file
View file

@ -0,0 +1,243 @@
;;; ef-arcadia-theme.el --- Legible light theme with verdant colors -*- lexical-binding:t -*-
;; Copyright (C) 2022-2026 Free Software Foundation, Inc.
;; Author: Protesilaos <info@protesilaos.com>
;; Maintainer: Protesilaos <info@protesilaos.com>
;; URL: https://github.com/protesilaos/ef-themes
;; Keywords: faces, theme, accessibility
;; This file is NOT part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;
;; The `ef-themes' are a collection of light and dark themes for GNU
;; Emacs whose goal is to provide colorful ("pretty") yet legible
;; options for users who want something with a bit more flair than the
;; `modus-themes' (also designed by me).
;;; Code:
(require 'ef-themes)
(defconst ef-arcadia-palette-partial
'((cursor "#495080")
(bg-main "#d6e4d3")
(bg-dim "#ced7c8")
(bg-alt "#b0b7aa")
(fg-main "#40314e")
(fg-dim "#646170")
(fg-alt "#3f5f5f")
(bg-active "#b0b7aa")
(bg-inactive "#c0c2b0")
(border "#a5aaaf")
(red "#882000")
(red-warmer "#9a1500")
(red-cooler "#800e38")
(red-faint "#702f1f")
(green "#206020")
(green-warmer "#3f7000")
(green-cooler "#006e50")
(green-faint "#125724")
(yellow "#6b4500")
(yellow-warmer "#743f00")
(yellow-cooler "#775228")
(yellow-faint "#6a5937")
(blue "#113384")
(blue-warmer "#3a40a0")
(blue-cooler "#0020b9")
(blue-faint "#302080")
(magenta "#922e7f")
(magenta-warmer "#960f4f")
(magenta-cooler "#503094")
(magenta-faint "#72366f")
(cyan "#125a7f")
(cyan-warmer "#2a5090")
(cyan-cooler "#005070")
(cyan-faint "#304650")
(bg-red-intense "#f08f88")
(bg-green-intense "#96df8f")
(bg-yellow-intense "#dfbf30")
(bg-blue-intense "#cfceff")
(bg-magenta-intense "#dfafff")
(bg-cyan-intense "#a0ddd0")
(bg-red-subtle "#efcabf")
(bg-green-subtle "#c3e6a0")
(bg-yellow-subtle "#efe07f")
(bg-blue-subtle "#c7dbe8")
(bg-magenta-subtle "#e3d0e7")
(bg-cyan-subtle "#bfe0d0")
(bg-added "#a0d7b0")
(bg-added-faint "#c0d7b2")
(bg-added-refine "#9ad590")
(fg-added "#005200")
(bg-changed "#e5e690")
(bg-changed-faint "#e5ddaf")
(bg-changed-refine "#edd482")
(fg-changed "#553d00")
(bg-removed "#f8c8a6")
(bg-removed-faint "#e0c9ac")
(bg-removed-refine "#f0aa90")
(fg-removed "#8f1013")
(bg-mode-line-active "#75b194")
(fg-mode-line-active "#155239")
(bg-completion "#d5c8af")
(bg-popup "#d0d3c1")
(bg-hover "#afbad0")
(bg-hover-secondary "#b5dfbf")
(bg-hl-line "#d0d0c0")
(bg-paren-match "#a09e84")
(bg-err "#e7c5a5") ; check with err
(bg-warning "#e8d89a") ; check with warning
(bg-info "#a4dfb6") ; check with info
(bg-region "#b3c5c0")))
(defconst ef-arcadia-palette-mappings-partial
'((err red-cooler)
(warning yellow-cooler)
(info green-cooler)
(modeline-err red)
(modeline-warning yellow-cooler)
(modeline-info cyan)
(fg-link magenta-cooler)
(fg-link-visited yellow-cooler)
(name blue)
(keybind cyan-cooler)
(identifier magenta-faint)
(fg-prompt green-cooler)
(builtin green-warmer)
(comment magenta-faint)
(constant magenta-cooler)
(fnname magenta)
(fnname-call magenta-faint)
(keyword cyan)
(preprocessor blue-warmer)
(docstring cyan-faint)
(string cyan-warmer)
(type cyan-cooler)
(variable green-cooler)
(variable-use green-faint)
(rx-backslash yellow) ; compare with `string'
(rx-construct red-warmer)
(accent-0 cyan)
(accent-1 magenta)
(accent-2 blue-cooler)
(accent-3 green)
(date-common green-cooler)
(date-deadline magenta)
(date-deadline-subtle magenta-faint)
(date-event cyan-faint)
(date-holiday red-cooler)
(date-now fg-main)
(date-range fg-alt)
(date-scheduled blue-warmer)
(date-scheduled-subtle cyan-faint)
(date-weekday cyan-cooler)
(date-weekend magenta)
(fg-prose-code green-warmer)
(prose-done green-cooler)
(fg-prose-macro blue-cooler)
(prose-metadata fg-dim)
(prose-metadata-value fg-alt)
(prose-table fg-alt)
(prose-table-formula info)
(prose-tag fg-alt)
(prose-todo magenta-warmer)
(fg-prose-verbatim magenta)
(mail-cite-0 cyan-warmer)
(mail-cite-1 green-cooler)
(mail-cite-2 green-warmer)
(mail-cite-3 magenta-cooler)
(mail-part cyan-cooler)
(mail-recipient cyan-warmer)
(mail-subject magenta)
(mail-other blue-warmer)
(bg-search-static bg-warning)
(bg-search-current bg-yellow-intense)
(bg-search-lazy bg-cyan-intense)
(bg-search-replace bg-red-intense)
(bg-search-rx-group-0 bg-magenta-intense)
(bg-search-rx-group-1 bg-green-intense)
(bg-search-rx-group-2 bg-red-subtle)
(bg-search-rx-group-3 bg-cyan-subtle)
(bg-space-err bg-yellow-intense)
(rainbow-0 cyan)
(rainbow-1 cyan-cooler)
(rainbow-2 magenta)
(rainbow-3 cyan-warmer)
(rainbow-4 green-warmer)
(rainbow-5 blue)
(rainbow-6 magenta-cooler)
(rainbow-7 green)
(rainbow-8 blue-warmer)))
(defcustom ef-arcadia-palette-overrides nil
"Overrides for `ef-arcadia-palette'.
Mirror the elements of the aforementioned palette, overriding
their value.
For overrides that are shared across all of the Ef themes,
refer to `ef-themes-common-palette-overrides'.
To preview the palette entries, use `ef-themes-preview-colors' or
`ef-themes-preview-colors-current' (read the documentation for
further details)."
:group 'ef-themes
:package-version '(ef-themes . "2.2.0")
:type '(repeat (list symbol (choice symbol string)))
:link '(info-link "(ef-themes) Palette overrides"))
(defconst ef-arcadia-palette
(modus-themes-generate-palette
ef-arcadia-palette-partial
nil
nil
(append ef-arcadia-palette-mappings-partial ef-themes-palette-common)))
;;;###theme-autoload
(modus-themes-theme
'ef-arcadia
'ef-themes
"Legible light theme with verdant colors."
'light
'ef-arcadia-palette
nil
'ef-arcadia-palette-overrides)
(provide 'ef-arcadia-theme)
;;; ef-arcadia-theme.el ends here

View file

@ -112,6 +112,7 @@ and Modus into a single group, enable `modus-themes-include-derivatives-mode'."
(defconst ef-themes-with-properties
'((ef-arbutus ef-themes "Legible light pink theme with red and green colors." light ef-arbutus-palette nil ef-arbutus-palette-overrides)
(ef-arcadia ef-themes "Legible light theme with verdant colors." light ef-arcadia-palette nil ef-arcadia-palette-overrides)
(ef-atlantis ef-themes "Legible dark theme with aquatic colors." dark ef-atlantis-palette nil ef-atlantis-palette-overrides)
(ef-autumn ef-themes "Legible dark brown-black theme with warm colors (red, yellow, green, teal)." dark ef-autumn-palette nil ef-autumn-palette-overrides)
(ef-bio ef-themes "Legible dark green-black theme with green, teal, blue, purple colors." dark ef-bio-palette nil ef-bio-palette-overrides)