使用 cli 通过 pipelinewire 在播放设备之间切换时遇到问题

使用 cli 通过 pipelinewire 在播放设备之间切换时遇到问题

我一直在痛苦的 i3wm 道路上走下去,但我一生都无法理解如何使用 cli 命令更改输出设备。

设置:

  • 使用 i3-gaps(基础发行版是 Garuda Linux)
  • Pipewire 是音频提供商
  • 使用 pavucontrol 时,我可以在耳机和扬声器之间切换作为输出端口,但似乎无法弄清楚 pactl、wpctl、aplay 后台发生了什么变化
  • 我将耳机连接到前辅助面板,将扬声器连接到后辅助面板。

任何帮助,将不胜感激 :)

更新:找到解决方案并将其发布在评论中

答案1

pactl list short sinks应该能够列出您的接收器、输出设备,并获得pactl info有关实际配置的信息。应该Default Sink命名实际输出。

要切换默认接收器,您可以使用pactl set-default-sink <sink_name>

我在网上找到了一个脚本,每次调用它时都会切换可能的接收器:https://ericlathrop.com/2021/02/changing-pulseaudio-outputs-programmatically/

尽管它说它适用于脉冲,但它也适用于管道线(至少对我来说)。

答案2

找到了一个解决方案并为其编写了一个简短的脚本

if [[ $(pactl list | grep "Active Port: analog-output") == *"headphones"* ]]; then
    pactl set-sink-port 0 analog-output-lineout
else
    pactl set-sink-port 0 analog-output-headphones
fi

还将其添加到我的 i3config 中:

bindsym F6 exec --no-startup-id sh ~/path/to/script/switch_output.sh

答案3

我必须首先设置卡配置文件,然后设置默认接收器。

这是对我有用的示例:

pactl set-card-profile alsa_card.usb-Focusrite_Scarlett_Solo_USB_...
pactl set-default-sink alsa_output.usb-Focusrite_Scarlett_Solo_USB_....HiFi__hw_USB__sink

我使用自动完成来选择字符串。

相关内容