Editando gsettings; adicione o ícone ao lançador pelo comando [duplicate]

9

Embora existam várias postagens na Internet sobre o assunto, ainda não encontrei uma solução:
Meu objetivo é encontrar um comando que adicione um ícone (arquivo .desktop) ao iniciador Unity e o mostre imediatamente. quando eu abro dconf-editor (desktop > unity > launcher) e adiciono um item à lista de favoritos, ele aparece de uma vez no launcher, então minha ideia é que deve ser possível fazer a mesma coisa pelo comando. As soluções que encontrei até agora na Internet não fazem o trabalho.

Eu preciso fazer isso por comando, para usar em um editor de lista rápida em que estou trabalhando.

Você faria alguém inacreditavelmente feliz se pudesse ajudar

    
por Jacob Vlijm 20.06.2012 / 15:36

2 respostas

12

Você pode atuar no dconf também com a ferramenta 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']/")"
    
por jasmines 20.06.2012 / 16:17
2

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  )
    
por Sergiy Kolodyazhnyy 23.07.2016 / 09:53