A warm, wood-tone colour theme that aims to be gentle on the eyes.
Not sure if I can call this my design philosophy, but I have roughly followed these rules:
- Warm wood
- Use warm, wood-tone colour whenever possible
- Low-saturation low-blue
- Avoid high-saturation colours, especially blue
- I believe this caused eye strain
- Practical
- break the rules sparingly if it does not work practically
- e.g. use high-saturation red and green for highlights
- e.g. allow blue for error or warning related contents
This theme suits best to people who need to stare at the screen for long periods. My testimony is that this seems to have fixed my eye strains.
Since I am only using Emacs in the terminal, some GUI elements may not be themed properly. I am also abusing face inheritance so some face will stick when switching from another theme. The intended usage is therefore loading on startup and not changing theme.
Requires Github - jasonm23/autothemer, if you use straight.el do:
(use-package autothemer
:straight (autothemer
:type git
:host github
:repo "jasonm23/autothemer"))
(use-package wood-theme
:straight (wood-theme
:type git
:host github
:repo "ed9w2in6/wood-theme")
:after autothemer
:init
;; Change these accordingly, MUST be evaluated before load-theme
(setq wood-tab-line-box-line-width (if (display-graphic-p)
(/ (max 2 (line-pixel-height)) 2)
-1)
wood-default-face-height 180
wood-default-face-font-family "VictorMono Nerd Font Mono"
wood-variable-pitch-face-font-family "Source Sans Pro"
)
:config (load-theme 'wood t))As of [2024-05-05 Sun], the only alternative is by manual installtion.
You’ll have to clone this repo, put the relavent files to your Emacs
home directory, or add the path the cloned repo to custom-theme-load-path.
Add the content of spotify-player/wood-theme.toml
to your theme.toml file.
Your theme.toml file can be found at ~/.config/spotify-player/
As of [2025-04-27 Sun]:
Download kitty/Wood.conf to the ~/.config/kitty/themes/ directory.
Then use the kitten themes command to choose the Wood theme.
Alternatively, at a new line in your config file (default at ~/.config/kitty/kitty.conf)
write include themes/Wood.conf.
As this was for personal use, the work flow is kept simple and manual:
- After commit, freeze all changes for at least 1 week
- unless breaking issue
- e.g. error (i.e. syntax), invisible char (i.e. logic)
- annoyance (i.e. design) does NOT count as breaking
- unless breaking issue
- Record all annoyance in this document
- Open for improvment after 1 week freeze
Nothing for now. ([2025-04-21 Mon])
- choose some modes for face review, ensure meaning are consistent
- e.g. always gray when comment related
- maybe use some orange / brown for some faces? Seems too few oranges.
- [2023-08-18 Fri]
- actually I can’t pin point any that annoys me.
- add theme for kitty
- changes to palette upon feedback from reddit:
wood-rosewood-rose-lightwood-lilacwood-iriswood-iris-light
- redo with https://github.com/jasonm23/autothemer
- benefit is that common color uses same colour name.
- pallete generation
- auto generation for missing component using colour distance
- easier maintenance and customisation
- variance definition (e.g. wood-light)
- custom
marginalia-keyface for helm-like keybind hint face
- migrate
tab-linestyling to the theme - migrate
aw-leading-char-facestyling to the theme jupyter-replrelated styling, make them follow my ANSI theme
- change
mode-linecolor to distinguish frommode-line-emphais - other mode line related styling
- style
header-line
- Better font definitions (fixed-pitch vs variable-pitch)
- Better org mode appearance
- These helped making
org-presentmore usable (it actually look good now)
- These helped making
- set ANSI colour (e.g. ugly blue for jupyter(ipython) help)
- highlight colour (e.g. on match for isearch) should have more contrast to be easily visible


