J'ai écrit un script d'installation qui automatise mon processus d'installation. Ensuite, je voudrais qu'il réorganise/ajoute/supprime les icônes du lanceur d'unité.
En utilisant dconf watch /
Je peux voir la sortie lorsque je réorganise les icônes. Existe-t-il un moyen en ligne de commande pour le faire - éventuellement avec gsettings
?
Le simple script ci-dessous permet de prendre un fichier en argument et définit le lanceur pour que tous les raccourcis vers les programmes apparaissent dans le fichier (un par ligne).
L'idée de base est que les icônes du lanceur sont en fait des liens vers .desktop
fichiers (où qu'ils apparaissent) et la méthode canonique pour définir les éléments du lanceur consiste à exécuter la commande suivante:
gsettings set com.canonical.Unity.Launcher favorites "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop; ]"
Cela peut devenir fastidieux si vous souhaitez ajouter de nombreux éléments et les devis peuvent devenir pénibles. On peut toujours ouvrir le programme souhaité et cliquer avec le bouton droit sur l'icône pour invoquer l'option "Verrouiller le lanceur", mais cela n'est pas non plus pratique lorsque vous avez affaire à une grande quantité d'articles.
L'approche adoptée ici est de simplement lire un fichier, avec 1 fois par ligne, de construire le texte de la commande et de l'exécuter. Ce n'est pas différent de l'exécution de gsettings set
commande ci-dessus, sauf que le travail est fait pour vous.
Pour exécuter le script, enregistrez-le dans un fichier, rendez-le exécutable avec chmod +x /path/to/script
et exécuter en tant que
python /path/to/script /path/to/file
Le fichier d'entrée doit contenir le chemin d'accès complet aux éléments que vous souhaitez ajouter au lanceur, tels que /usr/share/applications/firefox.desktop
, mais ce n'est pas nécessaire, une ligne avec firefox.desktop
est OK aussi.
Avant d'exécuter le script
Après avoir exécuté le script
Notez que l'ordre est exactement le même que les entrées apparaissent dans le fichier d'entrée
#!/usr/bin/env python
# Author: Serg Kolo
# Date: April 22, 2016
# Purpose: programmatically set Unity launcher items
# by reading a file
# Written for: http://askubuntu.com/q/760895/295286
# Tested on: Ubuntu 14.04 LTS
import sys
import subprocess
command="""gsettings set com.canonical.Unity.Launcher favorites """
def run_command(cmd):
p = subprocess.Popen(cmd, Shell=True, stdout=subprocess.PIPE)
output = p.stdout.read().strip()
return output
items=""
with open(sys.argv[1]) as file:
for line in file:
temp = "'" + line.strip().split('/')[-1] + "'"
items = ",".join([items,temp])
items = '"[ ' + items[1:] + ' ]"'
print run_command(command + " " + items)