#!/usr/bin/env bash set -euo pipefail # Fallback output fallback='{"text":" ","class":"hidden"}' # Get active workspace active_ws=$(hyprctl activeworkspace -j 2>/dev/null | jq -r '.id' 2>/dev/null) || { echo "$fallback" exit 0 } # Get workspace info ws=$(hyprctl workspaces -j 2>/dev/null | jq ".[] | select(.id==$active_ws)" 2>/dev/null) || { echo "$fallback" exit 0 } # Layout layout=$(echo "$ws" | jq -r '.layout // "unknown"' 2>/dev/null) # Clients clients=$(hyprctl clients -j 2>/dev/null | jq "[.[] | select(.workspace.id==$active_ws)]" 2>/dev/null) || { echo "$fallback" exit 0 } count=$(echo "$clients" | jq 'length' 2>/dev/null) # In scrolling layout, only 1 is visible visible=1 # Conditions if [[ "$layout" != "scrolling" ]] || (( count <= visible )); then echo "$fallback" exit 0 fi # Tooltip (safe escaping) tooltip=$(echo "$clients" | jq -r '.[].title' 2>/dev/null | sed ':a;N;$!ba;s/\n/\\n/g') # Final output echo "{\"text\":\"★ $count\",\"tooltip\":\"$tooltip\",\"class\":\"overflow\"}"