From 06fd86bf78406d9eaca7426853e3a2b45fcdd119 Mon Sep 17 00:00:00 2001 From: Alex Kelly Date: Sun, 26 Jun 2022 23:17:54 -0400 Subject: initial checkin --- rofi-sound-output-chooser | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 rofi-sound-output-chooser (limited to 'rofi-sound-output-chooser') diff --git a/rofi-sound-output-chooser b/rofi-sound-output-chooser new file mode 100755 index 0000000..d51c71d --- /dev/null +++ b/rofi-sound-output-chooser @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# Outputs have spaces in them, so let's make \n the IFS +IFS=$'\n' + +# Menu will have a quit option, though you could just escape +if [ "$*" = "quit" ] +then + exit 0 +fi + + +# An option was passed, so let's check it +if [ "$@" ] +then + # the output from the selection will be the desciption. Save that for alerts + desc="$*" + # Figure out what the device name is based on the description passed + device=$(pactl list sinks|grep -C2 "Description: $desc"|grep Name|cut -d: -f2|xargs) + # Try to set the default to the device chosen + if pactl set-default-sink "$device" + then + # if it worked, alert the user + dunstify -t 2000 -r 2 -u low "Activated: $desc" + else + # didn't work, critically alert the user + dunstify -t 2000 -r 2 -u critical "Error activating $desc" + fi +else + echo -en "\x00prompt\x1fSelect Output\n" + # Get the list of outputs based on the description, which is what makes sense to a human + # and is what we want to show in the menu + for x in $(pactl list sinks | grep -ie "description:"|cut -d: -f2) + do + # outputs with cut may have spaces, so use empty xargs to remove them, and output that to the rofi list + echo "$x"|xargs + done + echo "quit" +fi -- cgit