i3status alsa 混音器

Qua*_*ale 2 ubuntu audio i3

如何让 i3status 从而alsamixer不是显示音量级别Pulseaudio

这是我现在的音量配置:

volume master {
        format = "?: %volume"
        format_muted = "?: muted (%volume)"
        device = "default"
        mixer = "Master"
}
Run Code Online (Sandbox Code Playgroud)

根据文档,设置device为“默认”,如果检测到 PulseAudio 将被尝试并回退到 ALSA (Linux) 或 OSS (FreeBSD/OpenBSD)。ALSA 使用什么字符串?

我试过了"alsa" "alsamixer" "ALSA",但它们不起作用。

Ada*_*hon 5

你可以试试

device = "sysdefault"
Run Code Online (Sandbox Code Playgroud)

解释

任何device不是default或不以开头的值都pulse告诉i3status不要使用PulseAudio并回退到alsa。然后将该值作为设备标识符直接传递给alsa,因此仅将其设置为alsa或类似的内容将不起作用。在i3status支持PulseAudio之前,您可以将其设置default为让alsa使用默认设备。default仍然是alsa设备的有效名称。但是i3status现在尝试自动检测PulseAudio并在设备设置为(或未设置)时优先使用alsadefault

通过使用sysdefault,您可以绕过alsa的自动化,i3status同时仍然使用有效的通用设备名称。

故障排除

如果systemdefault由于某种原因使用不起作用,您可能必须使用特定的设备名称。如果你只有一张声​​卡,hw:0应该可以。

device = "hw:0"
Run Code Online (Sandbox Code Playgroud)

但是在现代台式计算机上,“声卡”可能比人们想象的要多。除了“真正的”板载或专用声卡外,还有显卡(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
Run Code Online (Sandbox Code Playgroud)

这些然后可以与该装置名称访问hw:Ni3status.conf其中N在第一列中的数字。

如果您需要更多信息来决定哪个设备号是正确的,您可以使用amixer -c N infoamixer可以在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
Run Code Online (Sandbox Code Playgroud)

随着amixer -c N你得到所有混音控制和他们的卡设置的完整列表N。有了amixer -c N sget CONTROL你可以检索特定的值。因此,您可以使用amixer -c N sget Master, 来验证alsa中的输出是否i3status与实际值匹配。