Автоматизировать упорядочивание иконок в Unity Launcher

Автоматизировать упорядочивание иконок в Unity Launcher

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

Связанный контент