#!/bin/bash
# 面板状态栏右半：GPU / 服务端口存活 / 时间
PORTS="ComfyUI:8189 LLM:8080 LMStudio:1234 H3-UI:3013 H3-API:6020"
gpu=""
if command -v nvidia-smi >/dev/null 2>&1; then
    out=$(timeout 3 nvidia-smi --query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu --format=csv,noheader,nounits 2>/dev/null | head -1)
    if [ -n "$out" ]; then
        IFS=',' read -r u mu mt t <<<"$out"
        u=$(echo $u|tr -d ' '); mu=$(echo $mu|tr -d ' '); mt=$(echo $mt|tr -d ' '); t=$(echo $t|tr -d ' ')
        gpu=$(printf '#[fg=colour245]GPU#[default] #[fg=colour114,bold]%s%%#[default] #[fg=colour180]%.1f/%.1fG#[default] %sC' "$u" "$(echo "$mu/1024"|bc -l)" "$(echo "$mt/1024"|bc -l)" "$t")
    fi
fi

svc=""
for item in $PORTS; do
    label="${item%%:*}"; port="${item##*:}"
    if ss -ltnH "sport = :$port" 2>/dev/null | grep -q .; then
        svc+="#[fg=colour114]●#[default]#[fg=colour250]${label}#[default] "
    else
        svc+="#[fg=colour240]○${label}#[default] "
    fi
done

printf '%s #[fg=colour238]│#[default] %s#[fg=colour238]│#[default] #[fg=colour245]%s#[default] ' \
    "$gpu" "$svc" "$(TZ=Asia/Shanghai date '+%m-%d %H:%M:%S')"
