diff --git a/dmenu-pulse-port-man b/dmenu-pulse-port-man index ddf2bde..2cbe037 100755 --- a/dmenu-pulse-port-man +++ b/dmenu-pulse-port-man @@ -2,14 +2,32 @@ source $HOME/.config/dmenu/config -notAvailable=$(pactl list sinks | grep 'analog-output-headphones' | grep 'not available') +portMan () { + notAvailable=$(pactl list sinks | grep 'analog-output-headphones' | grep 'not available') -[ ! -z "$notAvailable" ] && quick-notify "Port Master" "Only one port available" && exit + [ ! -z "$notAvailable" ] && quick-notify "Port Master" "Only one port available" && exit -current=$(pactl list sinks | grep 'Active Port' | awk '{ print $3 }') -[ "$current" = "analog-output-speaker" ] && current="Speakers" || current="Headphones" + current=$(pactl list sinks | grep 'Active Port' | awk '{ print $3 }') + [ "$current" = "analog-output-speaker" ] && current="Speakers" || current="Headphones" -case "$(printf "Speakers\\nHeadphones" | $DMENU -p "Current: $current ")" in - "Speakers") pactl set-sink-port 0 analog-output-speaker ;; - "Headphones") pactl set-sink-port 0 analog-output-headphones ;; + case "$(printf "Speakers\\nHeadphones" | $DMENU -p "Current: $current ")" in + "Speakers") pactl set-sink-port 0 analog-output-speaker ;; + + esac +} + +programVolToggle () { + inputSinks=$(pactl list sink-inputs | sed -e 's/^[ \t]*//' | awk '/^Sink Input/{sink=$3} /^application.name/{name=$3; print name, sink}' ) + + [ -z "$inputSinks" ] && quick-notify "Program Master" "No Programs Inputing Sound" && exit + + programSink=$(printf '%s' $inputSinks | dmenu -l 5 -p "Toggle volume: " | awk '{ print $2 }' | sed 's/#//') + + pactl set-sink-input-mute $programSink toggle +} + +case "$(printf "port\\nprogram" | $DMENU -p "Sound Control: ")" in + port) portMan ;; + program) programVolToggle ;; + *) exit ;; esac