Как мне проверить, работает ли данный PID?

Нужный ключ - 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))

16
10.07.2016, 20:35
0 ответов

Теги

Похожие вопросы