|
|
|
|
@ -1,18 +1,10 @@
|
|
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
# Directory for icons |
|
|
|
|
iDIR="$HOME/.config/swaync/icons" |
|
|
|
|
|
|
|
|
|
# Directory music folder |
|
|
|
|
mDIR="$HOME/Music/*" |
|
|
|
|
mDIR="$HOME/Music/" |
|
|
|
|
|
|
|
|
|
# Local Music |
|
|
|
|
declare -A local_music |
|
|
|
|
# Populate the menu_options array with music files from the Music folder |
|
|
|
|
for file in $mDIR; do |
|
|
|
|
filename=$(basename "$file") |
|
|
|
|
local_music["$filename"]="$file" |
|
|
|
|
done |
|
|
|
|
# Directory for icons |
|
|
|
|
iDIR="$HOME/.config/swaync/icons" |
|
|
|
|
|
|
|
|
|
# Online Stations |
|
|
|
|
declare -A online_music=( |
|
|
|
|
@ -30,6 +22,17 @@ declare -A online_music=(
|
|
|
|
|
["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: $@" |
|
|
|
|
@ -37,26 +40,30 @@ notification() {
|
|
|
|
|
|
|
|
|
|
# Main function for playing local music |
|
|
|
|
play_local_music() { |
|
|
|
|
populate_local_music |
|
|
|
|
|
|
|
|
|
# Prompt the user to select a song |
|
|
|
|
choice=$(printf "%s\n" "${!local_music[@]}" | rofi -i -dmenu -config ~/.config/rofi/config-rofi-Beats.rasi -p "Local Music") |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
file="${local_music[$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" |
|
|
|
|
|
|
|
|
|
# Play the selected local music file using mpv and shuffle the rest |
|
|
|
|
mpv --shuffle --vid=no "$file" && \ |
|
|
|
|
for file in $mDIR; do |
|
|
|
|
if [ "$file" != "${local_music[$choice]}" ]; then |
|
|
|
|
# Play the selected local music file using mpv |
|
|
|
|
mpv --shuffle --vid=no "$file" |
|
|
|
|
fi |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 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") |
|
|
|
|
@ -91,4 +98,3 @@ pkill mpv && notify-send -u low -i "$iDIR/music.png" "Online Music stopped" || {
|
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|