Gnome3 +: Comment supprimer des favoris de Dash via un terminal?

9

Je suppose que je dois modifier l'un des schémas disponibles, gsettingsmais je ne sais pas lequel. et quand j'ai énuméré tous les schémas, il y en a juste trop.

mrjayviper
la source

Réponses:

12

La clé que vous voulez est favorite-apps, l'ID du schéma est org.gnome.shell. Maintenant, pour répertorier vos applications préférées, vous pouvez simplement exécuter

gsettings get org.gnome.shell favorite-apps

ou

dconf read /org/gnome/shell/favorite-apps

Ceux-ci renverront un tableau de chaînes, par exemple

['firefox.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.gedit.desktop', 'gnome-calculator.desktop']

Maintenant, pour supprimer une valeur de ce tableau, vous pouvez utiliser des outils de traitement de texte comme sed/ awkpour vérifier si un élément se trouve dans cette liste et le supprimer en conservant le même format (pas si trivial que ce soit faisable) et une fois que vous l'avez bien écrit, écrivez le de nouveaux paramètres dans la base de données, par exemple en supposant que vous vouliez les supprimer, org.gnome.Nautilus.desktopvous exécuteriez (notez les guillemets doubles):

gsettings set org.gnome.shell favorite-apps "['firefox.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.gedit.desktop', 'gnome-calculator.desktop']"

ou

dconf write /org/gnome/shell/favorite-apps "['firefox.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.gedit.desktop', 'gnome-calculator.desktop']"

Pourtant, il est plus facile d'écrire votre propre utilitaire (en utilisant l' gsettingsAPI ) qui acceptera un ou plusieurs noms de fichiers de bureau comme paramètres de position et les supprimera des favoris; pour vous aider à démarrer, voici un exemple très basique pythonqui accepte un paramètre (exécuté comme script.py firefox.desktop):

#!/usr/bin/env python

from sys import argv
from gi.repository import Gio,GLib
item=argv[1]
gschema = Gio.Settings('org.gnome.shell')
gvalues=gschema.get_value('favorite-apps').unpack()
if item in gvalues: gvalues.remove(item)
gschema.set_value('favorite-apps', GLib.Variant('as', gvalues))
don_crissti
la source