Theme-switching for Emacs based on daytime
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:
Switching themes on time of day
;; 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))
circadian provides two hooks:
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
- Clone the circadian.el repository:
git clone email@example.com:guidoschmidt/circadian.el.git
cdinto the git project directory with
cd circadian.eland install dependencies via
- Run test with ert-runner:
cask exec ert-runner