Circadian tries to help reducing eye strain that may arise from difference of your display brightness and the surrounding light.
Inspired by color temperature shifting tools and brightness adaption software like:
Install circadian.el with use-package or straight.el
To auto-switch a theme on a specific time, use time strings:
(use-package circadian
:ensure t
:config
(setq circadian-themes '(("8:00" . wombat)
("19:30" . adwaita)))
(circadian-setup))
To auto-switch a theme based on your current locations sunrise and sunset times:
- Make sure to set your latitude and longitude (Get them e.g. at
latlong.net):
(setq calendar-latitude 40.712776) (setq calendar-longitude -74.005974)
- Configure
circadian-themes
using the:sunset
and:sunset
(use-package circadian :ensure t :config (setq circadian-themes '((:sunrise . adwaita) (:sunset . wombat))) (circadian-setup))
Circadian.el can randomly select a theme from a given list, e.g here using doom-themes at sunset:
(use-package doom-themes)
(use-package circadian
:config
(setq circadian-themes '((:sunrise . doom-gruvbox-light)
(:sunset . (doom-dracula doom-gruvbox))))
(add-hook 'emacs-startup-hook #'circadian-setup)
(circadian-setup))
To use custom themes, install them from MELPA using e.g. use-package or straight.el.
Example usage featuring hemera-themes
and nyx-theme (with use-package). Make sure
to use :defer
keyword. Omitting it may lead to broken colors
(see issue 9):
;; Install additinal themes from melpa
;; make sure to use :defer keyword
(use-package hemera-theme :ensure :defer)
(use-package nyx-theme :ensure :defer)
By default circadian will not log any messages. however for development or just getting more information, one can enable a more verbose message log:
(setq circadian-verbose t)
circadian provides two hooks:
circadian-before-load-theme-hook
circadian-after-load-theme-hook
e.g. I like to override any themes cursor color to a very bright color via:
(add-hook 'circadian-after-load-theme-hook
#'(lambda (theme)
;; Line numbers appearance
(setq linum-format 'linum-format-func)
;; Cursor
(set-default 'cursor-type 'box)
(set-cursor-color "#F52503")))
- Is it possible to interpolate between themes/colors?
- Can brightness sensors (e.g. laptops) be queried to control dimming?
- Load themes by mode reddit.com/r/emacs
- Load themes by machine name reddit.com/r/emacs
- Load themes by wifi/location? reddit.com/r/emacs
Install Emacs cask environment. On macOS you
canr use homebrew with: brew install cask
.
- Clone the circadian.el repository:
git clone [email protected]:guidoschmidt/circadian.el.git
cd
into the git project directory withcd circadian.el
and install dependencies viacask
- Run test using
make test