Автоматизация упорядочения иконок единства запуска
Я написал скрипт установки, который автоматизирует мой процесс установки. После этого я бы хотел переставить / добавить / удалить значки в лаунчере Unity.
С помощью dconf watch /
Я могу видеть вывод, когда я переупорядочиваю значки. Есть ли способ сделать это из командной строки - возможно, с gsettings
?
1 ответ
Вступление
Простой скрипт ниже позволяет принимать файл в качестве аргумента и настраивает панель запуска на любые ярлыки программ, которые появляются в файле (по одному на строку).
Основная идея заключается в том, что значки запуска на самом деле являются ссылками на .desktop
файлы (где бы они ни появлялись), и канонический метод установки элементов панели запуска - выполнить следующую команду:
gsettings set com.canonical.Unity.Launcher favorites "[ 'item1.desktop' , 'item2.desktop' , . . . 'item3.desktop; ]"
Это может быть утомительно, если вы хотите добавить много предметов, и цитирование может стать проблемой. Всегда можно открыть нужную программу и щелкнуть правой кнопкой мыши на значке, чтобы активировать опцию "Блокировать для запуска", но это также нецелесообразно, когда вы работаете с большим количеством элементов.
Подход, принятый здесь, состоит в том, чтобы просто прочитать файл, по 1 разу в строке, создать текст команды и выполнить его. Это ничем не отличается от запуска gsettings set
Команда выше, за исключением того, что тяжелая работа сделана для вас.
Использование:
Чтобы запустить скрипт, сохраните его в файл, сделайте его исполняемым с chmod +x /path/to/script
и беги как
python /path/to/script /path/to/file
Входной файл должен содержать полный путь к элементам, которые вы хотите добавить в панель запуска, например /usr/share/applications/firefox.desktop
, но это не обязательно, строка с firefox.desktop
тоже хорошо.
демонстрация
Перед запуском скрипта
После запуска скрипта
Обратите внимание, что порядок точно такой же, как записи появляются во входном файле
Источник скрипта
#!/usr/bin/env python
# Author: Serg Kolo
# Date: April 22, 2016
# Purpose: programmatically set Unity launcher items
# by reading a file
# Written for: http://Ask-ubuntu.ru/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)