A resposta aceita é boa, mas incômoda devido ao uso de sed
e muitas seqüências de escape. A solução pythonic abaixo é muito mais limpa e permite simplesmente especificar o arquivo .desktop
que você deseja anexar e, opcionalmente, você pode especificar uma posição no launcher.
Por exemplo,
python launcher_append_item.py sakura.desktop 3
colocaria sakura
como quarto ícone (porque os índices de lista começam com 0). Correndo simplesmente
python launcher_append_item.py sakura.desktop
acrescentaria o ícone à lista.
Pensando melhor, pode-se até adicionar uma opção para substituir um item específico no lançador por outro item. Mas isso é um exercício para contemplação futura:)
código-fonte
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 )