我在平铺窗口管理器上有一个文本状态栏,我正在使用 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 删除开头到第一个“[”以及结尾到最后一个“]”。