🌟 Recursos Exclusivos#

Esta página documenta os recursos únicos do Codis que o diferenciam de outros editores.


Vim Mode#

O Vim Mode do Codis é uma implementação imersiva que vai além de um simples emulador de atalhos. Ao ser ativado, cria uma janela CLI separada com aparência de terminal.

Ativando o Vim Mode#

  • Ctrl+Alt+V
  • Menu Ferramentas → ⌨️ Vim Mode (toggle)

Nota: Vim Mode e K-UI são mutuamente exclusivos. Ativar um desativa o outro.

O Que Acontece ao Ativar#

  1. Uma janela Toplevel separada é criada com aparência de terminal (fundo escuro, fonte monoespaçada).
  2. O conteúdo do arquivo ativo é copiado para o editor interno da janela CLI.
  3. A interface principal do Codis continua ativa em segundo plano.
  4. O rodapé da janela CLI exibe: modo atual | nome do arquivo | linha:coluna | indicador de modificação.
  5. A interface principal tem seu chrome ocultado (sidebar, Activity Bar, tabbar, breadcrumb, barra de status) para foco total.

Modos Implementados#

Modo Cursor Como Entrar
NORMAL Bloco (█) Esc; padrão ao abrir
INSERT Barra (|) i, a, o, I, A, O
VISUAL Bloco (violeta) v
V-LINE Bloco (violeta) V
REPLACE Underline (vermelho) r
COMMAND Barra :

Comandos NORMAL#

Tecla Ação
h j k l Mover cursor
w b e Mover por palavras
gg Início do arquivo
G Fim do arquivo
0 Início da linha
$ Fim da linha
dd Apagar linha
yy Copiar (yank) linha
p P Colar depois / antes
u Desfazer
Ctrl+R Refazer
x Apagar caractere
~ Alternar case do char
>> << Indentar / desindentar

Comandos COMMAND (:)#

Comando Ação
:w Salvar arquivo
:q Fechar janela Vim (volta ao Codis)
:q! Fechar sem salvar
:wq Salvar e fechar
:<número> Ir para a linha
:%s/busca/subst/g Substituição global (regex)

Saindo do Vim Mode#

Use :q, :q! ou :wq dentro da janela CLI, ou Ctrl+Alt+V na janela principal do Codis.


Zen Mode#

O Zen Mode remove todas as distrações para foco total no código.

Ativando#

  • Ctrl+K Z
  • Menu Ferramentas → 🌌 Zen Mode

O Que o Zen Mode Faz#

  • Oculta: sidebar, painel inferior, Activity Bar, botões flutuantes
  • Ativa tela cheia (-fullscreen)
  • Exibe uma label discreta no rodapé: "Zen Mode [Esc para sair]"
  • Inicia o Zen Media Player automaticamente (se playlist configurada e zen_media_autoplay: true)

Saindo do Zen Mode#

Pressione Esc ou use Ctrl+K Z novamente.


Zen Media Player#

O Zen Media é um player de midia integrado, projetado para criar uma atmosfera imersiva durante sessões de código.

Configurando#

Ferramentas → 🎵 Zen Media Config... (ou via Spotlight no K-UI).

No diálogo de configuração:

  • Adicione arquivos de midia à playlist
  • Configure autoplay ao entrar no Zen Mode
  • Ajuste volume e modo de repetição

Zen Player (interface)#

Abra com Workspace → Zen Player ou Ctrl+Alt+P. Funciona dentro e fora do Zen Mode.

Recurso Como funciona
Janela flutuante Layout completo: capa grande e abas Tocando / Fila / Equalizador. Botão de pin mantém no topo. Atalhos na janela: Espaço (play/pause), ←/→ (faixa anterior/próxima).
Encaixar (attach) Botão de dock: o player vira uma barra no rodapé da janela principal (capa, título, controles, busca, volume; EQ e Fila abrem em popup). O botão ao lado destaca de volta. A música não é interrompida na troca.
Capa 1) imagem com o mesmo nome do áudio na pasta; 2) cover/folder/front/album/artwork na pasta; 3) arte embutida (requer mutagen); 4) miniatura via ffmpeg, se instalado; 5) capa gerada. A cor de destaque da interface vem da capa.
Metadados Título/artista/álbum via mutagen; sem tags, usa o nome do arquivo (Artista - Título é separado).
Equalizador 10 bandas (31 Hz–16 kHz, ±12 dB), pré-amp automático contra clipping, 13 presets (Flat, Bass Boost, Treble Boost, Vocal, Rock, Pop, Jazz, Classical, Electronic, Hip-Hop, Acoustic, Lo-fi, Late Night) e presets próprios (Salvar preset). Arraste as bandas, use a roda do mouse (±0,5 dB) ou duplo clique para zerar uma banda.
Minimizar Esconde o player e mostra a bolinha (ZenMiniOrb); clicar nela volta ao player.

Preferências persistidas em config.json: zen_player_mode (floating/docked), zen_player_geometry, zen_player_topmost, zen_eq_gains, zen_eq_enabled, zen_eq_custom, zen_media_volume, zen_media_shuffle, zen_media_repeat, zen_media_playlist.

O equalizador é aplicado ao vivo no mpv (filtro af com equalizer do ffmpeg) e no VLC (AudioEqualizer).

Componentes#

Componente Arquivo Descrição
ZenMediaPlayer zen_media.py Motor (mpv/VLC), playlist, EQ, vários ouvintes (add_listener)
ZenPlayerHost / ZenPlayerView zen_player.py Onde o player vive (janela/dock) e a interface em dois layouts
Widgets zen_player_widgets.py Botões vetoriais, barra de busca, EqualizerPanel, QueuePanel
Lógica zen_audio.py EQ/presets, capas, metadados (sem Tk, testável)
ZenMiniOrb zen_media.py Bolinha flutuante quando o player está minimizado
ZenMediaDialog zen_media.py Diálogo de configuração completo

Fluxo#

  1. Ao entrar no Zen Mode com faixas na playlist, o player é exibido no modo salvo.
  2. Minimizar mostra a ZenMiniOrb no canto inferior direito; clicar nela reabre o player.
  3. Ao sair do Zen Mode apenas a bolinha é ocultada; o player (janela ou dock) e a reprodução continuam.

Focus Mode#

O Focus Mode atenua visualmente as abas inativas para destacar o arquivo que está sendo editado.

Ativando#

Menu Ferramentas → Focus Mode.

Efeito: editores inativos recebem bg = t.bg (mais claro/escuro) em vez de t.editor_bg, criando contraste visual entre a aba ativa e as demais.


Easter Eggs#

  • Er...nada aqui!

Modo Somente Leitura#

Ferramentas → Modo Somente Leitura alterna o editor ativo entre editável e state="disabled".

No modo somente leitura:

  • Nenhuma digitação é possível
  • Atalhos de edição são ignorados
  • A barra de status indica o estado

Modo Sobrescrita#

Pressione Insert para alternar entre modo de inserção (padrão) e sobrescrita (cada tecla substitui o caractere à frente do cursor em vez de inserir).


Propriedade Exclusiva: Histórico de Colagem (Clipboard Ring)#

O Codis mantém um histórico das últimas 50 entradas copiadas/recortadas. Ctrl+Shift+V abre o histórico para escolher qual entrada colar.

O histórico é mantido em memória durante a sessão.


Barra de Título Nativa Colorida (Windows 11)#

No Windows 11, o Codis colore automaticamente a barra de título nativa da janela para combinar com o tema ativo, usando DwmSetWindowAttribute (DWMWA_CAPTION_COLOR).

Isso dá ao Codis uma aparência nativa integrada, sem necessidade de configuração.


Novas Janelas#

Arquivo → Nova Janela lança uma nova instância independente do Codis no mesmo processo Python (python -m src). Múltiplas instâncias são totalmente independentes e compartilham apenas as configurações em config.json.


Modos Standalone#

O Codis oferece 29 modos standalone (mais 4 aliases) que permitem abrir qualquer painel isoladamente, sem carregar o editor completo. São úteis para scripts de automação, launchers de sistema e uso rápido de ferramentas específicas.

Cada modo standalone carrega apenas o subconjunto mínimo de dependências necessário: tema, i18n, configuração e o painel em questão. Fechar a janela encerra o processo.

Como Usar#

# Subcomandos diretos (preferido - sem hífens)
python run.py sql
python run.py git /meu/projeto

# Flags longas (compatibilidade)
python run.py --sql
python run.py --git /meu/projeto

# Ver lista completa
python run.py --help

O run.py normaliza automaticamente python run.py sql para python run.py --sql, então ambos os formatos funcionam de forma idêntica.

Lista Completa de Modos#

Modo Alias Descrição Argumento
--sql - SQL Studio (SQLite/PostgreSQL/MySQL/DuckDB) -
--tasks - Gerenciador de Tarefas: Kanban + Agendador -
--diff - Diff Viewer lado a lado [A] [B]
--paint - Editor de Imagens básico [img]
--rest - REST Client (HTTP com headers e corpo) -
--regex - Regex Playground com grupos e flags -
--terminal - Terminal integrado [dir]
--git - Painel Git completo [dir]
--pip - Gerenciador de Pacotes Pip -
--scratch - Bloco de Notas multi-aba, persistido -
--flowchart - Gerador de Fluxograma (AST Python) [py]
--render --preview Preview HTML / Markdown / SVG [file]
--stats - Estatísticas de Código (LOC, complexidade) [dir]
--pomodoro - Timer Pomodoro 25/5 configurável -
--todo - Lista de Tarefas Rápidas -
--output - Painel de Output (log viewer) -
--processes --procs Gerenciador de Processos do sistema -
--calculator --calc Calculadora Científica -
--clock - Relógio / Alarmes / Cronômetro -
--calendar - Calendário com Lembretes -
--env - Variáveis de Ambiente do shell -
--formatter - Formatador JSON / YAML / TOML / XML -
--snippets - Gerenciador de Snippets -
--color-picker - Seletor de Cores com picker visual -
--player - Zen Media Player (VLC/MPV backend) -
--accessibility --a11y Painel de Acessibilidade -
--plugins - Gerenciador de Plugins -
--ssh - Conexão SSH / SFTP Remota -
--archive - Visualizador de ZIP / RAR / 7z [file]

Exemplos Práticos#

# Abrir diff entre dois arquivos diretamente do terminal
python run.py diff antes.py depois.py

# Iniciar o SQL Studio com o projeto ativo
python run.py sql

# Abrir o flowchart de um arquivo específico
python run.py flowchart src/app.py

# Preview de um relatório Markdown
python run.py render relatorio.md

# Estatísticas do projeto inteiro
python run.py stats src/

Reinício do Processo#

Arquivo → Reiniciar salva todos os arquivos modificados e reinicia o processo do Codis:

  • No Linux/macOS: usa os.execv() para substituir o processo atual.
  • No Windows: lança um novo processo com subprocess.Popen e destrói a janela atual.

O workspace e a sessão são salvos antes do reinício para que tudo seja restaurado.