6

I have created a custom shortcut and bound the shutter -s to it:

enter image description here

Then I tried to find out where this command is stored and checked settings by dconf-editor. But there are no information about the shutter -s bound command and Shift + Print combination:

enter image description here

Thus, the questions:

  1. Where full information about key bindings is stored? Does a way exist to say: this key combination is using this command? For example, I want to see the default screenshot command which is executed on the Print press.
  2. What happens when I press Print key? How this key press achieves a screenshot utility? For example:
    • some tty gets this key
    • GNOME Shell is connected to this tty, so it gets the key as input.
    • then GNOME Shell looks at some database (dconf?) and executes the command bound to the Print key.

I have read similar questions, like

but haven't found an answer to my questions.

MiniMax
  • 159

2 Answers2

11

Okay, after alot of back-and-forth in the comments, I believe I found the proper way to find the settings:

It is described in https://wiki.ubuntu.com/Keybindings

To find all (system) key bindings:

lets just add all three mentioned commands:

gsettings list-recursively org.gnome.desktop.wm.keybindings ; gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys ; gsettings list-recursively org.gnome.settings-daemon.plugins.power

To find a special key you would pipe the output of each command through grep -i <what you're looking for> (the -i flag is to ignore case of letters) - so if you look for print it would look like this:

gsettings list-recursively org.gnome.desktop.wm.keybindings | grep -i print ; gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys | grep -i print ; gsettings list-recursively org.gnome.settings-daemon.plugins.power | grep -i print

with some bash-magic this clearly could look nicer - but it works ;)

Regarding custom Shortcuts

Custom Shortcuts

Custom shortcuts are stored in dconf using a "relocatable schema". The schema name is "org.gnome.settings-daemon.plugins.media-keys.custom-keybinding". Each custom key binding has three properties: name, command, and binding. Because of the relocatable schema, it is harder to use "gsettings" with custom shortcuts. Here is an example of getting the name of the first custom keybinding:

gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name

Please note, that the last part custom0/refers to the first custom set key binding.

With following command gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ you'll get something like:

org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command 'libreoffice' org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name 'libreoffice' org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding 'l'

To find the correct entry you might have to increase the number in custom0.

To change e.g. the command use:

gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command '<your command>'

This will also work for name or binding.

To "clear" a custom key binding you could use: gsettings reset-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/- this would clear the entries inside, yet the entry will still exist in the Gnome-Settings as empty entry, but are 'deactivated', sort of.

How it works with gsettings - the second question: Have a look here: https://developer.gnome.org/gio/stable/GSettings.html

Good Night and Good Luck! ;)

d1bro
  • 2,334
0

For custom keybindings the command is:

for i in $(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | awk -F"'" '{ for (i=2;i<=NF;i+=2) print $i }'); do
    echo "$(dconf read ${i}binding) $(dconf read ${i}command)"
done

For a specific custom keybinding, try:

for i in $(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | awk -F"'" '{ for (i=2;i<=NF;i+=2) print $i }'); do
    echo "$(dconf read ${i}binding) $(dconf read ${i}command)"
done | grep -i '<Super>A'

For other keybinding, the command is:

for schema in $(gsettings list-schemas |  grep -E 'keybindings|media-keys')
do
 gsettings list-recursively $schema
done

To find out what a specific key is bound to (not custom commands), run:

for schema in $(gsettings list-schemas | grep -E 'keybindings|media-keys')
do
    gsettings list-recursively $schema 
done | grep -i '<Primary><Super>Up'