DeskamiUm pequeno companheiro na tua secretária

Formato de exportação

A exportação, parte do Deskami Plus, escreve o mesmo registo minuto a minuto que o Deskami guarda no teu Mac. Nada é acrescentado, estimado ou preenchido. Esta página descreve o que está no ficheiro.

Convenções

  • Uma célula vazia no CSV, ou null no JSON, significa não medido. Um 0 significa medido, e deu zero.
  • Os nomes das colunas estão em inglês em todas as línguas e são fixos; só mudam juntamente com uma nova export_version.
  • Os ficheiros são UTF-8. O CSV é separado por vírgulas, com uma linha de cabeçalho.
  • As horas estão em UTC, em ISO 8601, por exemplo 2026-09-28T07:41:00Z. As datas estão no formato YYYY-MM-DD e são o dia do calendário em que o minuto foi registado.
  • Os decimais usam ponto, nunca separador de milhares. Os booleanos são true e false.
  • Há uma linha por cada minuto em que o Deskami registou alguma coisa, e nenhuma para os minutos em que não registou nada.

Colunas dos minutos

O CSV tem estas colunas, por esta ordem; no JSON, os mesmos campos formam cada minuto. O nome entre parênteses é a coluna no ficheiro da base de dados em bruto.

  • minute_utc — hora. O início do minuto, em UTC. (minute_utc, em segundos Unix)
  • local_day — data. O dia do calendário a que este minuto pertence, no fuso horário em que o Mac estava nesse momento. Fica fixo quando é escrito; uma mudança de fuso horário posterior não o altera. (day_key)
  • setup_id — número inteiro. A configuração em uso: uma câmara mais uma disposição de ecrãs. No JSON, as configurações estão listadas em setups. (profile_id)
  • seconds_at_desk — de 0 a 60. Os segundos em que a câmara te viu neste minuto. Com camera_off a false, 0 significa que a câmara estava ligada e não te viu. (present_s)
  • posture_deviation — número, 0 ou mais. Quanto a tua cabeça e os teus ombros ficaram abaixo da tua própria referência, em média ao longo do minuto, como múltiplo do limiar do lembrete em vigor nesse momento: 0 na referência, 1 no limiar. Vazio quando a postura não foi medida. (posture_dev)
  • posture_peak — número, 0 ou mais. O valor mais alto da mesma medida dentro do minuto. (posture_peak)
  • distance_deviation — número, 0 ou mais. Quanto mais perto do ecrã esteve o teu rosto do que na tua referência, na mesma escala, lido a partir do afastamento entre os teus olhos na imagem. (distance_dev)
  • blinks — número inteiro. Pestanejos contados enquanto os olhos podiam ser medidos. Vazio quando não podiam. (blinks)
  • incomplete_blinks — número inteiro. Pestanejos em que o olho, no momento mais fechado, não chegou suficientemente perto de fechar. Vazio quando não foi possível avaliar. (incomplete_blinks)
  • head_pitch_degrees — número. Inclinação média da cabeça, em graus, tal como a câmara a comunica: em relação à câmara, não à tua referência. (head_pitch)
  • confidence — de 0 a 1. Confiança média da deteção do rosto. (confidence)
  • light — de 0 a 1. Luminosidade média da zona do rosto, de 0 escuro a 1 claro. Não é a luz da sala. (light)
  • eyes_measured — booleano. Os olhos puderam ser medidos pelo menos uma vez neste minuto. Quando é false, blinks, incomplete_blinks e eye_observed_seconds ficam vazios. (eye_valid)
  • eye_observed_seconds — de 0 a 60. Segundos em que os olhos foram realmente observados. Os pestanejos por minuto são blinks × 60 ÷ eye_observed_seconds. (eye_observed_s)
  • look_aways — número inteiro. Olhares ao longe completos, o hábito 20-20-20. Vazio quando o olhar ao longe não estava a ser medido. (gaze_breaks)
  • camera_off — booleano. A câmara esteve desligada neste minuto: desligaste-a, outra aplicação estava a usá-la, ou a permissão foi retirada. As colunas da câmara ficam então vazias; as colunas da aplicação e da atividade podem continuar preenchidas. (camera_off)
  • declared_break — booleano. Disseste ao Deskami que estavas numa pausa. O minuto conta como tempo fora da secretária, seja o que for que a câmara tenha visto. (declared_break)
  • front_app — texto. O identificador de pacote (bundle identifier) da aplicação que esteve à frente durante a maior parte do minuto, por exemplo com.apple.Safari. Vazio quando essa leitura estava desligada, o ecrã estava bloqueado ou não havia nada à frente. Nunca é um título de janela. (app_id)
  • app_switches — número inteiro. Quantas vezes mudou a aplicação à frente neste minuto. (app_switches)
  • active_seconds — de 0 a 60. Segundos em que o teclado ou o rato tinham sido usados nos 15 segundos anteriores. Só é lido o tempo desde o último evento, nunca as teclas. Vazio quando essa leitura estava desligada. (active_s)
  • call_seconds — de 0 a 60. Segundos em que uma aplicação de chamadas estava à frente, ou em que uma aplicação tinha o microfone e o altifalante abertos ao mesmo tempo. Vazio quando não foi medido, incluindo todos os minutos registados antes de o Deskami medir isto. (meeting_s)

JSON

O ficheiro JSON é um único objeto. Começa com um cabeçalho: export_version, app_version, exported_at, time_zone (no momento da exportação), database_schema_version, range (kind, from, to) e setups (id, camera_name, created_at).

Depois vem days, um objeto por cada dia registado no período. Cada dia traz o seu próprio resumo, os seus minutos e os seus lembretes:

  • local_day e minutes_at_desk, a soma de seconds_at_desk a dividir por 60.
  • breaks: períodos de 5 minutos ou mais fora da secretária, e de menos de 2 horas, entre dois períodos à secretária. O tempo com a câmara desligada não conta para nenhum dos lados.
  • posture_fine_minutes (posture_deviation abaixo de 1) e posture_attention_minutes (1 ou mais).
  • blink_rate: pestanejos por minuto ao longo do tempo em que os olhos foram observados; null com menos de um minuto de observação.
  • incomplete_blink_ratio: null quando foram poucos os pestanejos que puderam ser avaliados.
  • reminders_by_signal: lembretes mostrados, contados por sinal.
  • minutes: as colunas dos minutos descritas acima, um objeto por minuto.
  • reminders: um objeto por lembrete, com time_utc, local_day, setup_id, signal (posture, distance, blink, incompleteBlink ou gaze), build_up_seconds (tempo acima do limiar antes do lembrete), recover_seconds (tempo até voltar a ficar abaixo dele; null quando a medição parou antes), asked (se a pergunta sobre a tua referência foi mostrada) e answer (null quando não foi feita a pergunta; caso contrário, true ou false).

PDF

O PDF não é uma tabela: é o próprio resumo — o resumo do dia, a semana ou o mês — impresso numa página, exatamente como aparece no ecrã. Cada número que lá está é o número que está no ecrã.

O ficheiro em bruto

Definições › Geral › Dados › Mostrar no Finder revela o history.sqlite, ao lado de history.sqlite-wal e history.sqlite-shm. Enquanto o Deskami está a correr, os minutos mais recentes podem ainda estar no ficheiro -wal; copia os três ficheiros, ou sai primeiro do Deskami. Se os apagares enquanto o Deskami está a correr, ele começa um registo novo e vazio em poucos segundos. A exportação grava sempre um instantâneo completo. O que a base de dados contém está listado na página de privacidade.