summaryrefslogtreecommitdiff
path: root/config/rofi/applets/bin/mpd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'config/rofi/applets/bin/mpd.sh')
-rwxr-xr-xconfig/rofi/applets/bin/mpd.sh131
1 files changed, 131 insertions, 0 deletions
diff --git a/config/rofi/applets/bin/mpd.sh b/config/rofi/applets/bin/mpd.sh
new file mode 100755
index 0000000..ce6a9e9
--- /dev/null
+++ b/config/rofi/applets/bin/mpd.sh
@@ -0,0 +1,131 @@
+#!/usr/bin/env bash
+
+## Author : Aditya Shakya (adi1090x)
+## Github : @adi1090x
+#
+## Applets : MPD (music)
+
+# Import Current Theme
+source "$HOME"/.config/rofi/applets/shared/theme.bash
+theme="$type/$style"
+
+# Theme Elements
+status="`mpc status`"
+if [[ -z "$status" ]]; then
+ prompt='Offline'
+ mesg="MPD is Offline"
+else
+ prompt="`mpc -f "%artist%" current`"
+ mesg="`mpc -f "%title%" current` :: `mpc status | grep "#" | awk '{print $3}'`"
+fi
+
+if [[ ( "$theme" == *'type-1'* ) || ( "$theme" == *'type-3'* ) || ( "$theme" == *'type-5'* ) ]]; then
+ list_col='1'
+ list_row='6'
+elif [[ ( "$theme" == *'type-2'* ) || ( "$theme" == *'type-4'* ) ]]; then
+ list_col='6'
+ list_row='1'
+fi
+
+# Options
+layout=`cat ${theme} | grep 'USE_ICON' | cut -d'=' -f2`
+if [[ "$layout" == 'NO' ]]; then
+ if [[ ${status} == *"[playing]"* ]]; then
+ option_1=" Pause"
+ else
+ option_1=" Play"
+ fi
+ option_2=" Stop"
+ option_3=" Previous"
+ option_4=" Next"
+ option_5=" Repeat"
+ option_6=" Random"
+else
+ if [[ ${status} == *"[playing]"* ]]; then
+ option_1=""
+ else
+ option_1=""
+ fi
+ option_2=""
+ option_3=""
+ option_4=""
+ option_5=""
+ option_6=""
+fi
+
+# Toggle Actions
+active=''
+urgent=''
+# Repeat
+if [[ ${status} == *"repeat: on"* ]]; then
+ active="-a 4"
+elif [[ ${status} == *"repeat: off"* ]]; then
+ urgent="-u 4"
+else
+ option_5=" Parsing Error"
+fi
+# Random
+if [[ ${status} == *"random: on"* ]]; then
+ [ -n "$active" ] && active+=",5" || active="-a 5"
+elif [[ ${status} == *"random: off"* ]]; then
+ [ -n "$urgent" ] && urgent+=",5" || urgent="-u 5"
+else
+ option_6=" Parsing Error"
+fi
+
+# Rofi CMD
+rofi_cmd() {
+ rofi -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\n$option_6" | rofi_cmd
+}
+
+# Execute Command
+run_cmd() {
+ if [[ "$1" == '--opt1' ]]; then
+ mpc -q toggle && notify-send -u low -t 1000 " `mpc current`"
+ elif [[ "$1" == '--opt2' ]]; then
+ mpc -q stop
+ elif [[ "$1" == '--opt3' ]]; then
+ mpc -q prev && notify-send -u low -t 1000 " `mpc current`"
+ elif [[ "$1" == '--opt4' ]]; then
+ mpc -q next && notify-send -u low -t 1000 " `mpc current`"
+ elif [[ "$1" == '--opt5' ]]; then
+ mpc -q repeat
+ elif [[ "$1" == '--opt6' ]]; then
+ mpc -q random
+ 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