Хотя в Интернете есть несколько сообщений на эту тему, я пока не нашел решения:
моя цель - найти команду, которая добавляет значок (файл .desktop) в Unity лаунчер и сразу показывает. когда я открываю dconf-editor
(рабочий стол> unity> launcher) и добавляю элемент в список избранного, он сразу отображается в панели запуска, поэтому я считаю, что должно быть возможно сделать то же самое вещь по команде. Решения, которые я нашел до сих пор в Интернете, не работают.
Мне нужно сделать это по команде, чтобы использовать в редакторе быстрых списков, над которым я работаю.
Вы могли бы сделать кого-то невероятно счастливым, если бы вы могли помочь
Вы можете работать с dconf также с помощью инструмента gsettings.
gsettings set com.canonical.Unity.Launcher favorites "$(gsettings get com.canonical.Unity.Launcher favorites | sed "s/, *'yourapp' *//g" | sed "s/'yourapp' *, *//g" | sed -e "s/]$/, 'yourapp']/")"
Принятый ответ нормальный, но громоздкий из-за использования sed
и множества escape-последовательностей. Нижеприведенное питоническое решение намного чище и позволяет просто указать, какой файл .desktop
вы хотите добавить, и при желании вы можете указать позицию на панели запуска.
Например,
python launcher_append_item.py sakura.desktop 3
поместит ] sakura
как 4-й значок (поскольку индексы списка начинаются с 0). При простом запуске
python launcher_append_item.py sakura.desktop
значок добавляется в список.
Для дальнейшего размышления можно даже добавить опцию для замены определенного элемента на панели запуска другим элементом. Но это упражнение для размышлений в будущем :)
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gio,Gtk
import dbus
import sys
def gsettings_get(schema,path,key):
if path is None:
gsettings = Gio.Settings.new(schema)
else:
gsettings = Gio.Settings.new_with_path(schema,path)
return gsettings.get_value(key)
def gsettings_set(schema,path,key,value):
if path is None:
gsettings = Gio.Settings.new(schema)
else:
gsettings = Gio.Settings.new_with_path(schema,path)
return gsettings.set_strv(key,value)
current_list = list(gsettings_get('com.canonical.Unity.Launcher',None,'favorites'))
if sys.argv[2]:
current_list.insert(int(sys.argv[2]),'application://' + sys.argv[1])
else:
current_list.append( 'application://' + sys.argv[1] )
gsettings_set( 'com.canonical.Unity.Launcher', None, 'favorites',current_list )