web-dev-qa-db-fra.com

Comment puis-je changer le thème du pointeur de la souris à partir de la ligne de commande?

Dans le passé, j'ai déjà essayé d'utiliser Unity Tweak Tool pour changer le thème du pointeur de la souris. Cependant, je veux aussi le changer depuis mon terminal. Comment puis-je faire cela sur Ubuntu 16.04?

4
Vitor Abella

Comment les réglages fonctionnent sous le capot

Le profil de chaque utilisateur est géré par la base de données DConf. Vous pouvez en savoir plus à ce sujet. Ma réponse à cette question est la suivante: ne application basée sur une interface graphique exécute-t-elle des commandes Shell en arrière-plan? Chaque paramètre particulier possède un schéma réglage - associé.

Voyons quel paramètre Unity Tweak Tool modifie lorsque nous changeons le thème du curseur, en exécutant dconf watch / puis en modifiant le thème du pointeur dans UTT:

$ dconf watch /
/org/gnome/desktop/interface/cursor-theme
  'crystalblue_classic'

Génial, nous savons maintenant quel schéma et quelle clé pour changer!

L'outil gsettings - l'ami de tweaker

Heureusement pour nous, il existe un utilitaire de ligne de commande appelé gsettings, que nous pouvons utiliser pour modifier les paramètres dont nous avons besoin. Cet outil est souvent utilisé dans les scripts Shell. Pour d'autres types de langages tels que Python ou C, il existe des bibliothèques GSettings qui nous permettent de faire les mêmes choses. Ici, nous voulons spécifiquement utiliser gsettings car il peut être utilisé en ligne de commande.

La différence à noter est que, contrairement à dconf, les schémas sont séparés par des points, plutôt que par des barres obliques. Ainsi, gsettings comprendrait le schéma org.gnome.desktop.interface.

Voici ce que nous pouvons faire:

$ gsettings set  org.gnome.desktop.interface cursor-theme 'redglass'

Notez que dans cet exemple, j’utilise Redglass comme l’un des thèmes que j’ai installés, mais que vous n’aurez peut-être pas, utilisez donc certaines des valeurs que vous avez répertoriées dans UTT.

Recherche des valeurs du schéma

Généralement, pour trouver toutes les options possibles sur le schéma gsettings, vous devez utiliser l'option range:

$ gsettings range com.canonical.Unity.Launcher launcher-position                                                                                                                        
enum
'Left'
'Bottom'

Malheureusement, le schéma que nous devons utiliser pour modifier le thème du curseur n'a pas de valeurs enum:

$ gsettings range  org.gnome.desktop.interface cursor-theme                                                                                                                             
type s

Ainsi, alternativement, ce que vous pouvez faire (et ce que UTT fait apparemment) est de lister tous les répertoires du dossier /usr/share/icons qui ont le dossier cursors comme suit:

$ ls -d /usr/share/icons/*/cursors                                                                                                                                                      
/usr/share/icons/crystalblue_classic/cursors/      /usr/share/icons/crystalgray_nonanim/cursors/       /usr/share/icons/crystalwhiteleft_nonanim/cursors/

... more output here

Et puis il suffit de sélectionner le nom du dossier de chaque thème comme nouvelle valeur.

Aller plus loin - créer un script Shell

Bien sûr, nous ne voulons pas traiter plusieurs commandes encore et encore. Simplifions plutôt les choses via un script Shell, dans ce cas particulier - un script bash (parce que nous souhaitons utiliser des fonctionnalités avancées telles que les tableaux et que nous ne cherchons pas à être transférables vers des systèmes autres qu'Ubuntu. ) qui listera les thèmes disponibles et nous permettra de sélectionner celui que nous voulons.

#!/usr/bin/env bash

fifo="/tmp/themes_script.fifo"
mkfifo "$fifo"

declare -a themes
find /usr/share/icons -maxdepth 2 -type d  -name "cursors" -printf "%P\n" > "$fifo" &

while IFS= read -r line
do
        themes+=("${line%/*}")
done < "$fifo"
rm "$fifo"

echo ">>> Please enter the number of new theme for cursor"
select opt in "${themes[@]}"
do
     if [ $REPLY -le ${#themes} ]
     then
          gsettings set org.gnome.desktop.interface cursor-theme  \'$opt\' &&
          exit 0
     else
          echo "Improper argument" > /dev/stderr
          exit 1
     fi
done

Essai:

bash-4.3$ ./change_cursor_theme.sh 
>>> Please enter the number of new theme for cursor
 1) crystalblueleft_nonanim   14) crystalgray_nonanim
 2) crystalgreenleft_classic  15) DMZ-Black
 3) crystalwhite_nonanim      16) crystalgrayleft
 4) handhelds             17) crystalblueleft_classic
 5) crystalgreen          18) Deepin-sapphire
 6) whiteglass            19) crystalwhiteleft
 7) crystalgray           20) crystalgreenleft_nonanim
 8) crystalwhiteleft_nonanim  21) crystalgrayleft_nonanim
 9) redglass              22) DMZ-White
10) crystalblue           23) crystalblueleft
11) crystalwhite          24) crystalblue_nonanim
12) crystalblue_classic       25) crystalgreenleft
13) crystalgreen_nonanim      26) crystalgreen_classic
#? 9
bash-4.3$ 
3