all repos — nixfiles @ 935dcd1a332ce20f10ffe5aecc0152e9f2491058

System and user configuration, managed by nix and home-manager

emacs: monitor macOS system plist to switch dark/light mode

Alan Pearce
commit

935dcd1a332ce20f10ffe5aecc0152e9f2491058

parent

52e558a1cf2c83b48a798816697788906fdd8b51

1 file changed, 26 insertions(+), 6 deletions(-)

changed files
M user/settings/emacs/init.eluser/settings/emacs/init.el
@@ -97,12 +97,32 @@ (disable-theme dark-mode-theme)
(enable-theme light-mode-theme))) (modify-all-frames-parameters '((ns-appearance mode)))) - (my/switch-theme-variant (if (and (eq system-type 'darwin) - (string-equal - "Dark" - (string-trim-right (shell-command-to-string "defaults read -g AppleInterfaceStyle")))) - 'dark - 'light))) + (defun my/system-appearance () + (if (and (eq system-type 'darwin) + (string-equal + "Dark" + (string-trim-right (shell-command-to-string "defaults read -g AppleInterfaceStyle")))) + 'dark + 'light)) + + (defun my/match-theme-system-appearance () + (interactive) + (my/switch-theme-variant (my/system-appearance))) + + (my/switch-theme-variant (my/system-appearance)) + + (use-package kqueue + :if (eq window-system 'ns) + :config (progn + (defun my/gp-notify-callback (event) + (let* ((filename (elt event 2)) + (basename (file-name-nondirectory filename))) + (when (string-equal basename ".GlobalPreferences.plist") + (my/match-theme-system-appearance)))) + (setq my/kq-watcher-global-preferences + (kqueue-add-watch (expand-file-name "~/Library/Preferences/") + '(write) + #'my/gp-notify-callback))))) (use-package exec-path-from-shell :if (eq system-type 'darwin)