diff options
author | altaf-creator <dev@altafcreator.com> | 2024-05-19 14:54:41 +0700 |
---|---|---|
committer | altaf-creator <dev@altafcreator.com> | 2024-05-19 14:54:41 +0700 |
commit | 3ec8d42fbf6eed78c24de2caca63d91a2604ff50 (patch) | |
tree | 985517bcce150969a050f7f408bea6670177bbb7 /config/rofi/applets/bin/volume.sh |
Diffstat (limited to 'config/rofi/applets/bin/volume.sh')
-rwxr-xr-x | config/rofi/applets/bin/volume.sh | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/config/rofi/applets/bin/volume.sh b/config/rofi/applets/bin/volume.sh new file mode 100755 index 0000000..a194592 --- /dev/null +++ b/config/rofi/applets/bin/volume.sh @@ -0,0 +1,134 @@ +#!/usr/bin/env bash + +## Author : Aditya Shakya (adi1090x) +## Github : @adi1090x +# +## Applets : Volume + +# Import Current Theme +source "$HOME"/.config/rofi/applets/shared/theme.bash +theme="$type/$style" + +# 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='Unmute' + sicon='' +else + urgent="-u 1" + stext='Mute' + sicon='' +fi + +# Microphone Info +amixer get Capture | grep '\[on\]' &>/dev/null +if [[ "$?" == 0 ]]; then + [ -n "$active" ] && active+=",3" || active="-a 3" + mtext='Unmute' + micon='' +else + [ -n "$urgent" ] && urgent+=",3" || urgent="-u 3" + mtext='Mute' + micon='' +fi + +# Theme Elements +prompt="S:$stext, M:$mtext" +mesg="$mixer - Speaker: $speaker, Mic: $mic" + +if [[ "$theme" == *'type-1'* ]]; then + list_col='1' + list_row='5' + win_width='400px' +elif [[ "$theme" == *'type-3'* ]]; then + list_col='1' + list_row='5' + win_width='120px' +elif [[ "$theme" == *'type-5'* ]]; then + list_col='1' + list_row='5' + win_width='520px' +elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then + list_col='5' + list_row='1' + win_width='670px' +fi + +# Options +layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2` +if [[ "$layout" == 'NO' ]]; then + option_1=" Increase" + option_2="$sicon $stext" + option_3=" Decrese" + option_4="$micon $mtext" + option_5=" Settings" +else + option_1="" + option_2="$sicon" + option_3="" + option_4="$micon" + option_5="" +fi + +# Rofi CMD +rofi_cmd() { + rofi -theme-str "window {width: $win_width;}" \ + -theme-str "listview {columns: $list_col; lines: $list_row;}" \ + -theme-str 'textbox-prompt-colon {str: "";}' \ + -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" | rofi_cmd +} + +# Execute Command +run_cmd() { + if [[ "$1" == '--opt1' ]]; then + amixer -Mq set Master,0 5%+ unmute + elif [[ "$1" == '--opt2' ]]; then + amixer set Master toggle + elif [[ "$1" == '--opt3' ]]; then + amixer -Mq set Master,0 5%- unmute + elif [[ "$1" == '--opt4' ]]; then + amixer set Capture toggle + elif [[ "$1" == '--opt5' ]]; then + pavucontrol + 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 + ;; +esac + |