タイリングウィンドウマネージャーにテキストステータスバーがあり、tclを使用して情報をフィードしています。現時点では、ボリュームレベル0%から100%を出力するコマンドラインが必要です。 Arch Linuxを使用しています。
ステータスバーのamixer
の出力を解析するワンライナー:
awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)
これを行うには、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%
$
右
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%
ここですでにいくつかの回答に基づいていますが、同じコマンドでawk
とgrep
の両方を使用して回避することができました(これは膨らむため)。
amixer -D Pulse get Master | awk -F 'Left:|[][]' 'BEGIN {RS=""}{ print $3 }'
説明:
amixer -D Pulse get Master ...
かなり自明です。マスターコントロールに関するものだけをリストします(Pulseを使用しているため、-D Pulse
)。私にとって、それは印刷します:
Capabilities: pvolume pswitch pswitch-joined
Playback channels: Front Left - Front Right
Limits: Playback 0 - 65536
Mono:
Front Left: Playback 52428 [80%] [on]
Front Right: Playback 52428 [80%] [on]
... awk -F 'Left:|[][]' ...
正規表現を使用してフィールド区切り文字を定義します。これはLeft:
または][
のいずれかです。
... { print $3 }'
次に、3列目を印刷します。 Left:
も分離しているため、右側のスピーカーの$3
の値は空白になることがわかります。
... 'BEGIN {RS=""}...
現在は、80%
と一連の改行のみを印刷しています。私が書いていたスクリプトでは、これらは必要なかったので、{RS=""}
を使用してほとんどのスクリプトを削除し、BEGIN
を追加して、最初のスクリプトを削除しました。