diff options
Diffstat (limited to 'theme.el')
| -rw-r--r-- | theme.el | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/theme.el b/theme.el new file mode 100644 index 0000000..514687f --- /dev/null +++ b/theme.el @@ -0,0 +1,36 @@ +;;; theme.el -*- lexical-binding: t; -*- + +;; Utility to set light & dark theme that follows system +;; This has only been tested on Gnome 48 and depends on gsettings + +(use-package catppuccin-theme) + +(defun set-color-scheme () + (set-theme + (string-trim + (shell-command-to-string "gsettings get org.gnome.desktop.interface color-scheme")))) + +(defun set-theme (scheme) + (setq catppuccin-flavor (cond ((string-equal scheme "\'default\'") 'latte) + ((string-equal scheme "\'prefer-light\'") 'latte) + ((string-equal scheme "\'prefer-dark\'") 'mocha))) + (load-theme 'catppuccin :no-confirm)) + +(defun monitor-theme-changes () + "Listen to gnome theme changes and run set the correct flavor" + (let ((process (make-process + :name "gsettings-monitor" + :command '("gsettings" "monitor" "org.gnome.desktop.interface" "color-scheme") + :filter (lambda (_ output) + (when (string-match-p "color-scheme" output) + (set-color-scheme)))))) + ;; Kill on exit without user prompt + (set-process-query-on-exit-flag process nil))) + +;; Initialize settings +(set-color-scheme) +(monitor-theme-changes) + +(provide 'theme) + +;;; theme.el ends here |
