Я предполагаю, что мне нужно отредактировать одну из доступных схем, gsettings
но я не знаю, какую. и когда я перечислил все схемы, их было слишком много.
Я предполагаю, что мне нужно отредактировать одну из доступных схем, gsettings
но я не знаю, какую. и когда я перечислил все схемы, их было слишком много.
Ответы:
Ключ, который вы хотите favorite-apps
, это идентификатор схемы org.gnome.shell
. Теперь, чтобы перечислить ваши любимые приложения, вы можете просто запустить
gsettings get org.gnome.shell favorite-apps
или
dconf read /org/gnome/shell/favorite-apps
Они вернут массив строк, например
['firefox.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.gedit.desktop', 'gnome-calculator.desktop']
Теперь, чтобы удалить значение из этого массива, вы можете использовать инструменты для обработки текста, такие как sed
/, awk
чтобы проверить, есть ли элемент в этом списке, и удалить его, сохраняя тот же формат (не такой уж тривиальный, хотя определенно выполнимый), и как только вы это сделаете правильно, просто напишите новые настройки для базы данных, например, если вы хотите удалить, org.gnome.Nautilus.desktop
вы запустите (обратите внимание на двойные кавычки):
gsettings set org.gnome.shell favorite-apps "['firefox.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.gedit.desktop', 'gnome-calculator.desktop']"
или
dconf write /org/gnome/shell/favorite-apps "['firefox.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.gedit.desktop', 'gnome-calculator.desktop']"
Тем не менее, проще написать собственную утилиту ( используя gsettings
API ), которая будет принимать одно или несколько имен файлов рабочего стола в качестве позиционных параметров и удалять их из избранного; Для начала, вот очень простой пример, python
который принимает один параметр (запустить как 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))