aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr/UserScripts/RofiBeats.sh
diff options
context:
space:
mode:
Diffstat (limited to 'config/hypr/UserScripts/RofiBeats.sh')
-rwxr-xr-xconfig/hypr/UserScripts/RofiBeats.sh84
1 files changed, 67 insertions, 17 deletions
diff --git a/config/hypr/UserScripts/RofiBeats.sh b/config/hypr/UserScripts/RofiBeats.sh
index e3c79587..76634a1a 100755
--- a/config/hypr/UserScripts/RofiBeats.sh
+++ b/config/hypr/UserScripts/RofiBeats.sh
@@ -1,13 +1,14 @@
#!/bin/bash
+# Directory music folder
+mDIR="$HOME/Music/"
+
# Directory for icons
iDIR="$HOME/.config/swaync/icons"
-# Note: You can add more options below with the following format:
-# ["TITLE"]="link"
-
-# Define menu options as an associative array
-declare -A menu_options=(
+# Online Stations
+declare -A online_music=(
+ ["AfroBeatz 2024 🎧"]="https://www.youtube.com/watch?v=7uB-Eh9XVZQ"
["Lofi Girl ☕️🎶"]="https://play.streamafrica.net/lofiradio"
["Easy Rock 96.3 FM 📻🎶"]="https://radio-stations-philippines.com/easy-rock"
["Wish 107.5 FM 📻🎶"]="https://radio-stations-philippines.com/dwnu-1075-wish"
@@ -21,30 +22,79 @@ declare -A menu_options=(
["Korean Drama OST 📻🎶"]="https://youtube.com/playlist?list=PLUge_o9AIFp4HuA-A3e3ZqENh63LuRRlQ"
)
+# Local Music
+# Populate local_music array with files from music directory and subdirectories
+populate_local_music() {
+ local_music=()
+ filenames=()
+ while IFS= read -r file; do
+ local_music+=("$file")
+ filenames+=("$(basename "$file")")
+ done < <(find "$mDIR" -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.wav" -o -iname "*.ogg" \))
+}
+
# Function for displaying notifications
notification() {
- notify-send -u normal -i "$iDIR/music.png" "Playing now: $@"
+ notify-send -u normal -i "$iDIR/music.png" "Playing: $@"
}
-# Main function
-main() {
- choice=$(printf "%s\n" "${!menu_options[@]}" | rofi -i -dmenu -config ~/.config/rofi/config-rofi-Beats.rasi -p "")
+# Main function for playing local music
+play_local_music() {
+ populate_local_music
+
+ # Prompt the user to select a song
+ choice=$(printf "%s\n" "${filenames[@]}" | rofi -i -dmenu -config ~/.config/rofi/config-rofi-Beats.rasi -p "Local Music")
if [ -z "$choice" ]; then
exit 1
fi
- link="${menu_options[$choice]}"
+ # Find the corresponding file path based on user's choice
+ for (( i=0; i<"${#filenames[@]}"; i++ )); do
+ if [ "${filenames[$i]}" = "$choice" ]; then
+ file="${local_music[$i]}"
+ break
+ fi
+ done
notification "$choice"
-
- # Check if the link is a playlist
- if [[ $link == *playlist* ]]; then
- mpv --shuffle --vid=no "$link"
- else
- mpv "$link"
+
+ # Play the selected local music file using mpv
+ mpv --shuffle --vid=no "$file"
+}
+
+
+# Main function for playing online music
+play_online_music() {
+ choice=$(printf "%s\n" "${!online_music[@]}" | rofi -i -dmenu -config ~/.config/rofi/config-rofi-Beats.rasi -p "Online Music")
+
+ if [ -z "$choice" ]; then
+ exit 1
fi
+
+ link="${online_music[$choice]}"
+
+ notification "$choice"
+
+ # Play the selected online music using mpv
+ mpv --shuffle --vid=no "$link"
}
# Check if an online music process is running and send a notification, otherwise run the main function
-pkill mpv && notify-send -u low -i "$iDIR/music.png" "Online Music stopped" || main
+pkill mpv && notify-send -u low -i "$iDIR/music.png" "Online Music stopped" || {
+
+# Prompt the user to choose between local and online music
+user_choice=$(printf "Play from Music Folder\nPlay from Online Stations" | rofi -dmenu -config ~/.config/rofi/config-rofi-Beats-menu.rasi -p "Select music source")
+
+ case "$user_choice" in
+ "Play from Music Folder")
+ play_local_music
+ ;;
+ "Play from Online Stations")
+ play_online_music
+ ;;
+ *)
+ echo "Invalid choice"
+ ;;
+ esac
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage