Extensão do AronExtensã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 Sumário
Visão geralA 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:
InstalaçãoA partir do código-fonte (desenvolvimento)
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)
Início rápido
ComandosTodos os comandos estão disponíveis na Command Palette (
Atalhos de teclado
No macOS, substitua Modo LeituraO Modo Leitura reorganiza o ambiente de edição para priorizar leitura e concentração. O que muda ao ativar
O que é restaurado ao desativarTodas 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 recargasO 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ânticoPor padrão, o foco visual usa o modo Escopos disponíveis (
|
| 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.