Kleurenschema automatisch schakelen op GNOME 42

Geschreven door Sebastiaan Franken op 15-03-2022 14:12 met 326 woorden en een leestijd van 2 minuten. Getagged met Fedora , Algemene handleiding

Met de introductie van GNOME 42 is het mogelijk geworden om systeembreed te schakelen tussen een lichte en een donkere weergave. Dit is erg fijn voor de ogen, vooral ’s avonds. Na dit een tijdje geprobeerd te hebben wilde ik kijken of het mogelijk was het systeem automatisch te laten schakelen tussen lichte en donkere weergaven gebaseerd op de tijd.

Na wat uitzoekwerk bleek dit, met dank aan systemd, goed te doen.

Maak een systemd unit

Om te beginnen maak je een nieuwe systemd unit hiervoor aan. Deze unit doet al het werk en zal door de twee timers worden aangeroepen. Maak een nieuwe unit in ~/.config/systemd/user/color-scheme-toggler@.service met de volgende inhoud:

1
2
3
4
5
6
7
8
9
[Unit]
Description=Toggle colorscheme

[Service]
Type=simple
ExecStart=/usr/bin/dconf write /org/gnome/desktop/interface/color-scheme "'%i'"

[Install]
WantedBy=default.target

Nadat je dit gedaan hebt is het een kwestie van de twee eerder genoemde timers aan te maken. Eentje om van licht naar donker te schakelen om 18:00, en eentje om terug te schakelen van donker naar licht om 08:00.

Licht naar donker timer

Maak een nieuwe timer in ~/.config/systemd/user/toggle-darkmode.timer met de volgende inhoud:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Unit]
Description=Toggle UI from light to dark mode

[Timer]
OnCalendar=*-*-* 18:00:00
Persistent=true
Unit=color-scheme-toggler@prefer-dark.service

[Install]
WantedBy=timers.target

Donker naar licht timer

Maak een nieuwe timer in ~/.config/systemd/user/toggle-lightmode.timer met de volgende inhoud:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Unit]
Description=Toggle UI from dark to light mode

[Timer]
OnCalendar=*-*-* 08:00:00
Persistent=true
Unit=color-scheme-toggler@default.service

[Install]
WantedBy=timers.target

Activeren beide timers

Nadat je de twee timers hebt aangemaakt is het een kwestie deze te activeren. Om dat te doen gebruik je de volgende commando’s:

1
2
3
systemctl --user daemon-reload
systemctl --user enable --now toggle-darkmode.timer
systemctl --user enable --now toggle-lightmode.timer

Dit activeert en start beide timers gelijk. Als alles goed is gegaan draaien ze nu ook allebei, dat kun je testen door te kijken of ze in de output van $ systemctl --user list-timers staan.