A global minor mode that warms Emacs colors for nighttime coding. Reduces blue light and slightly dims colors across all faces, working with any theme.
System-wide tools like wlsunset apply a blue light filter to your entire screen. warm-mode is useful when you only want the effect in Emacs, leaving other applications unaffected. It also works cross-platform, unlike most system-wide tools. You could also combine both for extra warmth.
Another alternative is to switch to a different theme at night, but warm-mode preserves your exact color scheme, just making it warmer. This makes it easier to adapt without losing familiarity with your theme.
Examples using warm-mode-warmth 0.25 and warm-mode-dim 0.9.
modus-vivendi
| Disabled | Enabled |
|---|---|
![]() |
![]() |
modus-operandi
| Disabled | Enabled |
|---|---|
![]() |
![]() |
creamy
| Disabled | Enabled |
|---|---|
![]() |
![]() |
Using use-package:
(use-package warm-mode
:ensure (:host github :repo "smallwat3r/emacs-warm-mode"))Or manually, clone this repository and add to your load-path:
(add-to-list 'load-path "/path/to/emacs-warm-mode")
(require 'warm-mode)Toggle warm mode:
M-x warm-mode
| Variable | Default | Description |
|---|---|---|
warm-mode-warmth |
0.2 | Intensity of warm shift (0.0 to 0.5) |
warm-mode-dim |
0.9 | Brightness multiplier (0.5 to 1.0) |
Example configuration:
(use-package warm-mode
:ensure (:host github :repo "smallwat3r/emacs-warm-mode")
:custom
(warm-mode-warmth 0.25)
(warm-mode-dim 0.9))-
Only foreground and background colors are transformed. Attributes like
:underlineor:boxusually inherit from foreground, so they are effectively warmed. However, if a theme explicitly sets a color for these attributes, that color will not be transformed. -
The mode is global and cannot be enabled per-frame.
-
The warming algorithm is simple and not a proper color temperature shift like f.lux or Redshift. Results may vary depending on your theme.
-
May not change text colors in terminal Emacs where color support is limited.





