Você precisa colocar os comandos em um script de shell, tornar esse script executável e usar esse script como o comando.
<command>/usr/local/bin/volume_up</command>
O conteúdo de /usr/local/bin/volume_up
#!/bin/sh
pactl set-sink-volume alsa_output.usb-Focusrite_Scarlett_2i4_USB-00.multichannel-output +5% &
pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +5% &
pactl set-sink-volume alsa_output.usb-Focusrite_Scarlett_2i4_USB-00.analog-surround-40 +5%
e torná-lo executável
chmod +x /usr/local/bin/volume_up
A razão é que o Openbox não está executando o conteúdo do elemento de comando em um shell, ao invés de tentar executá-lo diretamente.
Na documentação para <command>
:
A string which is the command to be executed, along with any arguments to be passed to it. The "~" tilde character will be expanded to your home directory, but no other shell expansions or scripting syntax may be used in the command unless they are passed to the sh command. Also, the & character must be written as & in order to be parsed correctly. is a deprecated name for .
Outro benefício é que você pode reescrever o script para também diminuir o volume
#!/bin/sh
change_volume() {
pactl set-sink-volume alsa_output.usb-Focusrite_Scarlett_2i4_USB-00.multichannel-output "$1"
pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo "$1"
pactl set-sink-volume alsa_output.usb-Focusrite_Scarlett_2i4_USB-00.analog-surround-40 "$1"
}
main() {
case "$1" in
up)
change_volume +5%
;;
down)
change_volume -5%
;;
*)
printf "volume <command>\n"
printf " up \n"
printf " down\n"
esac
}
main "$@"
Isso seria salvo em /usr/local/bin/volume
e seria usado assim
<command>/usr/local/bin/volume up</command>
<command>/usr/local/bin/volume down</command>