Integrazioni
Cosa collega i widget ai servizi: le integrazioni del cervello e i connettori dichiarativi.
Un'integrazione è il pezzo che porta ai widget i dati di un servizio (o del computer) e esegue le azioni che fai con un tap. Ogni integrazione ha un manifest che dice di cosa ha bisogno e cosa può fare: quali widget alimenta, se serve il computer, su quali sistemi gira, a quali domini si collega.
| Integrazione | Widget | Serve | Chiavi |
|---|---|---|---|
| Discord | discord | il computer (usa il socket locale di Discord) | client id e secret di una tua applicazione |
| Chat | chat | il computer (apre i link) | nessuna |
| Linear | linear_fissate, linear_todo | il computer | chiave API personale |
| Batterie | batterie | il computer (Bluetooth e sistema) | nessuna |
| Connettori | meteo, aria_fuori, oggi_meteo | solo internet: girano anche sulla scheda | nessuna |
Una sezione a parte, layout, non porta dati: tiene la disposizione dei widget (barra e gruppi) che scegli nel configuratore.
Dove si configurano
Dal configuratore: Chat, Linear e Discord hanno la loro sezione, Chiavi elenca tutti i segreti. La configurazione
sta nelle sezioni di ~/.jz-desk/config.json e il file è sorvegliato: se lo cambi, la scheda si aggiorna da sola
senza riavviare il cervello. I segreti (chiavi API, client secret) vanno nel gestore delle chiavi, non in chiaro:
quelli trovati in chiaro in config.json vengono migrati e ne resta una copia config.json.bak-<data>.
Registri di ogni integrazione
Ogni integrazione scrive un registro completo in ~/.jz-desk/logs/<nome>.log, con i tempi di ogni richiesta e i
segreti oscurati; sulla console compaiono solo i passaggi importanti. Per vedere tutto anche in console:
JZ_DEBUG=<nome>. Gli stessi log si filtrano nella sezione Registri del configuratore.
Sistemi
Le integrazioni sono state provate dal vero su macOS. Su Windows e Linux i percorsi sono scritti (socket e
named pipe di Discord, batterie da PowerShell o /sys/class/power_supply) ma non ancora provati su un computer
vero: i manifest dichiarano mac finché non lo sono.
Aggiungerne una
Per i servizi con una API HTTP non serve scrivere codice: basta un connettore dichiarativo, un file JSON che descrive la richiesta e come leggere la risposta. Per tutto il resto un'integrazione è un modulo TypeScript del cervello con il suo manifest.