Come impostare in automatico il tema scuro su Xfce sfruttando Redshift e cambiare anche lo sfondo




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.

Questi post potrebbero interessarti

disqus

Licenza

Licenza Creative Commons

Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 4.0 Internazionale. Questo blog non rappresenta una testata giornalistica, in quanto viene aggiornato senza alcuna periodicità . Non può, pertanto, considerarsi un prodotto editoriale, ai sensi della legge n. 62 del 7/03/2001.

Disclaimer immagini Le immagini utilizzate in questo blog appartengono ai loro rispettivi autori e sono utilizzati per scopi educativi, personali e senza scopo di lucro. Ogni eventuale violazione del copyright non è intenzionale, ma se si riconosce un'immagine protetta da copyright, fatemelo sapere qui, e sarà lieto di aggiungere i credits o modificarla o rimuoverla.

Disclaimer images Images used on this blog belong to their respective authors and are used for educational, personal and no profit purposes. Any eventual copyright infringement is not intentional, but if you recognize a copyrighted image, please let me know here, and I'll happily provide to add the right credits or modify or remove it.