117 lines
2.4 KiB
Bash
Executable File
117 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ $# -eq 0 ]; then
|
|
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
|
|
exit 1
|
|
fi
|
|
|
|
# Function to get metadata using playerctl
|
|
get_metadata() {
|
|
key=$1
|
|
playerctl metadata --player=%any,chromium,firefox --format "{{ $key }}" 2>/dev/null
|
|
}
|
|
|
|
# Check for arguments
|
|
|
|
# Function to determine the source and return an icon and text
|
|
get_source_info_symbol() {
|
|
trackid=$(get_metadata "mpris:trackid")
|
|
if [[ "$trackid" == *"firefox"* ]]; then
|
|
echo -e ""
|
|
elif [[ "$trackid" == *"spotify"* ]]; then
|
|
echo -e ""
|
|
elif [[ "$trackid" == *"chromium"* ]]; then
|
|
echo -e ""
|
|
else
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
get_source_info() {
|
|
trackid=$(get_metadata "mpris:trackid")
|
|
if [[ "$trackid" == *"firefox"* ]]; then
|
|
echo -e "Firefox"
|
|
elif [[ "$trackid" == *"spotify"* ]]; then
|
|
echo -e "Spotify"
|
|
elif [[ "$trackid" == *"chromium"* ]]; then
|
|
echo -e "Chrome"
|
|
else
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
# Function to truncate text with ellipsis if necessary
|
|
truncate_with_ellipsis() {
|
|
text=$1
|
|
max_length=$2
|
|
if [ ${#text} -gt $max_length ]; then
|
|
echo "${text:0:$((max_length - 3))}..."
|
|
else
|
|
echo "$text"
|
|
fi
|
|
}
|
|
|
|
# Parse the argument
|
|
case "$1" in
|
|
--title)
|
|
title=$(get_metadata "xesam:title")
|
|
if [ -z "$title" ]; then
|
|
echo ""
|
|
else
|
|
truncate_with_ellipsis "$title" 28 # Limit the output to 50 characters
|
|
fi
|
|
;;
|
|
--artist)
|
|
artist=$(get_metadata "xesam:artist")
|
|
if [ -z "$artist" ]; then
|
|
echo ""
|
|
else
|
|
truncate_with_ellipsis "$artist" 28 # Limit the output to 50 characters
|
|
fi
|
|
;;
|
|
--status-symbol)
|
|
status=$(playerctl status 2>/dev/null)
|
|
if [[ $status == "Playing" ]]; then
|
|
echo ""
|
|
elif [[ $status == "Paused" ]]; then
|
|
echo ""
|
|
else
|
|
echo ""
|
|
fi
|
|
;;
|
|
--status)
|
|
status=$(playerctl status 2>/dev/null)
|
|
if [[ $status == "Playing" ]]; then
|
|
echo "Playing Now"
|
|
elif [[ $status == "Paused" ]]; then
|
|
echo "Paused"
|
|
else
|
|
echo ""
|
|
fi
|
|
;;
|
|
--album)
|
|
album=$(playerctl metadata --player=%any,chromium,firefox --format "{{ xesam:album }}" 2>/dev/null)
|
|
if [[ -n $album ]]; then
|
|
echo "$album"
|
|
else
|
|
status=$(playerctl status 2>/dev/null)
|
|
if [[ -n $status ]]; then
|
|
echo "Not album"
|
|
else
|
|
truncate_with_ellipsis "$album" 28 # Limit the output to 50 characters
|
|
fi
|
|
fi
|
|
;;
|
|
--source-symbol)
|
|
get_source_info_symbol
|
|
;;
|
|
--source)
|
|
get_source_info
|
|
;;
|
|
*)
|
|
echo "Invalid option: $1"
|
|
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
|
|
exit 1
|
|
;;
|
|
esac
|