1
0
Fork 0
chezmoi/dot_config/herbstluftwm/executable_pulsemenu
2022-05-06 10:08:57 +02:00

75 lines
1.7 KiB
Bash

#!/bin/bash
export MESSAGE=""
print_list() {
pactl list sinks | awk '
function rofi_set(prop, val) {
print "\0"prop"\x1f"val
}
BEGIN {
have_sink = 0
i = 0
"pactl get-default-sink" | getline active_sink
list=""
active_line=-1
};
/^Sink/ {
new=mute" "name" ("volume")\0info\x1f"sink
if (have_sink == active_line) {
list=new"\n"list
} else if (have_sink > 0) {
list=list"\n"new
}
sink=substr($2,2);
have_sink++
};
/Description/ {
$1 = "" ;
name = substr($0,2);
};
/Mute/ {
if ( $2 == "yes") {
mute="(M)"
} else {
mute=""
}
}
/Volume/ && ! /Base Volume/ {
if ( $5 == $12) {
volume=$5
} else {
volume=$5"|"$12
}
}
/Name/ && $2 == active_sink {
active_line=have_sink
}
END {
new=mute" "name" ("volume")\0info\x1f"sink
if (have_sink == active_line) {
list=new"\n"list
} else if (have_sink > 0) {
list=list"\n"new
}
rofi_set("prompt", "Default sink")
rofi_set("message", ENVIRON["MESSAGE"])
rofi_set("use-hot-keys","true")
rofi_set("active", "0")
sub(/\n+/, "\n", list)
print list
}'
}
case "$ROFI_RETV" in
0) : ;;
1) pactl set-default-sink "$ROFI_INFO" ; exit 0 ;;
10) pactl set-sink-volume "$ROFI_INFO" -10% ;;
11) pactl set-sink-volume "$ROFI_INFO" +10% ;;
12) pactl set-sink-mute "$ROFI_INFO" toggle ;;
*) export MESSAGE="unknown action" ;;
esac
print_list