Редактирование gsettings; добавить значок в программу запуска с помощью команды [duplicate]

Хотя в Интернете есть несколько сообщений на эту тему, я пока не нашел решения:
моя цель - найти команду, которая добавляет значок (файл .desktop) в Unity лаунчер и сразу показывает. когда я открываю dconf-editor (рабочий стол> unity> launcher) и добавляю элемент в список избранного, он сразу отображается в панели запуска, поэтому я считаю, что должно быть возможно сделать то же самое вещь по команде. Решения, которые я нашел до сих пор в Интернете, не работают.

Мне нужно сделать это по команде, чтобы использовать в редакторе быстрых списков, над которым я работаю.

Вы могли бы сделать кого-то невероятно счастливым, если бы вы могли помочь

9
задан 20 June 2012 в 20:27

2 ответа

Вы можете работать с 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']/")"
12
ответ дан 20 June 2012 в 20:27

Принятый ответ нормальный, но громоздкий из-за использования 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  )
2
ответ дан 20 June 2012 в 20:27

Другие вопросы по тегам:

Похожие вопросы: