MyEmacsNixDarkMode

This might not be anything specific to Emacs, but running it from Home-Manager on the DE being part of my NixOS configuration, I found it not react to Cosmic DE switching light/dark theme.

It turned out I have to toggle its dark mode separately from within Emacs with

(shell-command-to-string
 "gsettings set org.gnome.desktop.interface color-scheme prefer-dark 2>&1")

I thus ended up with a Tools menu item

(require 'easymenu)

(defun my-toggle-gtk-dark-mode ()
  "Toggle the desktop preference used by Emacs's GTK widgets."
  (interactive)
  (let* ((current
          (car (process-lines
                "gsettings" "get"
                "org.gnome.desktop.interface" "color-scheme")))
         (next (if (equal current "'prefer-dark'")
                   "prefer-light"
                 "prefer-dark")))
    (process-lines "gsettings" "set"
                   "org.gnome.desktop.interface" "color-scheme" next)
    (message "GTK preference: %s" next)))

(easy-menu-add-item
 global-map '("menu-bar" "Tools")
 ["Toggle GTK dark/light" my-toggle-gtk-dark-mode t])

October, 2026.