如何设置有条件地交替其功能的快捷方式?

如何设置有条件地交替其功能的快捷方式?

我想设置一个独特的热键,以便能够在模拟和 HDMI 输出之间切换系统声音。我该怎么做?

play可以在快捷方式(来自)中观察到此行为org.gnome.settings-daemon.plugins.media-keys,即交替播放和暂停媒体。

我可以找到答案这里设置声音输出的命令是pactl set-card-profile 0 output:[card-profile]

答案1

嗯,阅读主题DK 博斯建议并做了一些研究来学习 bash 脚本和Linux PulseAudio 声音服务器,我想到了一个解决方案:

我们需要将以下脚本保存在一个文件中(最好是/usr/local/bin/,如下所述这里),将其标记为可执行文件(通过运行chmod +x它),然后将其分配给键盘快捷键(可选,如所述这里)。

#!/bin/bash
sound_output=$(pacmd list-cards | grep "active")

if [[ $sound_output = *"analog-stereo"* ]]; then
  sound_output=hdmi-stereo
else
  sound_output=analog-stereo
fi

pactl set-card-profile 0 output:"$sound_output"
echo -e "PulseAudio sound server output set to $sound_output"

解释:

  • #!/bin/bash确保该脚本的解释器是 bash,从而启用扩展语法,如 [[ ]]。
  • 正如所引用的这里,语法$( )是“命令替换”。这将运行一个命令并使用它的输出来组成行操作。这样我们就将的返回保存pacmd list-cards | grep "active"sound_output 变量中。
  • 正如解释的那样这里*,在条件中使用将其变成子字符串检查。
  • 正如所回答的这里pactl set-card-profile 0 output: [card-profile]是根据需要切换声音服务器输出的命令。

相关内容