Gnome3 +: Wie entferne ich Favoriten über das Terminal aus Dash?

9

Ich schätze, ich muss eines der verfügbaren Schemas bearbeiten, gsettingsaber ich weiß nicht, welches. und wenn ich alle Schemata aufgelistet habe, gibt es einfach zu viele davon.

mrjayviper
quelle

Antworten:

11

Der gewünschte Schlüssel ist favorite-appsdie Schema-ID org.gnome.shell. Um nun Ihre Lieblings-Apps aufzulisten, können Sie sie einfach ausführen

gsettings get org.gnome.shell favorite-apps

oder

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

Diese geben ein Array von Zeichenfolgen zurück, z

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

Um einen Wert aus diesem Array zu entfernen, können Sie Textverarbeitungswerkzeuge wie sed/ verwenden awk, um zu überprüfen, ob sich ein Element in dieser Liste befindet, und es im gleichen Format entfernen (nicht so trivial, aber definitiv machbar). Wenn Sie es richtig verstanden haben, schreiben Sie einfach das Neue Einstellungen für die Datenbank, z. B. vorausgesetzt, org.gnome.Nautilus.desktopSie möchten sie entfernen , werden ausgeführt (beachten Sie die doppelten Anführungszeichen):

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

oder

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

Es ist jedoch einfacher, ein eigenes Dienstprogramm ( mithilfe der gsettingsAPI ) zu schreiben , das einen oder mehrere Desktop-Dateinamen als Positionsparameter akzeptiert und aus den Favoriten entfernt. Um Ihnen den Einstieg pythonzu erleichtern , finden Sie hier ein sehr einfaches Beispiel , das einen Parameter akzeptiert (ausführen als 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
quelle