DeskamiEen klein maatje op je bureau

Exportformaat

Exporteren, onderdeel van Deskami Plus, schrijft dezelfde registratie per minuut weg die Deskami op je Mac bewaart. Er wordt niets toegevoegd, geschat of ingevuld. Deze pagina beschrijft wat er in het bestand staat.

Afspraken

  • Een lege cel in CSV, of null in JSON, betekent niet gemeten. Een 0 betekent gemeten, en het was nul.
  • Kolomnamen zijn in elke taal Engels en liggen vast; ze veranderen alleen samen met een nieuwe export_version.
  • De bestanden zijn UTF-8. CSV is kommagescheiden, met een kopregel.
  • Tijden staan in UTC volgens ISO 8601, zoals 2026-09-28T07:41:00Z. Datums zijn YYYY-MM-DD: de kalenderdag waaronder de minuut is vastgelegd.
  • Decimalen gebruiken een punt, nooit een scheidingsteken voor duizendtallen. Booleans zijn true en false.
  • Er is één rij voor elke minuut waarin Deskami iets vastlegde, en geen rij voor minuten waarin het niets vastlegde.

Minuutkolommen

De CSV heeft deze kolommen, in deze volgorde; in JSON vormen dezelfde velden elke minuut. De naam tussen haakjes is de kolom in het ruwe databasebestand.

  • minute_utc — tijd. Het begin van de minuut, in UTC. (minute_utc, in Unix-seconden)
  • local_day — datum. De kalenderdag waar deze minuut bij hoort, in de tijdzone waarin de Mac op dat moment stond. Die ligt vast zodra hij geschreven is; een latere wisseling van tijdzone verschuift hem niet. (day_key)
  • setup_id — geheel getal. De opstelling die in gebruik was: een camera plus een schermindeling. In JSON staan de opstellingen onder setups. (profile_id)
  • seconds_at_desk — 0 tot 60. Seconden dat de camera je in deze minuut zag. Met camera_off op false betekent 0 dat de camera aan stond en je niet zag. (present_s)
  • posture_deviation — getal, 0 of meer. Hoe ver je hoofd en schouders onder je eigen referentie zaten, gemiddeld over de minuut, als veelvoud van de toen geldende drempel voor een herinnering: 0 bij de referentie, 1 bij de drempel. Leeg als je houding niet gemeten werd. (posture_dev)
  • posture_peak — getal, 0 of meer. De hoogste waarde van dezelfde maat binnen de minuut. (posture_peak)
  • distance_deviation — getal, 0 of meer. Hoeveel dichter je gezicht bij het scherm was dan bij je referentie, op dezelfde schaal, afgeleid uit de afstand tussen je ogen in het beeld. (distance_dev)
  • blinks — geheel getal. Knipperingen, geteld terwijl de ogen gemeten konden worden. Leeg als dat niet kon. (blinks)
  • incomplete_blinks — geheel getal. Knipperingen waarbij het oog op het smalste moment niet ver genoeg dichtging. Leeg als er geen oordeel mogelijk was. (incomplete_blinks)
  • head_pitch_degrees — getal. Gemiddelde voor- of achteroverkanteling van het hoofd in graden, zoals de camera die doorgeeft: ten opzichte van de camera, niet van je referentie. (head_pitch)
  • confidence — 0 tot 1. Gemiddelde betrouwbaarheid van de gezichtsdetectie. (confidence)
  • light — 0 tot 1. Gemiddelde helderheid van het gezichtsgebied, van 0 donker tot 1 licht. Niet de kamer. (light)
  • eyes_measured — boolean. De ogen konden in deze minuut minstens één keer gemeten worden. Bij false zijn blinks, incomplete_blinks en eye_observed_seconds leeg. (eye_valid)
  • eye_observed_seconds — 0 tot 60. Seconden dat de ogen echt waargenomen zijn. Knipperingen per minuut is blinks × 60 ÷ eye_observed_seconds. (eye_observed_s)
  • look_aways — geheel getal. Voltooide blikken in de verte, de 20-20-20-gewoonte. Leeg als wegkijken niet gemeten werd. (gaze_breaks)
  • camera_off — boolean. De camera stond deze minuut uit: je had hem uitgezet, een andere app gebruikte hem, of de toestemming was ingetrokken. De camerakolommen zijn dan leeg; de app- en activiteitskolommen kunnen nog gevuld zijn. (camera_off)
  • declared_break — boolean. Je had Deskami laten weten dat je pauze had. De minuut telt als weg van het bureau, wat de camera ook zag. (declared_break)
  • front_app — tekst. De bundle-ID van de app die het grootste deel van de minuut op de voorgrond stond, zoals com.apple.Safari. Leeg als die meting uit stond, het scherm vergrendeld was of er niets op de voorgrond stond. Nooit een venstertitel. (app_id)
  • app_switches — geheel getal. Hoe vaak de app op de voorgrond in deze minuut wisselde. (app_switches)
  • active_seconds — 0 tot 60. Seconden waarin het toetsenbord of de muis in de voorafgaande 15 seconden was aangeraakt. Alleen de tijd sinds de laatste gebeurtenis wordt gelezen, nooit de toetsen. Leeg als die meting uit stond. (active_s)
  • call_seconds — 0 tot 60. Seconden waarin een bel-app op de voorgrond stond, of één app de microfoon en de luidspreker tegelijk open had. Leeg als dit niet gemeten werd, ook in elke minuut die is vastgelegd voordat Deskami dit mat. (meeting_s)

JSON

Het JSON-bestand is één object. Het begint met een kop: export_version, app_version, exported_at, time_zone (op het moment van exporteren), database_schema_version, range (kind, from, to) en setups (id, camera_name, created_at).

Daarna volgt days, één object voor elke vastgelegde dag in de periode. Elke dag heeft zijn eigen overzicht, minuten en herinneringen:

  • local_day en minutes_at_desk, de som van seconds_at_desk gedeeld door 60.
  • breaks: periodes van 5 minuten of langer weg van het bureau en korter dan 2 uur, tussen twee periodes aan het bureau. Tijd met de camera uit telt voor geen van beide.
  • posture_fine_minutes (posture_deviation onder 1) en posture_attention_minutes (1 of hoger).
  • blink_rate: knipperingen per minuut over de tijd dat de ogen waargenomen werden; null bij minder dan een minuut waarneming.
  • incomplete_blink_ratio: null als te weinig knipperingen beoordeeld konden worden.
  • reminders_by_signal: getoonde herinneringen, geteld per signaal.
  • minutes: de minuutkolommen hierboven, één object per minuut.
  • reminders: één object per herinnering, met time_utc, local_day, setup_id, signal (posture, distance, blink, incompleteBlink of gaze), build_up_seconds (tijd boven de drempel vóór de herinnering), recover_seconds (tijd tot je er weer onder zat; null als het meten eerder stopte), asked (of de vraag over je referentie getoond werd) en answer (null als die niet gesteld werd, anders true of false).

PDF

De PDF is geen tabel: het is het overzicht zelf — het dagoverzicht, de week of de maand — op één pagina afgedrukt, precies zoals het op het scherm staat. Elk getal erin is het getal op het scherm.

Het ruwe bestand

Instellingen › Algemeen › Gegevens › Toon in Finder laat history.sqlite zien, naast history.sqlite-wal en history.sqlite-shm. Terwijl Deskami draait, kunnen de nieuwste minuten nog in het -wal-bestand staan; kopieer alle drie de bestanden, of stop Deskami eerst. Verwijder je ze terwijl Deskami draait, dan begint het binnen een paar seconden een nieuwe, lege registratie. Exporteren schrijft altijd een volledige momentopname. Wat de database bevat, staat op de privacypagina.