Автоматизация упорядочения иконок единства запуска

Я написал скрипт установки, который автоматизирует мой процесс установки. После этого я бы хотел переставить / добавить / удалить значки в лаунчере 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)
Другие вопросы по тегам