Subject: Re: bug#68766: 29.2; Windows dark/light mode changes does not reflect on Emacs Title bar/Scrollbar

From: "Rahul M. Juliato" <[email-masked]>
Date: Tue, 30 Jan 2024 16:57:26 -0300

Hello there again!

Regarding the side discussion Stefan and Eli were commenting on (and if I am
polluting this thread, please tell me where we can take this conversation).

I'd be more than happy if `auto-dark-mode` or some version
of it gets added to Emacs or some other more "official" package archive than
MELPA. I am also happy to help on any other matter I can contribute.

Just to be clear of what the package does:

- User sets a variable with "dark-mode" theme name;

- The same for "light-mode"

- Starts the minor mode either manually or on boot (auto-dark-mode)

- Emacs changes between these themes whenever system changes its dark/light
  mode internal state

- Also works with Doom Emacs and Spacemacs

Systems supported by the detection mechanism:

- macos: using `emacs-plus` (faster detection method) or any other emacs build
         falling back to osascript (a little slower detection method)

- gnu/linux: trough dbus with Gnome or gnome modules installed booting another
             WM, such as Sway or i3

- android: using `Termux`

- windows: through powershell or winreg

I am currently working on:

- nil themes: if the user wants to keep the original Emacs appearance,
              and/or set both themes to nil, and use only the detection
              mechanism with auto-dark post detection hooks to do
              something else. (Done, committed it today).

- macos:      emacs-mac build trough a faster detection method since someone
              pointed me there's a similar function to execute applescript
              than i've used for `emacs-plus` build.

- docs:       I plan to work shortly on a walk-trough install guide, some
              development tips and a FAQ

If you'd like to keep auto-dark as is today, I think we could add another
detection mechanism option such as *emacs-internal-auto-dark*, that may be fed
by some internally calculated status into a global elisp variable in which we
could use some event/or polling function to keep track of it during the
execution of the minor-mode.

The tricky part here would be assuring that all graphical toolkits in
all OSes can feed the OS system status to Emacs. On either Linux and macOS it
seems to be "automatically done"; Windows, as the bug originally described might
be harder.

Also the source code can be found here: https://github.com/LionyxML/auto-dark-emacs

Thank you for the opportunity to share it with you and discuss this matter.

Rahul M. Juliato