Napsal jsem instalační skript, který automatizuje můj instalační proces. Poté bych chtěl, aby znovu uspořádal/přidal/odebral ikony do spouštěče jednoty.
Pomocí dconf watch /
Když změním pořadí ikon, vidím výstup. Existuje způsob, jak to udělat z příkazového řádku – možná pomocí gsettings
?
Přijatá odpověď:
Úvod
Níže uvedený jednoduchý skript umožňuje vzít soubor jako argument a nastaví spouštěč tak, aby se v souboru objevili jakékoli zkratky programů (jedna na řádek).
Základní myšlenkou je, že spouštěcí ikony jsou ve skutečnosti odkazy na .desktop
soubory (kdekoli se mohou objevit) a kanonickou metodou pro nastavení položek spouštěče je spuštění následujícího příkazu:
gsettings set com.canonical.Unity.Launcher favorites "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop; ]"
Pokud chcete přidat mnoho položek, může to být zdlouhavé a citování se může stát bolestí. Vždy lze otevřít požadovaný program a kliknutím pravým tlačítkem na ikonu vyvolat možnost „Uzamknout spouštěč“, ale to také není praktické, když pracujete s velkým množstvím položek.
Přístup, který se zde používá, je jednoduše přečíst soubor 1krát na řádek, vytvořit příkaz text a provést jej. To se neliší od spuštění gsettings set
výše, kromě toho, že těžká práce je udělána za vás.
Použití:
Chcete-li skript spustit, uložte jej do souboru a udělejte jej spustitelný pomocí chmod +x /path/to/script
a spustit jako
python /path/to/script /path/to/file
Vstupní soubor by měl obsahovat úplnou cestu k položkám, které chcete přidat do spouštěče, jako je /usr/share/applications/firefox.desktop
, ale není to nutné, řádek s firefox.desktop
je také v pořádku.
Ukázka
Před spuštěním skriptu
Po spuštění skriptu
Všimněte si, že pořadí je přesně stejné jako položky zobrazené ve vstupním souboru
Zdroj skriptu
#!/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)