web-dev-qa-db-fra.com

Automatiser la commande des icônes du lanceur d'unité

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?

2
myol

Introduction

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.

Usage:

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.

Démo

Avant d'exécuter le script

enter image description here

Après avoir exécuté le script

enter image description here

Notez que l'ordre est exactement le même que les entrées apparaissent dans le fichier d'entrée

Source de script

#!/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)
2