Formato de exportación
La exportación, parte de Deskami Plus, escribe el mismo registro minuto a minuto que Deskami guarda en tu Mac. No se añade, se estima ni se rellena nada. Esta página describe qué hay en el archivo.
Convenciones
- Una celda vacía en CSV, o
nullen JSON, significa sin medir. Un0significa medido, y era cero. - Los nombres de las columnas están en inglés en todos los idiomas y son fijos; solo cambian junto con una nueva
export_version. - Los archivos están en UTF-8. El CSV va separado por comas y tiene una fila de encabezado.
- Las horas están en UTC y en formato ISO 8601, como
2026-09-28T07:41:00Z. Las fechas sonYYYY-MM-DD: el día del calendario en el que se registró el minuto. - Los números decimales llevan punto, nunca separador de miles. Los booleanos son
trueyfalse. - Hay una fila por cada minuto en el que Deskami registró algo, y ninguna para los minutos en los que no registró nada.
Columnas de los minutos
El CSV tiene estas columnas, en este orden; en JSON, los mismos campos forman cada minuto. El nombre entre paréntesis es la columna en el archivo de base de datos en bruto.
minute_utc— hora. El comienzo del minuto, en UTC. (minute_utc, en segundos Unix)local_day— fecha. El día del calendario al que pertenece este minuto, en la zona horaria en la que estaba el Mac en ese momento. Se fija al escribirse; un cambio posterior de zona horaria no lo mueve. (day_key)setup_id— entero. La configuración en uso: una cámara más una disposición de pantallas. En JSON, las configuraciones aparecen ensetups. (profile_id)seconds_at_desk— de 0 a 60. Segundos en los que la cámara te vio en este minuto. Concamera_offen false, 0 significa que la cámara estaba encendida y no te vio. (present_s)posture_deviation— número, 0 o más. Cuánto quedaron tu cabeza y tus hombros por debajo de tu propia referencia, de media en el minuto, como múltiplo del umbral de aviso vigente en ese momento: 0 en la referencia, 1 en el umbral. Vacío cuando no se midió la postura. (posture_dev)posture_peak— número, 0 o más. El valor más alto de esa misma medida dentro del minuto. (posture_peak)distance_deviation— número, 0 o más. Cuánto más cerca de la pantalla estaba tu cara que en tu referencia, en la misma escala, calculado a partir de la separación de tus ojos en la imagen. (distance_dev)blinks— entero. Parpadeos contados mientras se podían medir los ojos. Vacío cuando no se podían medir. (blinks)incomplete_blinks— entero. Parpadeos cuyo momento más cerrado no se acercó lo bastante al cierre completo. Vacío cuando no fue posible juzgarlo. (incomplete_blinks)head_pitch_degrees— número. Inclinación media de la cabeza en grados, tal como la da la cámara: respecto a la cámara, no a tu referencia. (head_pitch)confidence— de 0 a 1. Confianza media de la detección de la cara. (confidence)light— de 0 a 1. Brillo medio de la zona de la cara, de 0 oscuro a 1 claro. No el de la habitación. (light)eyes_measured— booleano. Los ojos se pudieron medir al menos una vez en este minuto. Cuando es false,blinks,incomplete_blinksyeye_observed_secondsestán vacíos. (eye_valid)eye_observed_seconds— de 0 a 60. Segundos en los que los ojos se observaron de verdad. Los parpadeos por minuto sonblinks× 60 ÷eye_observed_seconds. (eye_observed_s)look_aways— entero. Miradas a lo lejos completadas, el hábito 20-20-20. Vacío cuando no se estaba midiendo si mirabas a lo lejos. (gaze_breaks)camera_off— booleano. La cámara estaba apagada en este minuto: la apagaste tú, otra app la estaba usando o se retiró el permiso. Las columnas de la cámara quedan entonces vacías; las de apps y actividad pueden estar rellenas igualmente. (camera_off)declared_break— booleano. Le dijiste a Deskami que estabas en un descanso. El minuto cuenta como fuera del escritorio, viera lo que viera la cámara. (declared_break)front_app— texto. El identificador de paquete (bundle identifier) de la app en primer plano durante la mayor parte del minuto, comocom.apple.Safari. Vacío cuando esa lectura estaba desactivada, la pantalla estaba bloqueada o no había nada en primer plano. Nunca un título de ventana. (app_id)app_switches— entero. Cuántas veces cambió la app en primer plano en este minuto. (app_switches)active_seconds— de 0 a 60. Segundos en los que se había tocado el teclado o el ratón en los 15 segundos anteriores. Solo se lee el tiempo transcurrido desde el último evento, nunca las teclas. Vacío cuando esa lectura estaba desactivada. (active_s)call_seconds— de 0 a 60. Segundos en los que una app de llamadas estaba en primer plano, o una misma app tenía abiertos a la vez el micrófono y el altavoz. Vacío cuando no se midió, también en cada minuto registrado antes de que Deskami empezara a medirlo. (meeting_s)
JSON
El archivo JSON es un único objeto. Empieza con una cabecera: export_version, app_version, exported_at, time_zone (la del momento de la exportación), database_schema_version, range (kind, from, to) y setups (id, camera_name, created_at).
Después viene days, un objeto por cada día registrado en el intervalo. Cada día incluye su propio resumen, sus minutos y sus avisos:
local_dayyminutes_at_desk, la suma deseconds_at_deskdividida entre 60.breaks: tramos de 5 minutos o más y de menos de 2 horas fuera del escritorio, entre dos tramos en el escritorio. El tiempo con la cámara apagada no cuenta ni para un lado ni para el otro.posture_fine_minutes(posture_deviationpor debajo de 1) yposture_attention_minutes(1 o más).blink_rate: parpadeos por minuto durante el tiempo en que se observaron los ojos;nullcon menos de un minuto de observación.incomplete_blink_ratio:nullcuando se pudieron juzgar demasiado pocos parpadeos.reminders_by_signal: avisos mostrados, contados por señal.minutes: las columnas de los minutos de arriba, un objeto por minuto.reminders: un objeto por aviso, contime_utc,local_day,setup_id,signal(posture,distance,blink,incompleteBlinkogaze),build_up_seconds(tiempo por encima del umbral antes del aviso),recover_seconds(tiempo hasta volver por debajo;nullcuando la medición se detuvo antes),asked(si se mostró la pregunta sobre tu referencia) yanswer(nullsi no se preguntó; si no,trueofalse).
El PDF no es una tabla: es el propio resumen — el resumen del día, la semana o el mes — impreso en una página exactamente como se ve en pantalla. Cada número que contiene es el número de la pantalla.
El archivo en bruto
Ajustes › General › Datos › Mostrar en el Finder te lleva a history.sqlite, junto a history.sqlite-wal y history.sqlite-shm. Mientras Deskami está abierto, los minutos más recientes pueden estar todavía en el archivo -wal; copia los tres archivos o sal de Deskami antes. Si los borras mientras Deskami está abierto, en pocos segundos empieza un registro nuevo y vacío. La exportación siempre escribe una instantánea completa. Lo que guarda la base de datos está en la página de privacidad.