Interface et Session graphique

Script GNOME : Passer de Adwaita Light à Dark automatiquement

Table des matières

Introduction



Dans cet article, on va voir comment créer un petit script qui vérifie le thème GNOME actif, et qui, en fonction de l'heure passe du thème Clair (Light) au thème Sombre (Dark)

Il existe 2 possibilités : Exécuter des commandes avec cron OU un script avec une boucle infinie.
J'ai préféré ce deuxième cas pour éviter la modification dans le crontab si on ne veut plus du script et que le script ne se lance que si une session graphique est démarrée.

Mais vous pouvez opter pour une solution avec cron.

Le script



Je commente le script pour plus de clarté !

Code BASH :
#! /bin/bash
 
# Boucle infinie
while :
do
    # Récupération de l'heure et du thème actif
    heure=$(date +%H)
    theme=$(gsettings get org.gnome.desktop.interface gtk-theme | sed -e "s/'//g")
    #echo "H $heure - T $theme"
 
    # En fonction de l'heure :
    case $heure in
        # De 17h à 7h59 :
        17|18|19|20|21|22|23|00|01|02|03|04|05|06|07)
            # Test si thème retourné différent de Adwaita-dark
            if [ $theme != "Adwaita-dark" ]
            then
                echo "Definition du theme Adwaita-dark"
                # Envoi d'une notification à l'environnement de bureau
                notify-send -u low -t 2000 "Changement du thème" "Thème changé vers Adwaita-dark"
                # Définition du thème Adwaita-dark et du thème d'icône Papirus-dark
                gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
                gsettings set org.gnome.desktop.interface icon-theme "Papirus-Dark"
                # Replacement du style si on utilise qt5ct (désactivé car j'utilise qGnomePlatform)
                #sed -e 's/style=Adwaita/style=Adwaita-Dark/' -i ~/.config/qt5ct/qt5ct.conf
            fi
        ;;
        # Tous les autres cas (heure)
        *)
            if [ $theme != "Adwaita" ]
            # Test si thème retourné différent de Adwaita
            then
                echo "Definition du theme Adwaita"
                # Envoi d'une notification à l'environnement de bureau
                notify-send -u low -t 2000 "Changement du thème" "Thème changé vers Adwaita Light"
                # Définition du thème Adwaita et du thème d'icône Papirus
                gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
                gsettings set org.gnome.desktop.interface icon-theme "Papirus"
                # Replacement du style si on utilise qt5ct (désactivé car j'utilise qGnomePlatform)
                #sed -e 's/style=Adwaita-Dark/style=Adwaita/' -i ~/.config/qt5ct/qt5ct.conf
            fi
        ;;
    esac
 
    # On boucle 10 secondes
    sleep 10
done


Lancer le script au démarrage de la session



Dans /home/$USER/.config/autostart, on créé un fichier desktop (Exemple themeswitcher.desktop) qui va lancer le script /home/adrien/.adrien/themeswitcher.sh chez moi :

Code BASH :
[Desktop Entry]
Type=Application
Exec=/home/adrien/.adrien/themeswitcher.sh
Name[fr_FR]=Themeswitcher
Name=Themeswitcher
Comment[fr_FR]=
Comment=
Cette page a été vue 5064 fois