我一直无法找到一个合适的解决方案来让 alsamixer 正确管理我的声音。
这是我想要的行为:
- 在重新启动、休眠或睡眠然后唤醒时,我希望保留所有 alsamixer 级别和静音设置。
- 我键盘上的静音键应该切换静音,调高音量和调低音量按钮应该增加或减少音量,如果适用,则取消静音。
- 当我插入耳机时,应该有不同的音量设置,音量级别应该自动调整。主控是否改变或耳机/扬声器级别是否改变对我来说无关紧要。只需确保它与音量-{up,down} 键配合使用即可。
我使用 XMonad 和 xbindkeys 将音量/静音键映射到操作。目前:
"amixer set Master 2dB+"
XF86AudioRaiseVolume
"amixer set Master 2dB-"
XF86AudioLowerVolume
"/path/to/mute.sh"
XF86AudioMute
其中 mute.sh
FILE=$HOME/.mute
if [ -f $FILE ]; then
amixer set Master `cat $FILE`
rm $FILE
else
amixer get Master\
| grep Mono\
| grep -P -o '[\d]{1,3}'\
| head -n 1\
> $FILE
amixer set Master 0
fi
目前,当我重新启动计算机时,似乎随机频道都静音了。而且我的静音脚本实际上只是将音量设置为零,这并不理想。好的一面是,插入耳机似乎确实可以调整音量。
有什么想法可以使静音和重启行为变得更好?
----- 编辑 1 -----
主切换静音扬声器通道还可:
$ amixer get Speaker | tail -n 1
Front Right: Playback 87 [100%] [0.00dB] [on]
$ amixer set Master toggle
Simple mixer control 'Master',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 87
Mono: Playback 87 [100%] [0.00dB] [off]
$ amixer set Master unmute
Simple mixer control 'Master',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum
Playback channels: Mono
Limits: Playback 0 - 87
Mono: Playback 87 [100%] [0.00dB] [on]
$ amixer get Speaker | tail -n 1
Front Right: Playback 87 [100%] [0.00dB] [off]
----- 编辑 2 -----
切换很奇怪:
$ for x in Master Headphone Speaker; do amixer set $x toggle ;done
Simple mixer control 'Master',0
Mono: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',0
Front Left: Playback 87 [100%] [0.00dB] [on]
Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Speaker',0
Front Left: Playback 87 [100%] [0.00dB] [off]
Front Right: Playback 87 [100%] [0.00dB] [off]
$ for x in Master Headphone Speaker; do amixer set $x toggle ;done
Simple mixer control 'Master',0
Mono: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Headphone',0
Front Left: Playback 87 [100%] [0.00dB] [on]
Front Right: Playback 87 [100%] [0.00dB] [on]
Simple mixer control 'Speaker',0
Front Left: Playback 87 [100%] [0.00dB] [on]
Front Right: Playback 87 [100%] [0.00dB] [on]
答案1
您的硬件有一个主静音开关;使用amixer set Master toggle
。
要取消静音,请运行amixer set Master unmute
。
您应该能够以不同的方式设置Speaker
和Headphone
控件,并使用控件Master
来设置整体音量。
您的硬件可以在插入耳机时自动静音扬声器,但您的Auto-Mute Mode
控制设置为禁用。显然,您有一些软件可以做到这一点。