Я пишу сценарий Bash для автоматизации настройки привязки клавиш для моего рабочего стола Gnome. Смена ярлыка для уже существующих не проблема.
Проблема связана с сочетаниями клавиш костюма. Я могу жестко запрограммировать эти команды, и они будут отлично работать, но я не могу настроить привязки костюмов с помощью функции Bash.
Жестко запрограммированный фрагмент сценария будет выглядеть так:
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ name "vscode"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ command "code"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/ binding "<Super>v"
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom4/']"
и, как я уже говорил, это будет работать.
Поэтому я попытался написать для этого функцию Bash:
# a function to create costume keybindings
# first arg: a number assigned to keybinding
# second arg: name of the keybinding
# third arg: command for the keybinding
# forth arg: the keyboard shortcut for the keybinding
function key {
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$1/ name $2
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$1/ command $3
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$1/ binding $4
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom$1/']"
}
И я попытался использовать его следующим образом:
key 0 "poweroff" "poweroff" "<Shift><Super>s"
key 1 "reboot" "reboot" "<Shift><Super>r"
key 2 "keepassx" "keepassx" "<Super>k"
key 3 "calculator" "gnome-calculator" "<Super>c"
key 4 "vscode" "code" "<Super>v"
key 5 "toggle_touchpad" "/home/ali/p/os/scripts/gnome_toggle_touchpad.sh" "<Super>t"
Ни одна из указанных выше комбинаций клавиш не работает, кроме последней, toggle_touchpad
.
Я подозревал, что, возможно, toggle_touchpad
работает, потому что я предоставил полный адрес для него вместо команды. Поэтому я создал простой скрипт следующим образом:
#!/bin/bash
code
Этот скрипт работает, но когда я помещаю его в скрипт связывания клавиш, он не работает:
key 4 "vscode" "/home/ali/p/os/scripts/code.sh" "<Super>v"
Я не уверен, что не так с моим скриптом, но я думаю, что он как-то связан с последней строкой функции, поскольку конфигурация предыдущих трех строк появляется в dconf:
графический интерфейс dconf, показывающий настройку, связанную с привязкой клавиш костюма
![enter image description here](https://i.stack.imgur.com/HjJcC.png)
Есть мысли?