如何从命令行获取音量级别?

如何从命令行获取音量级别?

我在平铺窗口管理器上有一个文本状态栏,我正在使用 tcl 向其提供信息。目前我需要一个输出音量 0% 到 100% 的命令行。我正在使用 Arch Linux。

答案1

一行代码用于解析amixer状态栏中音量的输出:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)

编辑: 截至 2020 年 11 月,Arch Linux 的更新 amixer 为 1.2.4,输出中没有“dB”。因此,该命令应替换为:

awk -F"[][]" '/Left:/ { print $2 }' <(amixer sget Master)

答案2

您可以用来amixer执行此操作。

例子

$ amixer get Master
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [off]
  Front Right: Playback 65536 [100%] [off]

您还可以更改它并将其静音,如下所示:

设定音量75%

$ amixer set Master 75%
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 49152 [75%] [on]
  Front Right: Playback 49152 [75%] [on]

静音/取消静音

$ amixer set Master toggle
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [on]
  Front Right: Playback 65536 [100%] [on]

如果您不想通过开关看到任何输出,可以将输出静音--quiet

$ amixer --quiet set Master 75%
$ 

答案3

正确的

amixer sget Master | grep 'Right:' | awk -F'[][]' '{ print $2 }'
85%

左边

amixer sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

声音服务器

如果您没有默认使用pulseaudio,您可以指定要amixer使用的服务器-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

答案4

我的一个解决方案是使用 echo(在任何地方都找不到它,所以我很想知道这是否不是最好的方法),

echo "${$(echo "${$(amixer get Master | grep Left:)#*\[}")%%\]*}"

我只是让 Echo 删除开头到第一个“[”以及结尾到最后一个“]”。

相关内容