add hyprland configs
This commit is contained in:
150
.config/hypr/hyprlock/scripts/playerctlock.sh
Executable file
150
.config/hypr/hyprlock/scripts/playerctlock.sh
Executable file
@@ -0,0 +1,150 @@
|
||||
#!/bin/env bash
|
||||
|
||||
THUMB=/tmp/hyde-mpris
|
||||
THUMB_BLURRED=/tmp/hyde-mpris-blurred
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
echo "Usage: $0 --title | --arturl | --artist | --position | --length | --album | --source"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Function to get metadata using playerctl
|
||||
get_metadata() {
|
||||
key=$1
|
||||
playerctl metadata --format "{{ $key }}" 2>/dev/null
|
||||
|
||||
|
||||
}
|
||||
|
||||
# Function to determine the source and return an icon and text
|
||||
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 "
|
||||
elif [[ "$trackid" == *"YoutubeMusic"* ]]; then
|
||||
echo -e "YouTubeMusic "
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to get position using playerctl
|
||||
get_position() {
|
||||
playerctl position 2>/dev/null
|
||||
}
|
||||
|
||||
# Function to convert microseconds to minutes and seconds
|
||||
convert_length() {
|
||||
local length=$1
|
||||
local seconds=$((length / 1000000))
|
||||
local minutes=$((seconds / 60))
|
||||
local remaining_seconds=$((seconds % 60))
|
||||
printf "%d:%02d m" $minutes $remaining_seconds
|
||||
}
|
||||
|
||||
# Function to convert seconds to minutes and seconds
|
||||
convert_position() {
|
||||
local position=$1
|
||||
local seconds=${position%.*} # Remove fractional part if exists
|
||||
local minutes=$((seconds / 60))
|
||||
local remaining_seconds=$((seconds % 60))
|
||||
printf "%d:%02d" $minutes $remaining_seconds
|
||||
}
|
||||
|
||||
# Function to fetch album art and create blurred version
|
||||
fetch_thumb() {
|
||||
artUrl=$(playerctl -p spotify metadata --format '{{mpris:artUrl}}')
|
||||
[[ "${artUrl}" = "$(cat "${THUMB}.inf")" ]] && return 0
|
||||
|
||||
printf "%s\n" "$artUrl" > "${THUMB}.inf"
|
||||
|
||||
curl -so "${THUMB}.png" "$artUrl"
|
||||
magick "${THUMB}.png" -quality 50 "${THUMB}.png"
|
||||
# Create blurred version
|
||||
magick "${THUMB}.png" -blur 200x7 -resize 1920x^ -gravity center -extent 1920x1080\! "${THUMB_BLURRED}.png"
|
||||
|
||||
pkill -USR2 hyprlock
|
||||
}
|
||||
|
||||
# Run fetch_thumb function in the background
|
||||
{ fetch_thumb ;} || { rm -f "${THUMB}*" && exit 1;} &
|
||||
|
||||
# Parse the argument
|
||||
case "$1" in
|
||||
--title)
|
||||
title=$(get_metadata "xesam:title")
|
||||
if [ -z "$title" ]; then
|
||||
echo ""
|
||||
else
|
||||
echo "${title:0:50}" # Limit the output to 50 characters
|
||||
fi
|
||||
;;
|
||||
# --arturl)
|
||||
# fetch_thumb & # Run fetch_thumb in the background
|
||||
# url=$(get_metadata "mpris:artUrl")
|
||||
# if [[ "$(playerctl -p status)" != "Playing" ]]; then
|
||||
# rm -f /tmp/hyde-mpris*
|
||||
# fi
|
||||
# ;;
|
||||
--artist)
|
||||
artist=$(get_metadata "xesam:artist")
|
||||
if [ -z "$artist" ]; then
|
||||
echo ""
|
||||
else
|
||||
echo "${artist:0:50}" # Limit the output to 50 characters
|
||||
fi
|
||||
;;
|
||||
--position)
|
||||
position=$(get_position)
|
||||
length=$(get_metadata "mpris:length")
|
||||
if [ -z "$position" ] || [ -z "$length" ]; then
|
||||
echo ""
|
||||
else
|
||||
position_formatted=$(convert_position "$position")
|
||||
length_formatted=$(convert_length "$length")
|
||||
echo "$position_formatted/$length_formatted"
|
||||
fi
|
||||
;;
|
||||
--length)
|
||||
length=$(get_metadata "mpris:length")
|
||||
if [ -z "$length" ]; then
|
||||
echo ""
|
||||
else
|
||||
convert_length "$length"
|
||||
fi
|
||||
;;
|
||||
--status)
|
||||
status=$(playerctl status 2>/dev/null)
|
||||
if [[ $status == "Playing" ]]; then
|
||||
echo ""
|
||||
elif [[ $status == "Paused" ]]; then
|
||||
echo ""
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
;;
|
||||
--album)
|
||||
album=$(playerctl metadata --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
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
--source)
|
||||
get_source_info
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option: $1"
|
||||
echo "Usage: $0 --title | --arturl | --artist | --position | --length | --album | --source" ; exit 1
|
||||
;;
|
||||
esac
|
Reference in New Issue
Block a user