122 lines
2.6 KiB
Bash
Executable File
122 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
## Author : Aditya Shakya (adi1090x)
|
||
## Github : @adi1090x
|
||
#
|
||
## Applets : Volume
|
||
|
||
theme="~/.config/rofi/volume/volume.rasi"
|
||
|
||
# Volume Info
|
||
mixer="`amixer info Master | grep 'Mixer name' | cut -d':' -f2 | tr -d \',' '`"
|
||
speaker="`amixer get Master | tail -n1 | awk -F ' ' '{print $5}' | tr -d '[]'`"
|
||
mic="`amixer get Capture | tail -n1 | awk -F ' ' '{print $5}' | tr -d '[]'`"
|
||
|
||
active=""
|
||
urgent=""
|
||
|
||
# Speaker Info
|
||
amixer get Master | grep '\[on\]' &>/dev/null
|
||
if [[ "$?" == 0 ]]; then
|
||
active="-a 1"
|
||
stext='Mute Speaker'
|
||
sicon=''
|
||
else
|
||
urgent="-u 1"
|
||
stext='Unmute Speaker'
|
||
sicon=''
|
||
fi
|
||
|
||
# Microphone Info
|
||
amixer get Capture | grep '\[on\]' &>/dev/null
|
||
if [[ "$?" == 0 ]]; then
|
||
[ -n "$active" ] && active+=",3" || active="-a 3"
|
||
mtext='Mute Mic'
|
||
micon=''
|
||
else
|
||
[ -n "$urgent" ] && urgent+=",3" || urgent="-u 3"
|
||
mtext='Unmute Mic'
|
||
micon=''
|
||
fi
|
||
|
||
currentsink=$(ponymix defaults|awk '/^sink/ {s=$1" "$2;getline;gsub(/^ +/,"",$0);print s" "$0}' | cut -d':' -f2)
|
||
currentsource=$(ponymix defaults|awk '/^source/ {s=$1" "$2;getline;gsub(/^ +/,"",$0);print s" "$0}' | cut -d':' -f2)
|
||
|
||
|
||
# Theme Elements
|
||
prompt="Speaker: $sicon Mic: $micon "
|
||
mesg="$mixer Speaker: $speaker Mic: $mic"
|
||
|
||
list_col='6'
|
||
list_row='3'
|
||
win_width='670px'
|
||
|
||
# Options
|
||
option_1="$micon $mtext ›$currentsource"
|
||
option_2="$sicon $stext ›$currentsink"
|
||
option_3=" Sink Switcher"
|
||
option_4=""
|
||
option_5=" Mixer"
|
||
option_6=" Noise Torch"
|
||
|
||
|
||
# Rofi CMD
|
||
#-theme-str "listview {columns: $list_col; lines: $list_row;}" \
|
||
rofi_cmd() {
|
||
rofi -theme-str "window {width: $win_width;}" \
|
||
-dmenu \
|
||
-p "$prompt" \
|
||
-mesg "$mesg" \
|
||
${active} ${urgent} \
|
||
-markup-rows \
|
||
-theme ${theme}
|
||
}
|
||
|
||
# Pass variables to rofi dmenu
|
||
run_rofi() {
|
||
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd
|
||
}
|
||
|
||
# Execute Command
|
||
run_cmd() {
|
||
if [[ "$1" == '--opt3' ]]; then
|
||
#amixer -Mq set Master,0 5%+ unmute
|
||
$HOME/.config/rofi/audio/rofi-sink-switcher.sh
|
||
elif [[ "$1" == '--opt2' ]]; then
|
||
amixer set Master toggle
|
||
elif [[ "$1" == '--opt4' ]]; then
|
||
amixer -Mq set Master,0 5%- unmute
|
||
|
||
elif [[ "$1" == '--opt1' ]]; then
|
||
amixer set Capture toggle
|
||
elif [[ "$1" == '--opt5' ]]; then
|
||
pavucontrol
|
||
elif [[ "$1" == '--opt6' ]]; then
|
||
noisetorch
|
||
fi
|
||
}
|
||
|
||
# Actions
|
||
chosen="$(run_rofi)"
|
||
case ${chosen} in
|
||
$option_1)
|
||
run_cmd --opt1
|
||
;;
|
||
$option_2)
|
||
run_cmd --opt2
|
||
;;
|
||
$option_3)
|
||
run_cmd --opt3
|
||
;;
|
||
$option_4)
|
||
run_cmd --opt4
|
||
;;
|
||
$option_5)
|
||
run_cmd --opt5
|
||
;;
|
||
$option_6)
|
||
run_cmd --opt6
|
||
;;
|
||
esac
|
||
|