DeskamiUn piccolo compagno sulla scrivania

Formato di esportazione

L’esportazione, parte di Deskami Plus, scrive la stessa registrazione minuto per minuto che Deskami tiene sul tuo Mac. Niente viene aggiunto, stimato o completato. Questa pagina descrive cosa c’è nel file.

Convenzioni

  • Una cella vuota nel CSV, o null nel JSON, significa non misurato. Uno 0 significa misurato, ed era zero.
  • I nomi delle colonne sono in inglese in ogni lingua e fissi; cambiano solo insieme a una nuova export_version.
  • I file sono in UTF-8. Il CSV è separato da virgole e ha una riga di intestazione.
  • Gli orari sono in UTC nel formato ISO 8601, come 2026-09-28T07:41:00Z. Le date sono YYYY-MM-DD: il giorno di calendario sotto cui il minuto è stato registrato.
  • I numeri decimali usano il punto, mai un separatore delle migliaia. I valori booleani sono true e false.
  • C’è una riga per ogni minuto in cui Deskami ha registrato qualcosa, e nessuna per i minuti in cui non ha registrato niente.

Colonne dei minuti

Il CSV ha queste colonne, in quest’ordine; nel JSON gli stessi campi compongono ogni minuto. Il nome tra parentesi è la colonna nel file grezzo del database.

  • minute_utc — ora. L’inizio del minuto, in UTC. (minute_utc, in secondi Unix)
  • local_day — data. Il giorno di calendario a cui appartiene questo minuto, nel fuso orario in cui si trovava il Mac in quel momento. Viene fissato alla scrittura; un cambio di fuso orario successivo non lo sposta. (day_key)
  • setup_id — intero. La postazione in uso: una fotocamera più una disposizione degli schermi. Nel JSON le postazioni sono elencate in setups. (profile_id)
  • seconds_at_desk — da 0 a 60. I secondi in cui la fotocamera ti ha visto in questo minuto. Con camera_off a false, 0 significa che la fotocamera era accesa e non ti ha visto. (present_s)
  • posture_deviation — numero, 0 o più. Quanto la testa e le spalle stavano sotto il tuo riferimento, in media sul minuto, come multiplo della soglia di avviso in vigore in quel momento: 0 al riferimento, 1 alla soglia. Vuoto quando la postura non è stata misurata. (posture_dev)
  • posture_peak — numero, 0 o più. Il valore più alto della stessa misura nel minuto. (posture_peak)
  • distance_deviation — numero, 0 o più. Quanto il tuo viso era più vicino allo schermo rispetto al riferimento, sulla stessa scala, ricavato dalla distanza tra i tuoi occhi nell’immagine. (distance_dev)
  • blinks — intero. I battiti di palpebre contati mentre gli occhi si potevano misurare. Vuoto quando non si potevano misurare. (blinks)
  • incomplete_blinks — intero. I battiti di palpebre il cui momento più stretto non si è avvicinato abbastanza alla chiusura completa. Vuoto quando non è stato possibile giudicare. (incomplete_blinks)
  • head_pitch_degrees — numero. L’inclinazione media della testa in gradi, come la riporta la fotocamera: rispetto alla fotocamera, non al tuo riferimento. (head_pitch)
  • confidence — da 0 a 1. L’affidabilità media del rilevamento del volto. (confidence)
  • light — da 0 a 1. La luminosità media della zona del viso, da 0 buio a 1 chiaro. Non quella della stanza. (light)
  • eyes_measured — booleano. Gli occhi si sono potuti misurare almeno una volta in questo minuto. Quando è false, blinks, incomplete_blinks e eye_observed_seconds sono vuoti. (eye_valid)
  • eye_observed_seconds — da 0 a 60. I secondi in cui gli occhi sono stati davvero osservati. I battiti di palpebre al minuto sono blinks × 60 ÷ eye_observed_seconds. (eye_observed_s)
  • look_aways — intero. Gli sguardi lontano portati a termine, l’abitudine 20-20-20. Vuoto quando lo sguardo lontano non veniva misurato. (gaze_breaks)
  • camera_off — booleano. La fotocamera era spenta in questo minuto: l’hai spenta tu, un’altra app la stava usando o il permesso è stato tolto. Le colonne della fotocamera sono allora vuote; quelle delle app e dell’attività possono comunque essere compilate. (camera_off)
  • declared_break — booleano. Hai detto a Deskami che eri in pausa. Il minuto conta come lontano dalla scrivania, qualunque cosa abbia visto la fotocamera. (declared_break)
  • front_app — testo. L’identificatore del bundle dell’app in primo piano per la maggior parte del minuto, come com.apple.Safari. Vuoto quando quella lettura era spenta, lo schermo era bloccato o non c’era niente in primo piano. Mai un titolo di finestra. (app_id)
  • app_switches — intero. Quante volte è cambiata l’app in primo piano in questo minuto. (app_switches)
  • active_seconds — da 0 a 60. I secondi in cui tastiera o mouse erano stati toccati negli ultimi 15 secondi. Viene letto solo il tempo trascorso dall’ultimo evento, mai i tasti. Vuoto quando quella lettura era spenta. (active_s)
  • call_seconds — da 0 a 60. I secondi in cui un’app per chiamate era in primo piano, o una stessa app aveva microfono e altoparlante aperti insieme. Vuoto quando non misurato, compreso ogni minuto registrato prima che Deskami iniziasse a misurarlo. (meeting_s)

JSON

Il file JSON è un unico oggetto. Comincia con un’intestazione: export_version, app_version, exported_at, time_zone (al momento dell’esportazione), database_schema_version, range (kind, from, to) e setups (id, camera_name, created_at).

Poi viene days, un oggetto per ogni giorno registrato nel periodo. Ogni giorno contiene il suo riepilogo, i suoi minuti e i suoi avvisi:

  • local_day e minutes_at_desk, la somma di seconds_at_desk divisa per 60.
  • breaks: i periodi di 5 minuti o più e di meno di 2 ore trascorsi lontano dalla scrivania, tra due periodi alla scrivania. Il tempo con la fotocamera spenta non conta né da una parte né dall’altra.
  • posture_fine_minutes (posture_deviation sotto 1) e posture_attention_minutes (1 o più).
  • blink_rate: battiti di palpebre al minuto sul tempo in cui gli occhi sono stati osservati; null sotto un minuto di osservazione.
  • incomplete_blink_ratio: null quando si sono potuti giudicare troppo pochi battiti.
  • reminders_by_signal: gli avvisi mostrati, contati per segnale.
  • minutes: le colonne dei minuti qui sopra, un oggetto per minuto.
  • reminders: un oggetto per avviso, con time_utc, local_day, setup_id, signal (posture, distance, blink, incompleteBlink o gaze), build_up_seconds (il tempo sopra la soglia prima dell’avviso), recover_seconds (il tempo per tornare sotto; null quando la misura si è fermata prima), asked (se è stata mostrata la domanda sul tuo riferimento) e answer (null se la domanda non è stata fatta, altrimenti true o false).

PDF

Il PDF non è una tabella: è il riepilogo stesso — il riepilogo del giorno, la settimana o il mese — stampato su una pagina esattamente come appare sullo schermo. Ogni numero che contiene è il numero sullo schermo.

Il file grezzo

Impostazioni › Generale › Dati › Mostra nel Finder ti porta a history.sqlite, accanto a history.sqlite-wal e history.sqlite-shm. Mentre Deskami è in esecuzione, i minuti più recenti possono trovarsi ancora nel file -wal; copia tutti e tre i file, oppure esci prima da Deskami. Se li elimini mentre Deskami è in esecuzione, entro pochi secondi avvia una registrazione nuova e vuota. L’esportazione scrive sempre un’istantanea completa. Cosa contiene il database è elencato nella pagina sulla privacy.