如何让 i3status 显示音量级别而alsamixer
不是Pulseaudio
?
这是我现在的卷配置:
volume master {
format = "♪: %volume"
format_muted = "♪: muted (%volume)"
device = "default"
mixer = "Master"
}
根据文档,设置device
为“默认”,如果检测到,将尝试 PulseAudio,并将回退到 ALSA (Linux) 或 OSS (FreeBSD/OpenBSD)。ALSA 使用什么字符串?
我已经尝试过了"alsa"
"alsamixer"
"ALSA"
,但它们不起作用。
答案1
你可以试试
device = "sysdefault"
解释
任何值device
不是default
或不以pulse
告诉i3status
不要使用脉冲音频并回落到阿尔萨。然后将该值直接传递给阿尔萨作为设备标识符,因此仅将其设置为alsa
或类似的值将不起作用。之前i3status
支持过脉冲音频你可以将其设置default
为阿尔萨使用默认设备。default
仍然是一个有效的名称阿尔萨设备。但i3status
现在尝试自动检测脉冲音频并优先使用它阿尔萨,当设备设置为default
(或取消设置)时。
通过使用sysdefault
,您可以绕过自动操作,i3status
同时仍然使用有效的通用设备名称阿尔萨。
故障排除
如果systemdefault
由于某种原因无法使用,您可能必须使用特定的设备名称。如果您只有一张声卡,hw:0
应该可以工作。
device = "hw:0"
但在现代台式计算机上,“声卡”的数量可能比人们想象的要多。除了“真正的”板载或专用声卡之外,还有显卡(HDMI 声音)、网络摄像头、USB 耳机、蓝牙适配器等。
您可以从该文件中获取系统中卡的列表/proc/asound/cards
。例如:
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xfa120000 irq 41
1 [Nvidia ]: HDA-Intel - HDA Nvidia
HDA Nvidia at 0xd3000000 irq 16
hw:N
然后可以使用中的设备名称来访问这些设备i3status.conf
,其中N
是第一列中的数字。
如果您需要更多信息来确定哪个设备编号是正确的,您可以使用amixer -c N info
(amixer
可以在alsa-utils
包中找到):
% amixer -c 0 info
Card hw:0 'PCH'/'HDA Intel PCH at 0xfa120000 irq 41'
Mixer name : 'Realtek ALC262'
Components : 'HDA:10ec0262,103c1587,00100202'
Controls : 41
Simple ctrls : 20
您将amixer -c N
获得所有混音器控件及其卡设置的完整列表N
。您amixer -c N sget CONTROL
可以使用它检索特定值。因此,您可以使用amixer -c N sget Master
, 来验证 的输出是否i3status
与中的实际值匹配阿尔萨。