aboutsummaryrefslogtreecommitdiff
path: root/.emacs.d/rul-lisp/packages/rul-themes.el
diff options
context:
space:
mode:
authorRaúl Benencia <id@rbenencia.name>2024-10-27 16:41:36 -0700
committerRaúl Benencia <id@rbenencia.name>2024-10-27 16:41:36 -0700
commitfba678fa1c21d35e0972c4036c0e209e155d07b6 (patch)
tree3c0e09d6714026f1868ef75fdf43012880ce91a2 /.emacs.d/rul-lisp/packages/rul-themes.el
parentef0b2b26aa1cabcf9f9c8328c86217f6dd957152 (diff)
emacs: mv themes.el to package rul-themes
Diffstat (limited to '.emacs.d/rul-lisp/packages/rul-themes.el')
-rw-r--r--.emacs.d/rul-lisp/packages/rul-themes.el50
1 files changed, 50 insertions, 0 deletions
diff --git a/.emacs.d/rul-lisp/packages/rul-themes.el b/.emacs.d/rul-lisp/packages/rul-themes.el
new file mode 100644
index 0000000..f3df8a8
--- /dev/null
+++ b/.emacs.d/rul-lisp/packages/rul-themes.el
@@ -0,0 +1,50 @@
+(use-package modus-themes :ensure t)
+(use-package ef-themes :ensure t)
+
+(setq
+ modus-themes-mode-line '(accented borderless padded)
+ modus-themes-region '(bg-only)
+ modus-themes-bold-constructs t
+ modus-themes-italic-constructs t
+ modus-themes-paren-match '(bold intense)
+ modus-themes-headings (quote ((1 . (rainbow variable-pitch 1.3))
+ (2 . (rainbow 1.1))
+ (t . (rainbow))))
+ modus-themes-org-blocks 'tinted)
+
+(use-package dbus)
+(defun mf/set-theme-from-dbus-value (value)
+ "Set the appropiate theme according to the color-scheme setting value."
+ (message "value is %s" value)
+ (if (equal value '1)
+ (progn (message "Switch to dark theme")
+ (modus-themes-select 'modus-vivendi))
+ (progn (message "Switch to light theme")
+ (modus-themes-select 'modus-operandi))))
+
+(defun mf/color-scheme-changed (path var value)
+ "DBus handler to detect when the color-scheme has changed."
+ (when (and (string-equal path "org.freedesktop.appearance")
+ (string-equal var "color-scheme"))
+ (mf/set-theme-from-dbus-value (car value))
+ ))
+
+;; Register for future changes
+(dbus-register-signal
+ :session "org.freedesktop.portal.Desktop"
+ "/org/freedesktop/portal/desktop" "org.freedesktop.portal.Settings"
+ "SettingChanged"
+ #'mf/color-scheme-changed)
+
+;; Request the current color-scheme
+(dbus-call-method-asynchronously
+ :session "org.freedesktop.portal.Desktop"
+ "/org/freedesktop/portal/desktop" "org.freedesktop.portal.Settings"
+ "Read"
+ (lambda (value) (mf/set-theme-from-dbus-value (caar value)))
+ "org.freedesktop.appearance"
+ "color-scheme"
+ )
+
+
+(provide 'rul-themes)
nihil fit ex nihilo