我之前发过一个类似的问题,但 Kamil Maciorowski 正确而明智地指出,正如所发的那样,这实际上并不是表面上的单个问题,而是 3 个问题的混合体。所以我删除了损坏的系统和问题。我重新开始安装 Lubuntu,也就是当前的版本。开箱后,如果我打开蓝牙耳机,声音会通过耳机播放,而不是内置扬声器。如果我关闭耳机,声音会自动通过扬声器播放。
我希望永远不要将任何声音发送到扬声器,除非我明确将特定命令的输出定向到扬声器。例如,伪代码:aplay /path/fire-alarm.wav -o speakers
如果可用,则通过耳机播放所有其他声音,否则根本不播放。
如果没有直接规定这种策略,我想知道是否有某种方法可以欺骗系统,让其将 /dev/null 视为始终工作且始终可用的音频接收器,该接收器排在耳机之后,位于内置扬声器之前。结合“通过扬声器播放此声音”命令应该可以做到这一点。
如果这两种方法都不可能的话,那么在不影响耳机功能和不重新登录的情况下禁用和启用扬声器的命令几乎也可以达到同样的效果,只要拜占庭式 Linux 声音架构中的某些东西不会自发地决定“哦,你的扬声器已关闭,我会帮你解决这个问题。”
这并不等同于简单地说蓝牙耳机应该是默认设置。现在就是这样。如果我观看“Debbie Does Dubai”,耳机超出范围,或者没电了,或者我只是笨手笨脚地用手指调整它们的物理位置,我不希望声音自动转换并开始从扬声器中传出。
我所追求的是一种策略,除非我明确告诉它向扬声器发送特定的流,否则它不会向扬声器发送任何内容,然后只发送该流,或者如果失败,则通过一种可编写脚本的方式来禁用和启用扬声器而无需重新登录。
答案1
PULSE_SINK=<sink_name>某个程序
您可以从以下位置获取可用的“sink_name”列表:
LANG=C pactl list | grep -A2 'Sink #' | grep Name: | cut -d" " -f2