Regenerated
This commit is contained in:
+374
-345
File diff suppressed because it is too large
Load Diff
+38
-9
@@ -3109,16 +3109,24 @@ ShellRoot {
|
||||
** =generated/.config/scripts/media.sh=
|
||||
Providing an media
|
||||
#+BEGIN_SRC sh :tangle generated/.config/scripts/media.sh :shebang "#!/usr/bin/env bash" :noweb yes :mkdirp yes :eval never
|
||||
player=$(playerctl -l 2>/dev/null | head -n1)
|
||||
# Player selection — prefer actively playing player
|
||||
player=$(playerctl -l 2>/dev/null | while read -r p; do
|
||||
st=$(playerctl --player="$p" status 2>/dev/null)
|
||||
[ "$st" = "Playing" ] && echo "$p" && break
|
||||
done)
|
||||
[ -z "$player" ] && player=$(playerctl -l 2>/dev/null | head -n1)
|
||||
|
||||
if [ -z "$player" ]; then
|
||||
jq -c -n '{text: "", tooltip: "", class: "inactive"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
status=$(playerctl --player="$player" status 2>/dev/null)
|
||||
if [ "$status" != "Playing" ] && [ "$status" != "Paused" ]; then
|
||||
jq -c -n '{text: "", tooltip: "", class: "inactive"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
artist=$(playerctl --player="$player" metadata artist 2>/dev/null)
|
||||
title=$(playerctl --player="$player" metadata title 2>/dev/null)
|
||||
album=$(playerctl --player="$player" metadata album 2>/dev/null)
|
||||
@@ -3128,7 +3136,6 @@ position=$(playerctl --player="$player" position 2>/dev/null)
|
||||
|
||||
# Progress percentage — pure bash, no bc needed
|
||||
if [ -n "$length" ] && [ -n "$position" ] && [ "$length" -gt 0 ] 2>/dev/null; then
|
||||
# position is in seconds (float), length is in microseconds
|
||||
pos_us=$(echo "$position" | awk '{printf "%d", $1 * 1000000}')
|
||||
progress=$(( pos_us * 100 / length ))
|
||||
else
|
||||
@@ -3141,12 +3148,6 @@ if [[ "$player" == *"spotify"* ]]; then
|
||||
device=$(playerctl --player="$player" metadata xesam:url 2>/dev/null | grep -o 'device=[^&]*' | cut -d= -f2)
|
||||
fi
|
||||
|
||||
# Ticker text — truncate if long
|
||||
text="${artist} — ${title}"
|
||||
if [ ${#text} -gt 40 ]; then
|
||||
text="${text:0:37}..."
|
||||
fi
|
||||
|
||||
# Icon
|
||||
if [ "$status" = "Paused" ]; then
|
||||
icon="⏸ "
|
||||
@@ -3154,6 +3155,34 @@ else
|
||||
icon="▶ "
|
||||
fi
|
||||
|
||||
# Scrolling ticker
|
||||
CACHE_FILE="/tmp/waybar_media_scroll_${player//\//_}"
|
||||
full_text="${artist} — ${title}"
|
||||
text_len=${#full_text}
|
||||
display_len=30
|
||||
|
||||
# Reset scroll offset when track changes
|
||||
TRACK_FILE="/tmp/waybar_media_track_${player//\//_}"
|
||||
last_track=""
|
||||
[ -f "$TRACK_FILE" ] && last_track=$(cat "$TRACK_FILE")
|
||||
if [ "$full_text" != "$last_track" ]; then
|
||||
echo "0" > "$CACHE_FILE"
|
||||
echo "$full_text" > "$TRACK_FILE"
|
||||
fi
|
||||
|
||||
if [ "$text_len" -le "$display_len" ]; then
|
||||
text="$full_text"
|
||||
else
|
||||
offset=0
|
||||
[ -f "$CACHE_FILE" ] && offset=$(cat "$CACHE_FILE")
|
||||
|
||||
padded="${full_text} ${full_text}"
|
||||
text="${padded:$offset:$display_len}"
|
||||
|
||||
next_offset=$(( (offset + 1) % (text_len + 4) ))
|
||||
echo "$next_offset" > "$CACHE_FILE"
|
||||
fi
|
||||
|
||||
# Build tooltip
|
||||
tooltip="${artist}\n${title}\n${album}"
|
||||
if [ -n "$device" ]; then
|
||||
@@ -3897,7 +3926,7 @@ These are config files for waybar
|
||||
"custom/media": {
|
||||
"exec": "~/.config/scripts/media.sh",
|
||||
"interval": 2,
|
||||
"return-type": "json","return-type": "json",
|
||||
"return-type": "json",
|
||||
"on-click": "qs -c media",
|
||||
"max-length": 40,
|
||||
"scroll-step": 1,
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. ---
|
||||
player=$(playerctl -l 2>/dev/null | head -n1)
|
||||
# Player selection — prefer actively playing player
|
||||
player=$(playerctl -l 2>/dev/null | while read -r p; do
|
||||
st=$(playerctl --player="$p" status 2>/dev/null)
|
||||
[ "$st" = "Playing" ] && echo "$p" && break
|
||||
done)
|
||||
[ -z "$player" ] && player=$(playerctl -l 2>/dev/null | head -n1)
|
||||
|
||||
if [ -z "$player" ]; then
|
||||
jq -c -n '{text: "", tooltip: "", class: "inactive"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
status=$(playerctl --player="$player" status 2>/dev/null)
|
||||
if [ "$status" != "Playing" ] && [ "$status" != "Paused" ]; then
|
||||
jq -c -n '{text: "", tooltip: "", class: "inactive"}'
|
||||
exit 0
|
||||
fi
|
||||
|
||||
artist=$(playerctl --player="$player" metadata artist 2>/dev/null)
|
||||
title=$(playerctl --player="$player" metadata title 2>/dev/null)
|
||||
album=$(playerctl --player="$player" metadata album 2>/dev/null)
|
||||
@@ -19,7 +27,6 @@ position=$(playerctl --player="$player" position 2>/dev/null)
|
||||
|
||||
# Progress percentage — pure bash, no bc needed
|
||||
if [ -n "$length" ] && [ -n "$position" ] && [ "$length" -gt 0 ] 2>/dev/null; then
|
||||
# position is in seconds (float), length is in microseconds
|
||||
pos_us=$(echo "$position" | awk '{printf "%d", $1 * 1000000}')
|
||||
progress=$(( pos_us * 100 / length ))
|
||||
else
|
||||
@@ -32,12 +39,6 @@ if [[ "$player" == *"spotify"* ]]; then
|
||||
device=$(playerctl --player="$player" metadata xesam:url 2>/dev/null | grep -o 'device=[^&]*' | cut -d= -f2)
|
||||
fi
|
||||
|
||||
# Ticker text — truncate if long
|
||||
text="${artist} — ${title}"
|
||||
if [ ${#text} -gt 40 ]; then
|
||||
text="${text:0:37}..."
|
||||
fi
|
||||
|
||||
# Icon
|
||||
if [ "$status" = "Paused" ]; then
|
||||
icon="⏸ "
|
||||
@@ -45,6 +46,34 @@ else
|
||||
icon="▶ "
|
||||
fi
|
||||
|
||||
# Scrolling ticker
|
||||
CACHE_FILE="/tmp/waybar_media_scroll_${player//\//_}"
|
||||
full_text="${artist} — ${title}"
|
||||
text_len=${#full_text}
|
||||
display_len=30
|
||||
|
||||
# Reset scroll offset when track changes
|
||||
TRACK_FILE="/tmp/waybar_media_track_${player//\//_}"
|
||||
last_track=""
|
||||
[ -f "$TRACK_FILE" ] && last_track=$(cat "$TRACK_FILE")
|
||||
if [ "$full_text" != "$last_track" ]; then
|
||||
echo "0" > "$CACHE_FILE"
|
||||
echo "$full_text" > "$TRACK_FILE"
|
||||
fi
|
||||
|
||||
if [ "$text_len" -le "$display_len" ]; then
|
||||
text="$full_text"
|
||||
else
|
||||
offset=0
|
||||
[ -f "$CACHE_FILE" ] && offset=$(cat "$CACHE_FILE")
|
||||
|
||||
padded="${full_text} ${full_text}"
|
||||
text="${padded:$offset:$display_len}"
|
||||
|
||||
next_offset=$(( (offset + 1) % (text_len + 4) ))
|
||||
echo "$next_offset" > "$CACHE_FILE"
|
||||
fi
|
||||
|
||||
# Build tooltip
|
||||
tooltip="${artist}\n${title}\n${album}"
|
||||
if [ -n "$device" ]; then
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
"custom/media": {
|
||||
"exec": "~/.config/scripts/media.sh",
|
||||
"interval": 2,
|
||||
"return-type": "json","return-type": "json",
|
||||
"return-type": "json",
|
||||
"on-click": "qs -c media",
|
||||
"max-length": 40,
|
||||
"scroll-step": 1,
|
||||
|
||||
Reference in New Issue
Block a user