moeOS provides a coherent appearance out of the box. Fusing Adwaita’s beautiful design with popular graphical frameworks. While this works great in Light, things don’t automatically work out in Dark Mode. Most graphical frameworks need a manual switch to the dark theme, creating inconsistency. It becomes worse that the Shell itself does not come back to light when you flip back the switch, because the default mode is confusingly mixed.

In search of a coherent dark theme switching experience, it was clear that the demand of a daemon that automatically switches theme on color-scheme change was there. Which is why we decided to create autoColor for handling theme change as a user daemon. It bridges light and dark, spanning moeOS’s appearance across colour schemes.

autoColor uses a expandable configuration format, defining “plugins” and their light / dark theme variant. This creates a classed, consistent, abstracted and elegant way of defining options. You may define Qt theme switching like so:

1
2
3
4
5
[qt]
enable = true
[qt.theme]
light = "kvantum"
dark = "kvantum-dark"

and instantly realize that GTK theme switching is almost the same:

1
2
3
4
5
[gtk]
enable = true
[gtk.theme]
light = "Adw"
dark = "Adw-dark"

On top of simple, self-explaining configuration file, autoColor also incorporates modern XDG Desktop Portal APIs to detect color-scheme change in an efficient way instead of polling non-standard configuration. Once a change in scheme is confirmed, autoColor dispatches workers asynchronously to prevent stuck switching, making it work perfectly even if rapid scheme changes occur, like some of you do all the time.

That is the extent of this simple daemon. Enabling moeOS to provide efficient and consistent colour scheme switching experience.