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?
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!
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.
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.
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$