我不知道任何一种使用ALSA或PulseAudio锁定控件的方法,但是这个小技巧应该可以解决问题:
stdbuf -oL alsactl monitor | \
while read; do
amixer -D pulse sset Master 0,-
done
它使用alsactl monitor来监测音量变化(你可以自己运行这个命令并改变音量来看看它的效果),每次有变化时,它会将左声道的音量重置为0。
如果你使用不同的音频设备,可能需要进行以下更改:
如果你使用不同的音频设备,将pulse更改为其他内容。
如果你想保持右声道静音,将0,-更改为-,0。
如果你希望其他控制(例如耳机)正常工作,将Master更改为类似Speaker,0的内容。
你可以通过以下步骤使脚本在启动时运行:
将脚本放入一个文件中,例如~/.bin/alsa-fix,
给予该文件可执行权限:chmod +x ~/.bin/alsa-fix,以及
将~/.bin/alsa-fix &这一行添加到~/.profile中。
脚本应该几乎不占用CPU或内存,但如果你想让它更加高效,可以在文件顶部添加一行#!/bin/dash,然后使用dash来运行它。