#!/bin/sh
# Avvia il HUD (conky) con la nostra configurazione.
#
# PERCHE' ESISTE QUESTO SCRIPT invece di mettere il comando nel .desktop
# L'autostart era scritto cosi':
#
#     Exec=sh -c 'env LANG=C.UTF-8 conky -p 8 -c "$HOME/.config/conky/skillfish.conf"'
#
# e non ha mai funzionato al login. KDE non esegue l'autostart direttamente:
# lo converte in un servizio systemd (systemd-xdg-autostart-generator). In quel
# passaggio le virgolette vengono interpretate secondo le regole dei file
# .desktop, non secondo quelle della shell, e il risultato nel journal era:
#
#   Ignoring unknown escape sequences: "env LANG=C.UTF-8 conky -p 8 -c "$HOME/..."
#   conky: cannot open $HOME/.config/conky/skillfish.conf: No such file or directory
#
# Cioe' $HOME finiva come stringa LETTERALE dentro argv, e a quel punto non lo
# espandeva piu' nessuno: systemd non fa espansione di shell, e sh non la fa su
# un argomento che ha gia' ricevuto come tale.
#
# Lanciato a mano funzionava, perche' li' le virgolette le interpreta la shell.
# E' per questo che sembrava un problema di finestra o di tempi di avvio: il
# processo lo vedevi vivo solo quando lo avviavo io dal terminale.
#
# Qui HOME lo risolve la shell, all'interno dello script, dove nessuno ha piu'
# occasione di rimaneggiare le virgolette. Il .desktop chiama un percorso
# assoluto e basta, senza argomenti e senza quoting.
set -u

# ⚠️ Qui prima si usciva in silenzio quando la macchina non era una BC-250.
#
# Il motivo era vero: la configurazione di conky era cablata su quella scheda
# (16 barre CPU, sensori amdgpu, ventola nct6687) e su un PC diverso quelle voci
# tornavano VUOTE. Conky non riesce a calcolare l'ingombro di un testo vuoto e
# riduce la finestra a 15x15 pixel: un puntino invisibile nell'angolo. Non
# degrada, sparisce — misurato su una VM a 4 core, dove la finestra minima
# risultava 5x28 contro i 270x45 della stessa configurazione con testo valido.
#
# Era una toppa onesta ma sbagliata di bersaglio: sull'edizione Generic, che si
# installa su qualunque PC, voleva dire spedire un avvio automatico che non
# poteva funzionare per quasi nessuno. Adesso la configurazione la GENERA
# skillfish-hud-config leggendo i sensori che la macchina espone davvero, quindi
# non c'e' piu' motivo di tirarsi indietro: su un PC qualsiasi esce un HUD piu'
# corto, non un puntino invisibile.
CONF="$HOME/.config/conky/skillfish.conf"

# Si rigenera se manca, o se il numero di barre non corrisponde ai thread di
# QUESTA macchina: e' il segno che la configurazione arriva da un'altra
# (immagine clonata, disco spostato, core sbloccati).
#
# ⚠️ Le barre si contano con grep -o, non con grep -c. Ce ne stanno otto per
# riga, e -c conta le RIGHE: su una macchina a 8 thread diceva 1 invece di 8, su
# una BC-250 a 16 diceva 2. Non corrispondeva mai, quindi la configurazione
# veniva rigenerata a ogni accesso - senza danno visibile, ma il controllo non
# controllava niente.
# La firma del generatore: se la configurazione e stata scritta da una versione
# piu vecchia va rifatta, altrimenti le voci nuove non arrivano mai a chi ha
# gia il HUD in funzione.
ATTESA=$(sed -n "s/^VERSIONE=\([0-9]*\).*/\1/p" /usr/local/bin/skillfish-hud-config 2>/dev/null | head -1)
SCRITTA=$(sed -n "s/^-- skillfish-hud-config v\([0-9]*\).*/\1/p" "$CONF" 2>/dev/null | head -1)
# ⚠️ Le barre non si contano piu': da VERSIONE 11 non stanno piu' nel file, le
# disegna skillfish-hud-cpubars a ogni giro di conky. Contarle darebbe sempre
# zero e la configurazione verrebbe rigenerata a ogni accesso. Resta la firma
# del generatore, che e' il controllo che serve davvero.
if [ ! -f "$CONF" ] || [ "${SCRITTA:-0}" != "${ATTESA:-0}" ]; then
    [ -x /usr/local/bin/skillfish-hud-config ] &&         /usr/local/bin/skillfish-hud-config "$CONF" >/dev/null 2>&1 || true
fi
[ -f "$CONF" ] || CONF=/etc/skel/.config/conky/skillfish.conf
[ -f "$CONF" ] || exit 0          # nemmeno il generatore ce l'ha fatta: esci

# -p 8: aspetta che il desktop sia pronto prima di disegnare.
# LANG=C.UTF-8: le date del HUD restano uniformi in tutte le lingue.
# exec: il PID resta questo, cosi' systemd continua a sorvegliare conky invece
# di vedere uscire il padre e ripulire tutto il gruppo.
exec env LANG=C.UTF-8 conky -p 8 -c "$CONF"
