Automatically toggle your desktop’s color scheme between light and dark, switch backgrounds and run custom commands at sunset and sunrise.
Visit the extension page on extensions.gnome.org and enable the extension.
You will need these tools:
meson
gettext
glib-compile-schemas
glib-compile-resources
Clone the repository and enter the directory:
git clone https://gitlab.com/rmnvgr/nightthemeswitcher-gnome-shell-extension.git && cd nightthemeswitcher-gnome-shell-extension
Build and install using meson
:
# System-wide installation
meson setup builddir && meson install -C builddir
# User installation
meson setup builddir --prefix=~/.local && meson install -C builddir
Restart your GNOME session and enable the extension:
gnome-extensions enable nightthemeswitcher@romainvigier.fr
You're welcome to contribute to the code or the translations! See CONTRIBUTING.md.
Like GNOME's built-in dark mode, the extension switches the standard freedesktop.org color scheme preference. Older applications might not follow this preference.
It is possible to force a GTK theme in the extension preferences, but please note that this can visually break applications. It is better to ask the developers of the applications to support the standard preference.
Unfortunately, Ubuntu ships heavily modified GNOME components to implement some of its features, like accent colors. Because it does so in a very hacky way instead of working with upstream and other desktop projects on a proper solution, it conflicts with anything that deals with the color scheme and themes, and results in a broken experience with the extension.
As the issue is in Ubuntu, and because I don't have the energy nor the will to work around the consequences of their decisions, unfortunately Ubuntu is not supported until it provides a standard GNOME environment.
There's a hidden setting to configure the offset (in hours) applied to the calculated sunrise and sunset times, you can change it with the gsettings
command:
gsettings --schemadir ~/.local/share/gnome-shell/extensions/nightthemeswitcher@romainvigier.fr/schemas/ set org.gnome.shell.extensions.nightthemeswitcher.time offset $DESIRED_OFFSET
If you know your coordinates, you can enter them in a hidden setting, and the extension will use them to calculate the sunrise and sunset times. You can set it with the gsettings
command:
gsettings --schemadir ~/.local/share/gnome-shell/extensions/nightthemeswitcher@romainvigier.fr/schemas/ set org.gnome.shell.extensions.nightthemeswitcher.time location '($LATITUDE,$LONGITUDE)'