Bien qu'il y ait plusieurs articles sur Internet sur le sujet, je n'ai pas encore trouvé de solution:
Mon objectif est de trouver une commande qui ajoute une icône (fichier .desktop) au programme de lancement d'Unity et l'affiche immédiatement. Quand j'ouvre dconf-editor
(bureau> Unity> Launcher) et que j'ajoute un élément à la liste des favoris, cela s'affiche immédiatement dans le lanceur. Mon idée est donc qu'il doit être possible de faire la même chose par commande. Les solutions que j'ai trouvées jusqu'à présent sur Internet ne font pas le travail.
Je dois le faire par commande, à utiliser dans un éditeur de liste rapide sur lequel je travaille.
Vous rendriez quelqu'un incroyablement heureux si vous pouviez aider
Vous pouvez aussi agir sur dconf avec l'outil 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']/")"
La réponse acceptée est acceptable, mais elle est lourde en raison de l'utilisation de sed
et de nombreuses séquences d'échappement. La solution Pythonic ci-dessous est beaucoup plus propre et permet simplement de spécifier le fichier .desktop
que vous voulez ajouter, et éventuellement vous pouvez spécifier une position dans le lanceur.
Par exemple,
python launcher_append_item.py sakura.desktop 3
placerait sakura
comme 4ème icône (car les index de liste commencent par 0). Courir simplement
python launcher_append_item.py sakura.desktop
ajouterait l'icône à la liste.
Pour plus de réflexion, on pourrait même ajouter une option permettant de remplacer un élément spécifique du lanceur par un autre élément. Mais c'est un exercice pour la contemplation future :)
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 )