circadian
Theme-switching for Emacs based on daytime
Conception
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:
Example usage
Switching themes on time of day
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)
(use-package circadian
:ensure t
:config
(setq circadian-themes '(("8:00" . hemera)
("19:30" . nyx)))
(circadian-setup))
Switching themes on sunrise & sunset
Be sure to set your latitude and longitude (Get them e.g. at latlong.net):
;; Install additinal themes from melpa
;; make sure to use :defer keyword
(use-package apropospriate-theme :ensure :defer)
(use-package nord-theme :ensure :defer)
(use-package circadian
:ensure t
:config
(setq calendar-latitude 49.0)
(setq calendar-longitude 8.5)
(setq circadian-themes '((:sunrise . apropospriate-light)
(:sunset . nord)))
(circadian-setup))
Hooks
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")))
Todos & Ideas
- 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
Development
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