Здесь есть два отдельных вопроса, и я постараюсь решить оба.
Первый - как правильно указать команду в .xbindkeysrc
.
Все, что вам нужно сделать, это взять команду, которая работает в bash
, и заключить ее в двойные кавычки.
Например, для команды с пробелом в ней вам нужно выполнить
"/home/user/My Programs/progname"
или же
/home/user/My\ Programs/progname
в bash
.
Что означает, что вам нужно
""/home/user/My Programs/progname""
или же
"/home/user/My\ Programs/progname"
в вашем .xbindkeysrc
.
Технически происходит то, что xbindkeys удаляет внешнюю пару двойных кавычек, а затем запускает оставшуюся строку с помощью sh -c
.
В вашем примере команда
pacmd dump|awk --non-decimal-data '$1~/set-sink-volume/{system ("pacmd "$1" "$2" "$3+2500)}'
отлично работает в Bash, так что я думаю, что проблема в другом месте.
Попробуйте запустить xbindkeys
с опцией -v
, которая заставит xbindkeys
работать на переднем плане, чтобы вы могли увидеть любые ошибки на вашем терминале.
В моем случае, это показывает, что причина не в плохом цитировании, а в pacmd
выдает ошибку
...
No PulseAudio daemon running, or not running as session daemon.
но если у вас работает PulseAudio, я думаю, вам нужно изменить pacmd
на pactl
, потому что на странице руководства написано, что pacmd
не принимает аргументы, и несколько других примеров в сети показывают использование pactl
для этой цели.