Automatisieren Sie die Symbolreihenfolge des Unity Launchers

Automatisieren Sie die Symbolreihenfolge des Unity Launchers

Ich habe ein Installationsskript geschrieben, das meinen Installationsprozess automatisiert. Anschließend möchte ich, dass es die Symbole im Unity Launcher neu anordnet/hinzufügt/entfernt.

Mit dconf watch /kann ich die Ausgabe sehen, während ich die Symbole neu anordne. Gibt es dafür eine Befehlszeilenmethode – möglicherweise mit gsettings?

Antwort1

Einführung

Das folgende einfache Skript ermöglicht die Verwendung einer Datei als Argument und stellt den Launcher so ein, dass alle in der Datei angezeigten Programmverknüpfungen (eine pro Zeile) angezeigt werden.

Die Grundidee besteht darin, dass die Launcher-Symbole eigentlich Links zu .desktopDateien sind (wo auch immer sie erscheinen), und die gängige Methode zum Festlegen der Launcher-Elemente besteht darin, den folgenden Befehl auszuführen:

gsettings set com.canonical.Unity.Launcher favorites  "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop;  ]"

Dies kann mühsam werden, wenn Sie viele Elemente hinzufügen möchten, und das Angeben von Zitaten kann mühsam werden. Sie können immer ein gewünschtes Programm öffnen und mit der rechten Maustaste auf das Symbol klicken, um die Option „An Launcher binden“ aufzurufen. Dies ist jedoch auch nicht praktisch, wenn Sie mit einer großen Anzahl von Elementen arbeiten.

Der hier gewählte Ansatz besteht darin, einfach eine Datei zu lesen, einmal pro Zeile, den Befehlstext aufzubauen und ihn auszuführen. Dies unterscheidet sich nicht vom Ausführen des gsettings setobigen Befehls, außer dass die harte Arbeit für Sie erledigt wird.

Verwendung:

Um das Skript auszuführen, speichern Sie es in einer Datei, machen Sie es ausführbar mit chmod +x /path/to/scriptund führen Sie es aus als

python /path/to/script /path/to/file

Die Eingabedatei sollte den vollständigen Pfad zu den Elementen enthalten, die Sie zum Launcher hinzufügen möchten, z. B. /usr/share/applications/firefox.desktop, aber das ist nicht erforderlich, eine Zeile mit firefox.desktopist auch in Ordnung.

Demo

Vor dem Ausführen des Skripts

Bildbeschreibung hier eingeben

Nach dem Ausführen des Skripts

Bildbeschreibung hier eingeben

Beachten Sie, dass die Reihenfolge genau der Reihenfolge der Einträge in der Eingabedatei entspricht.

Skriptquelle

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

verwandte Informationen