aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.local/bin/dmenuaudioswitch39
1 files changed, 39 insertions, 0 deletions
diff --git a/.local/bin/dmenuaudioswitch b/.local/bin/dmenuaudioswitch
new file mode 100755
index 0000000..e878f23
--- /dev/null
+++ b/.local/bin/dmenuaudioswitch
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+select_output()
+{
+ listofdevices=$(wpctl status | awk '/Sinks:/{flag=1; next} /^ ├─/{flag=0} flag {
+ line=$0
+ gsub(/^ *[│├─]* */,"",line) # nuke leading garbage
+ print line
+ }' | sed 's/ \[vol: [^]]*\]//g' | rg -v '^$' | sed 's/[[:space:]]\+$//')
+ device=$( printf "%s" "$listofdevices" | mew -l 10 | awk '{match($0,/[0-9]+/); print substr($0,RSTART,RLENGTH)}')
+ wpctl set-default $device && notify-send "$(printf "%s" "$listofdevices" | rg $device) is now default output device" && exit 0
+ notify-send "Something went wrong"
+}
+
+select_input()
+{
+ listofdevices=$(wpctl status | awk '/Sources:/{flag=1; next} /^ ├─/{flag=0} flag {
+ line=$0
+ gsub(/^ *[│├─]* */,"",line) # nuke leading garbage
+ print line
+ }' | sed 's/ \[vol: [^]]*\]//g' | rg -v '^$' | sed 's/[[:space:]]\+$//')
+ device=$( printf "%s" "$listofdevices" | mew -l 10 | awk '{match($0,/[0-9]+/); print substr($0,RSTART,RLENGTH)}')
+ wpctl set-default $device && notify-send "$(printf "%s" "$listofdevices" | rg $device) is now default input device" && exit 0
+ notify-send "Something went wrong"
+}
+
+choice=$(printf "input\noutput" | mew -l 2 -p "Output or input devices?")
+
+case "$choice" in
+ "input")
+ select_input
+ ;;
+ "output")
+ select_output
+ ;;
+ *)
+ exit 1
+ ;;
+esac