In questa guida vedremo come istruire Redshift in modo tale da impostare in automatico lo stile dark del tema di Xfce quando arriva la sera oltre che cambiarne anche lo sfondo. La guida è stata realizzata da Andrea M., uno dei lettori del blog nonché membro della community Telegram di Marco's Box

Prima di procedere con la guida ecco i requisiti

  • Ovviamente Redshift installato e funzionante 
  • Dobbiamo utilizzare la sessione di Xfce su Xorg in quanto Redshift non funziona su Wayland 
  • Il tema scelto deve avere la variante dark, in questa guida è stato preso come riferimento Adwaita

In caso di problemi con il funzionamento di Redshift su Debian

Redshift per funzionare ha bisogno di sapere dove siamo tramite le coordinate di latitudine e longitudine, per fare questo si appoggia alla libreria geoclue2.
Su Debian 11 XFCE attualmente c'è qualche problema con l'installazione ed il dialogo tra i due software, il modo più rapido per risolvere è modificare la stringa di avvio automatico aggiungendo manualmente le coordinate della propria posizione. Ad esempio la stringa di avvio per Roma sarà: redshift-gtk -l manual -l 41.9:12.5

PS: se avete una soluzione al problema scrivete a Marco!


Comandi utilizzati:

è possibile modificare il tema e le icone da terminale in questo modo

xfconf-query -c xsettings -p /Net/ThemeName -s "nome-tema"
xfconf-query -c xsettings -p /Net/IconThemeName -s "nome-tema-icone"

Script per il cambio del tema:

Configuriamo Redshift in modo che automaticamente esegua i comandi precedenti col passaggio alla modalità giorno/notte. Dobbiamo prima creare uno script eseguibile nella cartella hooks del percorso di configurazione del software, da terminale eseguire:

mkdir -p ~/.config/redshift/hooks
cd ~/.config/redshift/hooks
touch script.sh
chmod +x script.sh

Una volta fatto modifichiamo opportunamente il file di configurazione con il nostro editor di testo preferito nel seguente modo:

#!/bin/sh

run_at_night() {
    xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita-dark"
}

run_at_day() {
    xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita"
}

if [ "$1" = period-changed ]; then
	case $3 in
		night)
            run_at_night
			;;
		transition)
			;;
		daytime)
            run_at_day
			;;
	esac
fi

Possiamo cambiare anche sfondo ed icone

Per prima cosa è necessario individuare nelle impostazioni di Xfce le informazioni relative al nostro schermo. Per farlo eseguiamo nel terminale:

xfconf-query -c xfce4-desktop -l

in questo esempio il percorso dello schermo sarà: /backdrop/screen0/monitoreDP-1
e quello che verrà utilizzato per il comando diventerà: /backdrop/screen0/monitoreDP-1/workspace0/last-image 

È possibile assegnare diversi sfondi agli schermi collegati ed ai vari spazi di lavoro,
per comodità si è utilizzato solo uno schermo ed è stata impostata la regola di utilizzare lo stesso sfondo su tutti i desktop virtuali.
Per farlo basta aggiungere alle funzioni run_at_day/run_at_night i seguenti comandi per il giorno, la notte e se vogliamo anche per il tramonto:

  • xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/percorso_dello_sfondo/immagine_giorno"
  • xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/percorso_dello_sfondo/immagine_notte"
  • xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/percorso_dello_sfondo/immagine_tramonto"

Ecco qui come si presenterà lo script completo, i soli valori da modificare sono quelli tra le virgolette relativi ai nomi dei temi ed il percorso delle immagini:
#!/bin/sh

run_at_night() {
    xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita-dark"
    xfconf-query -c xsettings -p /Net/Icon ThemeName -s "tema-icone-dark"
    xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/percorso_dello_sfondo/immagine_notte"
}

run_at_day() {
    xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita"
    xfconf-query -c xsettings -p /Net/Icon ThemeName -s "tema-icone"
    xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/percorso_dello_sfondo/immagine_giorno"
}

if [ "$1" = period-changed ]; then
	case $3 in
		night)
            run_at_night
			;;
		transition)
            xfconf-query -c xsettings -p /Net/ThemeName -s "Adwaita"
            xfconf-query -c xsettings -p /Net/Icon ThemeName -s "tema-icone"
            xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitoreDP-1/workspace0/last-image -s "/percorso_dello_sfondo/immagine_tramonto"
			;;
		daytime)
            run_at_day
			;;
	esac
fi
A seconda delle nostre necessità possiamo aggiungere altri comandi alle funzioni oppure possiamo inserire altri script nella cartella hooks.
Buon divertimento.