Yet another approach to volume/mute control.
This commit is contained in:
parent
9fcfdbad32
commit
4865f4f572
26
_suckless/_scripts/dmenu-audio
Executable file
26
_suckless/_scripts/dmenu-audio
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
set_out() {
|
||||
sinks=$(pamixer --list-sinks | grep -v '^Sinks:$' | awk -F'"' '{print $4}')
|
||||
sel_sink=$(printf "$sinks" | dmenu -l 10 -i -p "wut")
|
||||
pactl set-default-sink $(pamixer --list-sinks | grep "$sel_sink" | awk '{print $1}')
|
||||
kill -46 $(pidof dwmblocks)
|
||||
}
|
||||
|
||||
set_in() {
|
||||
sources=$(pamixer --list-sources | grep -v '^Sources:$' | grep -v 'Monitor of ' | awk -F'"' '{print $4}')
|
||||
sel_source=$(printf "$sources" | dmenu -l 10 -i -p "wut")
|
||||
pactl set-default-source $(pamixer --list-sources | grep "$sel_source" | awk '{print $1}')
|
||||
kill -46 $(pidof dwmblocks)
|
||||
}
|
||||
|
||||
sinks=$(pamixer --list-sinks | grep -v '^Sinks:$' | awk -F'"' '{print $4}')
|
||||
[ "$(echo "$sinks" | wc -l)" -lt 2 ] &&
|
||||
{ notify-send "🔊 Only one sink detected."; exit; }
|
||||
|
||||
chosen=$(printf "output\\ninput" | dmenu -i -p "What to change:")
|
||||
case "$chosen" in
|
||||
output) set_out ;;
|
||||
input) set_in ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
@ -1,42 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $(xrandr | grep DisplayPort | grep ' connected' | wc -l) -gt 0 ]; then
|
||||
sink=$(pamixer --list-sinks | awk '/HDMI/ {print $1}')
|
||||
if [ "${1}" = "micmute" ]; then
|
||||
case $(cat '/sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness') in
|
||||
1) echo 0 | sudo tee /sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness;;
|
||||
0) echo 1 | sudo tee /sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness;;
|
||||
esac
|
||||
for i in $(pactl list short sources | grep -v '\.monitor' | awk '{print $1}'); do
|
||||
pactl set-source-mute "${i}" toggle
|
||||
done
|
||||
kill -46 $(pidof dwmblocks)
|
||||
else
|
||||
sink=$(pamixer --list-sinks | awk '/HD Audio Controller/ {print $1}')
|
||||
vol="$(pamixer --get-volume)"
|
||||
[ $(echo $vol | wc -c) -lt 4 ] && svol=" ${vol}%%" || svol="${vol}%%"
|
||||
[ $(pamixer --get-mute) = true ] && volinfo="^c#eeeeee^^b#005577^\ue04f mute^d^" || volinfo="\ue050 ${svol}"
|
||||
device=$(pamixer --list-sources | grep -v '^Sources:$' | grep -v 'Monitor of ' | head -n 1 | awk '{print $1}')
|
||||
[ $(pamixer --source $device --get-mute) = true ] && micinfo="^c#eeeeee^^b#005577^\ue02b^d^" || micinfo="\ue02a^d^"
|
||||
printf "${micinfo} ${volinfo}"
|
||||
fi
|
||||
|
||||
case "${1}" in
|
||||
"micmute")
|
||||
case $(cat '/sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness') in
|
||||
1) echo 0 | sudo tee /sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness;;
|
||||
0) echo 1 | sudo tee /sys/devices/platform/thinkpad_acpi/leds/platform::micmute/brightness;;
|
||||
esac
|
||||
device=$(pamixer --list-sources | awk '/Raven/ {print $1}')
|
||||
for i in $(pamixer --list-sources | grep -v Sources | awk '{print $1}'); do
|
||||
pamixer --source $i -t
|
||||
done
|
||||
kill -46 $(pidof dwmblocks)
|
||||
exit ;;
|
||||
"volmute")
|
||||
for i in $(pamixer --list-sinks | grep -v Sinks | awk '{print $1}'); do
|
||||
pamixer --sink $i -t
|
||||
done
|
||||
kill -46 $(pidof dwmblocks)
|
||||
exit ;;
|
||||
"increase")
|
||||
pamixer --sink $sink --allow-boost -i 5
|
||||
kill -46 $(pidof dwmblocks)
|
||||
exit ;;
|
||||
"decrease")
|
||||
pamixer --sink $sink --allow-boost -d 5
|
||||
kill -46 $(pidof dwmblocks)
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
vol="$(pamixer --sink $sink --get-volume)"
|
||||
[ $(echo $vol | wc -c) -lt 4 ] && svol=" ${vol}%%" || svol="${vol}%%"
|
||||
[ $(pamixer --sink $sink --get-mute) = true ] && volinfo="^c#eeeeee^^b#005577^\ue04f mute^d^" || volinfo="\ue050 ${svol}"
|
||||
device=$(pamixer --list-sources | awk '/Raven/ {print $1}')
|
||||
[ $(pamixer --source $device --get-mute) = true ] && micinfo="^c#eeeeee^^b#005577^\ue02b^d^" || micinfo="\ue02a^d^"
|
||||
printf "${micinfo} ${volinfo}"
|
||||
|
@ -112,6 +112,7 @@ static Key keys[] = {
|
||||
{ MODKEY, XK_q, killclient, {0} },
|
||||
{ MODKEY, XK_e, togglescratch, {.ui = 0 } },
|
||||
/* service controls */
|
||||
{ CTRKEY, XK_a, spawn, SHCMD("dmenu-audio") },
|
||||
{ CTRKEY, XK_b, spawn, SHCMD("dmenu-bluetooth") },
|
||||
{ CTRKEY, XK_d, spawn, SHCMD("dmenu-display") },
|
||||
{ CTRKEY, XK_l, spawn, SHCMD("slock") },
|
||||
@ -138,10 +139,10 @@ static Key keys[] = {
|
||||
{ MODKEY, XK_period, focusmon, {.i = +1 } },
|
||||
{ SHTKEY, XK_comma, tagmon, {.i = -1 } },
|
||||
{ SHTKEY, XK_period, tagmon, {.i = +1 } },
|
||||
{ 0, XF86XK_AudioMute, spawn, SHCMD("sb-volume volmute") },
|
||||
{ 0, XF86XK_AudioMute, spawn, SHCMD("pactl set-sink-mute @DEFAULT_SINK@ toggle; kill -46 $(pidof dwmblocks)") },
|
||||
{ 0, XF86XK_AudioMicMute, spawn, SHCMD("sb-volume micmute") },
|
||||
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("sb-volume increase") },
|
||||
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("sb-volume decrease") },
|
||||
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pactl set-sink-volume @DEFAULT_SINK@ +5%; kill -46 $(pidof dwmblocks)") },
|
||||
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pactl set-sink-volume @DEFAULT_SINK@ -5%; kill -46 $(pidof dwmblocks)") },
|
||||
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("sudo xbacklight -inc 10") },
|
||||
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("sudo xbacklight -dec 10") },
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user