コマンドラインからボリュームレベルを取得するには?

コマンドラインからボリュームレベルを取得するには?

タイルウィンドウマネージャにテキストステータスバーがあり、ここに情報を提供するためにtclを使用しています。現在のボリュームを0%から100%まで出力するコマンドラインが必要です。私はアーチLinuxを使用しています。

答え1

amixerステータスバーのボリューム出力を解析するコード1行:

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

私が持っている1つの解決策はechoを使用することでした(どこでも見つけることができないので、これが最善の方法ではないかどうかを知りたい)。

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

ちょうどEchoに最初の「[」の始まりと最後の「]」の終わりを削除するように依頼しました。

関連情報