Ich habe ein Installationsskript geschrieben, das meinen Installationsvorgang automatisiert. Danach möchte ich, dass die Symbole zum Unity Launcher neu angeordnet/hinzugefügt/entfernt werden.
Verwenden von dconf watch /
Ich kann die Ausgabe sehen, wenn ich die Symbole neu anordne. Gibt es eine Kommandozeilen-Möglichkeit, dies zu tun – möglicherweise mit gsettings
?
Akzeptierte Antwort:
Einführung
Das folgende einfache Skript erlaubt es, eine Datei als Argument zu nehmen und stellt den Launcher so ein, dass alle Verknüpfungen zu Programmen in der Datei erscheinen (eine pro Zeile).
Die Grundidee ist, dass die Launcher-Icons tatsächlich Links zu .desktop
sind Dateien (wo auch immer sie erscheinen mögen) , und die kanonische 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 Zitieren kann zu einer Qual werden. Man kann immer ein gewünschtes Programm öffnen und mit der rechten Maustaste auf das Symbol klicken, um die Option „Auf Launcher sperren“ aufzurufen, aber das ist auch nicht praktisch, wenn man es mit einer großen Menge von Objekten zu tun hat.
Der hier verfolgte Ansatz besteht darin, einfach eine Datei mit 1 Mal pro Zeile zu lesen, den Befehlstext aufzubauen und ihn auszuführen. Dies unterscheidet sich nicht vom Ausführen des gsettings set
Befehl oben, außer dass die harte Arbeit für Sie erledigt wird.
Verwendung:
Um das Skript auszuführen, speichern Sie es in einer Datei und machen Sie es mit chmod +x /path/to/script
ausführbar und ausführen als
python /path/to/script /path/to/file
Die Eingabedatei sollte den vollständigen Pfad zu den Elementen enthalten, die Sie dem Launcher hinzufügen möchten, z. B. /usr/share/applications/firefox.desktop
, aber es ist nicht notwendig , eine Zeile mit firefox.desktop
ist auch ok.
Demo
Vor dem Ausführen des Skripts
Nach dem Ausführen des Skripts
Beachten Sie, dass die Reihenfolge genau dieselbe ist wie die Einträge in der Eingabedatei
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)