Extensão para Visual Studio Code e Cursor focada em conforto visual, leitura de código e ergonomia durante sessões longas de programação. Combina temas de baixo brilho inspirados em leitores digitais, tipografia configurável, modo de foco por bloco semântico e lembretes de pausa ocular.
Versão: 0.2.0
Requisito: VS Code 1.85.0 ou superior
Sumário
- Visão geral
- Instalação
- Início rápido
- Comandos
- Atalhos de teclado
- Modo Leitura
- Foco por bloco semântico
- Temas incluídos
- Tipografia
- Saúde visual e ergonomia
- Painel de Controle
- Configurações
- Desenvolvimento local
- Empacotamento e publicação
- Solução de problemas
- Licença
Visão geral
A extensão foi pensada para reduzir o cansaço visual em sessões prolongadas de codificação. Enquanto estiver ativa, ela aplica JetBrains Mono como fonte padrão do editor (configurável). O Modo Leitura concentra a interface no conteúdo: oculta elementos de distração, ajusta tipografia, limita a largura da coluna de texto e destaca o bloco de código em uso.
Principais recursos:
- Modo Leitura com layout simplificado e restauração de configurações
- Três temas: Warm Light, Warm Light Night e Sepia Dark
- Foco visual por linha ou por bloco semântico (função, tag HTML, regra CSS)
- Timer da regra 20-20-20 com overlay de pausa
- Lembretes de postura e limite de sessão contínua
- Presets tipográficos e modo dedicado para Markdown
- Painel de Controle com ajustes visuais e estatísticas de pausas
Instalação
A partir do código-fonte (desenvolvimento)
git clone <url-do-repositorio>
cd aron_extension
npm install
npm run compile
No VS Code ou Cursor, abra a pasta do projeto e pressione F5 para iniciar a janela de desenvolvimento da extensão.
Marketplace (quando publicada)
- Abra a aba Extensions (
Ctrl+Shift+X) - Pesquise por Extensão do Aron
- Clique em Install
Início rápido
- Com a extensão carregada, a fonte JetBrains Mono será aplicada automaticamente (é necessário tê-la instalada no sistema).
- Pressione
Ctrl+Shift+Zpara ativar o Modo Leitura. - Pressione
Ctrl+Shift+Apara abrir o Painel de Controle. - Clique em Aron na barra de status para abrir o menu rápido de comandos.
- Para sair do Modo Leitura, use novamente
Ctrl+Shift+Zou o comando Restaurar Configurações.
Comandos
Todos os comandos estão disponíveis na Command Palette (Ctrl+Shift+P) com o prefixo Extensão do Aron.
| Comando | Descrição |
|---|---|
| Alternar Modo Leitura | Ativa ou desativa o Modo Leitura |
| Menu Rápido | Lista os comandos principais em um seletor |
| Painel de Controle | Abre a interface visual de configuração |
| Aplicar Warm Light | Aplica o tema claro amarelado |
| Aplicar Warm Light Night | Aplica o tema claro noturno (luz baixa) |
| Aplicar Sepia Dark | Aplica o tema escuro sépia |
| Aplicar Tema Pôr do Sol | Alterna entre Warm Light e Warm Light Night conforme o horário |
| Iniciar Pausa Ocular | Inicia manualmente uma pausa da regra 20-20-20 |
| Preset Tipográfico Conforto | Fonte levemente maior, altura de linha 1.6 |
| Preset Leitura Longa | Fonte maior, altura de linha 1.85, quebra de linha ativa |
| Preset Código Denso | Altura de linha compacta, quebra de linha desativada |
| Modo Leitura Markdown | Ativa leitura focada em arquivos .md com preview lateral |
| Criar Perfil Recomendado | Aplica configurações base e orienta a criação de um Profile do VS Code |
| Restaurar Configurações | Reverte alterações feitas pela extensão |
Atalhos de teclado
| Atalho | Ação |
|---|---|
Ctrl+Shift+Z |
Alternar Modo Leitura |
Ctrl+Shift+A |
Abrir Painel de Controle |
No macOS, substitua Ctrl por Cmd.
Modo Leitura
O Modo Leitura reorganiza o ambiente de edição para priorizar leitura e concentração.
O que muda ao ativar
- Activity bar, status bar, minimap e breadcrumbs são ocultados
- Sidebar, painel inferior e barra auxiliar são fechados
- Tamanho da fonte recebe um incremento configurável (
fontSizeBoost) - Altura de linha, quebra de linha e largura máxima de coluna são ajustadas
- Layout centralizado do editor é ativado (
zenMode.centerLayout) - Tema da extensão pode ser aplicado automaticamente (
autoSelectTheme) - Foco visual e dimming de código externo ao bloco ativo
- Timer de pausa ocular (se configurado para o Modo Leitura)
O que é restaurado ao desativar
Todas as configurações capturadas antes da ativação são gravadas e restauradas ao sair do modo, incluindo layout, tipografia, tema e personalizações de cor. A sidebar pode ser reaberta automaticamente conforme as opções de restauração.
Persistência entre recargas
O estado do Modo Leitura é salvo internamente. Se a extensão for recarregada durante o desenvolvimento (F5), o toggle continua reconhecendo que o modo está ativo e permite desativá-lo corretamente.
Foco por bloco semântico
Por padrão, o foco visual usa o modo smart: a extensão consulta o Selection Range Provider do VS Code (a mesma base do comando Expand Selection) para identificar o bloco que contém o cursor e escurece o restante do arquivo.
Escopos disponíveis (focusScope)
| Valor | Comportamento |
|---|---|
line |
Destaca apenas a linha do cursor |
block |
Destaca o bloco semântico (função, tag, regra CSS, etc.) |
smart |
Usa bloco quando couber nos limites configurados; caso contrário, usa linha |
Limites de bloco
focusBlockMinLines(padrão: 2): blocos menores que isso são ignoradosfocusBlockMaxLines(padrão: 80): blocos maiores fazem o modosmartvoltar para linha
Compatibilidade
Funciona nas linguagens com suporte a Selection Range no VS Code/Cursor (TypeScript, JavaScript, HTML, CSS, JSON, entre outras). Em linguagens sem suporte, o fallback é o foco por linha.
Temas incluídos
Extensão do Aron Warm Light
Tema claro com paleta amarelada inspirada em papel e leitores digitais. Fundo #E5D9B4, contraste suave, syntax highlighting em tons quentes. A intensidade amarelada e o nível de contraste podem ser ajustados via configuração.
Extensão do Aron Warm Light Night
Variante mais escura do Warm Light, indicada para leitura noturna com luz baixa. Mantém a base amarelada, porém com luminosidade reduzida.
Extensão do Aron Sepia Dark
Tema escuro com tons sépia e cinza quente. Indicado para ambientes com pouca luz, com emissão reduzida de luz azul em relação a temas escuros convencionais.
Ajustes dinâmicos
| Configuração | Efeito |
|---|---|
warmLightIntensity (0 a 100) |
Controla o quanto o fundo pende para o amarelo |
contrastLevel (low, medium, high) |
Ajusta contraste do texto e syntax |
autoSunsetMode |
Alterna Warm Light e Warm Light Night após sunsetHour |
syncWithSystemTheme |
Aplica Warm Light ou Sepia Dark conforme o tema do sistema |
autoThemeByFileType |
Aplica Warm Light em arquivos de leitura (.md, .txt, .rst) |
Por padrão, autoApplyTheme está desligado: os temas só são aplicados manualmente ou ao entrar no Modo Leitura (se autoSelectTheme estiver ativo).
Tipografia
Fonte ativa com a extensão
Enquanto a extensão estiver carregada, o editor usa:
'JetBrains Mono', monospace
Instale a fonte no sistema operacional para garantir a renderização correta: JetBrains Mono
Fonte serifada (opcional)
Para leitura longa, é possível usar Merriweather, Literata ou Georgia:
useSerifInReadingMode: serifada no Modo LeiturauseSerifInMarkdownMode: serifada no modo Markdown (padrão: ativo)
Presets tipográficos
| Preset | Font Size | Line Height | Word Wrap |
|---|---|---|---|
| Conforto | +1 px | 1.6 | on |
| Leitura longa | +3 px | 1.85 | on |
| Código denso | +0 px | 1.35 | off |
Os presets podem ser aplicados independentemente do Modo Leitura.
Saúde visual e ergonomia
Regra 20-20-20
A cada restIntervalMinutes (padrão: 45 minutos), a extensão sugere uma pausa ocular: olhar para um ponto distante por restDurationSeconds (padrão: 20 segundos).
Com enableRestOverlay ativo, a pausa exibe um overlay em tela cheia com contagem regressiva.
O timer pode ficar sempre ativo (enableRestTimerAlways) ou apenas no Modo Leitura (enableRestTimerInZenMode).
Lembrete de postura
Com enablePostureReminder, um aviso periódico (postureIntervalMinutes, padrão: 60) sugere levantar e alongar.
Limite de sessão
Com enableSessionLimit, após sessionLimitMinutes (padrão: 90) de codificação contínua, a extensão recomenda uma pausa.
Estatísticas
O Painel de Controle exibe o número de pausas realizadas no dia e o total acumulado.
Painel de Controle
Abra com Ctrl+Shift+A ou pelo comando Painel de Controle.
O painel oferece:
- Atalhos para Modo Leitura, temas e pausa ocular
- Slider de intensidade do Warm Light
- Seletor de nível de contraste
- Estatísticas de pausas oculares
A interface utiliza ícones da biblioteca Phosphor Icons no webview interno.
Configurações
Todas as configurações ficam em Settings > Extensão do Aron ou no settings.json com o prefixo extensaoDoAron..
Tipografia e fonte
| Chave | Padrão | Descrição |
|---|---|---|
readingFontFamily |
'JetBrains Mono', monospace |
Fonte aplicada com a extensão ativa |
readingSerifFontFamily |
'Merriweather', 'Literata', Georgia, serif |
Fonte serifada para leitura |
enableFontLigatures |
true |
Ligaduras tipográficas |
fontSizeBoost |
2 |
Incremento de fonte no Modo Leitura (px) |
lineHeight |
1.7 |
Altura de linha no Modo Leitura |
maxColumnWidth |
80 |
Largura máxima da coluna (caracteres) |
Temas
| Chave | Padrão | Descrição |
|---|---|---|
autoApplyTheme |
false |
Aplica tema ao carregar a extensão |
autoSelectTheme |
true |
Aplica tema ao entrar no Modo Leitura |
autoSunsetMode |
false |
Alternância automática por horário |
sunsetHour |
19 |
Hora de início do modo noturno quente |
syncWithSystemTheme |
false |
Sincroniza com tema claro/escuro do SO |
warmLightIntensity |
50 |
Intensidade amarelada (0 a 100) |
contrastLevel |
medium |
Contraste: low, medium, high |
autoThemeByFileType |
false |
Tema por tipo de arquivo |
readingFileExtensions |
["md","txt","rst"] |
Extensões de leitura |
codeFileExtensions |
["ts","tsx","js","jsx","py","rs","go"] |
Extensões de código |
Modo Leitura e foco
| Chave | Padrão | Descrição |
|---|---|---|
enableFocusMode |
true |
Destaque do bloco ativo |
enableLineDimming |
true |
Escurece código fora do foco |
focusScope |
smart |
Escopo: line, block, smart |
focusBlockMinLines |
2 |
Mínimo de linhas do bloco |
focusBlockMaxLines |
80 |
Máximo de linhas do bloco |
useSerifInReadingMode |
false |
Serifada no Modo Leitura |
useSerifInMarkdownMode |
true |
Serifada no modo Markdown |
reduceMotion |
true |
Reduz animações do VS Code |
Restauração de layout
| Chave | Padrão | Descrição |
|---|---|---|
restoreSidebarOnExit |
true |
Reabre sidebar ao sair |
restorePanelOnExit |
false |
Reabre painel inferior |
restoreAuxiliaryBarOnExit |
false |
Reabre barra auxiliar |
assumeSidebarVisible |
true |
Assume sidebar aberta antes do modo |
assumePanelVisible |
false |
Assume painel aberto |
assumeAuxiliaryBarVisible |
false |
Assume barra auxiliar aberta |
Saúde visual
| Chave | Padrão | Descrição |
|---|---|---|
enableRestTimerAlways |
true |
Timer 20-20-20 sempre ativo |
enableRestTimerInZenMode |
true |
Timer no Modo Leitura (se always off) |
restIntervalMinutes |
45 |
Intervalo entre lembretes (min) |
restDurationSeconds |
20 |
Duração da pausa (s) |
enableRestOverlay |
true |
Overlay na pausa ocular |
enablePostureReminder |
true |
Lembrete de postura |
postureIntervalMinutes |
60 |
Intervalo de postura (min) |
enableSessionLimit |
true |
Aviso de sessão longa |
sessionLimitMinutes |
90 |
Limite de sessão (min) |
Exemplo de settings.json
{
"extensaoDoAron.readingFontFamily": "'JetBrains Mono', monospace",
"extensaoDoAron.focusScope": "smart",
"extensaoDoAron.fontSizeBoost": 2,
"extensaoDoAron.autoApplyTheme": false,
"extensaoDoAron.autoSelectTheme": true,
"extensaoDoAron.warmLightIntensity": 50,
"extensaoDoAron.restIntervalMinutes": 45,
"extensaoDoAron.enableRestOverlay": true
}
Desenvolvimento local
Pré-requisitos
- Node.js 20 ou superior
- npm 9 ou superior
- VS Code ou Cursor 1.85+
Scripts
npm install # Instala dependências
npm run compile # Compila TypeScript
npm run watch # Compilação contínua
npm run package # Gera arquivo .vsix
Depuração
- Abra a pasta do projeto no editor
- Pressione F5
- Na janela Extension Development Host, teste os comandos da extensão
A configuração de launch está em .vscode/launch.json.
Estrutura do projeto
aron_extension/
├── src/
│ ├── extension.ts # Ponto de entrada
│ ├── zenMode.ts # Modo Leitura
│ ├── focusMode.ts # Foco por bloco/linha
│ ├── themeService.ts # Temas e ajustes de cor
│ ├── restTimer.ts # Pausas e lembretes
│ ├── controlPanel.ts # Painel webview
│ ├── typographyPresets.ts # Presets tipográficos
│ ├── markdownReading.ts # Modo Markdown
│ └── ...
├── themes/
│ ├── warm-light.json
│ ├── warm-light-night.json
│ └── sepia-dark.json
├── package.json
└── tsconfig.json
Empacotamento e publicação
Gerar pacote .vsix
npm run package
O arquivo será gerado na raiz do projeto.
Publicar na Marketplace
- Crie uma organização em Azure DevOps
- Gere um Personal Access Token com escopo Marketplace (Manage)
- Crie um Publisher em Marketplace Management
- Atualize o campo
"publisher"empackage.json - Autentique e publique:
npx vsce login SEU_PUBLISHER
npx vsce publish
Solução de problemas
A fonte ficou grande demais após testes
Execute Extensão do Aron: Restaurar Configurações ou ajuste manualmente:
"editor.fontSize": 14
Se o zoom da janela também mudou, use Ctrl+0 para redefinir.
Não consigo sair do Modo Leitura
- Pressione
Ctrl+Shift+Zpara alternar - Se persistir, use Restaurar Configurações
- Após recarregar a extensão (F5), o estado é recuperado automaticamente
Erro ao alterar configuração do editor
Algumas chaves (como editor.padding.left) não existem na API do VS Code/Cursor. A extensão usa alternativas compatíveis (wordWrapColumn, zenMode.centerLayout). Mantenha a extensão atualizada.
JetBrains Mono não aparece
Instale a fonte no sistema operacional. Sem ela, o editor usará a fallback monospace definida na configuração.
Foco por bloco não funciona em certos arquivos
Verifique se a linguagem possui Selection Range Provider. Use focusScope: "line" como alternativa.
Licença
Projeto de uso pessoal. Defina a licença conforme a publicação desejada (MIT, Apache 2.0, etc.).
Extensão do Aron · Conforto visual para quem passa horas no editor.