я могу получить список пользовательских привязок клавиш:
gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings
которые возвращают что-то как:
['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/']
Но я хочу знать целевую привязку клавиш через ее имя? т.е. shutter
-> <primary><shift><alt>a
Я выяснил одно простое, но не удобный подход:
gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-
keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-
keybindings/custom0/ name
// return the name like `shutter`
gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-
keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-
keybindings/custom0/ binding
// return the binding like `<primary><shift><alt>a`
Какой-либо парень знает другие изящные решения?
Сценарий ниже произведет привязку клавиш при выполнении его с именем ярлыка как аргумент. пример:
$ python3 '/home/jacob/Bureaublad/find_keybinding.py' rename
> '<Primary><Alt>r'
find_keybinding.py
Выполните его командой:
python3 '/path/to/find_keybinding.py' <shortcut_name>
Информация находится в выводе
dconf dump /
На пользовательских сочетаниях клавиш это произведет разделы как:
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom9]
binding='<Primary><Alt>r'
command='/home/jacob/.local/share/nautilus/scripts/change_name'
name='rename'
Как Вы видите, нам нужны строка, две строки выше
name='rename'
... и так выводы сценария, что строка, разделенная от binding=
#!/usr/bin/env python3
import subprocess; import sys
key = "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/"
# read the output from dconf dump /, split into lines
ls = [l for l in subprocess.check_output(["dconf", "dump", key]).decode("utf-8").splitlines()]
# find line corresponding to searched name, print two lines higher
print(ls[ls.index([l for l in ls if "name='"+sys.argv[1] in l][0])-2].replace("binding=", ""))
... Вы могли создать каталог ~/bin
(если это еще не существует), и сохраните сценарий там без расширения и сделайте это исполняемым файлом. Выйдите из системы и въезжайте задним ходом, затем просто:
find_keybinding <name>
сделаю