타일식 창 관리자에 텍스트 상태 표시줄이 있고 여기에 정보를 제공하기 위해 tcl을 사용하고 있습니다. 현재 볼륨을 0%에서 100%까지 출력하는 명령줄이 필요합니다. 저는 아치 리눅스를 사용하고 있습니다.
답변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에게 첫 번째 "["의 시작과 마지막 "]"의 끝을 삭제하도록 요청했습니다.