Repository navigation
faq
Para diagnóstico técnico mais profundo (comandos de log, causas detalhadas, coleta de informações para bug report), veja 🛠️ Solução de Problemas.
- Verifique o Python 3.12+:
python --version - Verifique o Tkinter:
python -c "import tkinter"(sem erro = OK) - Rode pelo terminal para ver erros:
python run.py - Se houver erro de configuração corrompida, delete
~/.codis/config.jsone reinicie
O Codis não requer nenhum
pip installpara abrir. Se ainda falhar após os passos acima, veja o diagnóstico completo em troubleshooting.md#o-codis-não-abre--tela-preta ou abra uma issue no GitHub com a mensagem de erro completa.
O wizard só aparece quando first_run_done não está em config.json. Para forçá-lo: delete ~/.codis/config.json e reinicie.
Pode ser sessão corrompida. Delete ~/.codis/session.json e reinicie.
- Verifique se a extensão está mapeada em
EXT_LANG(src/constants.py) - Mude a linguagem manualmente clicando no nome na barra de status
- Se a linguagem não existir no seletor, ela não tem parser implementado - contribuições são bem-vindas!
- Verifique
autocomplete: trueemconfig.json - Aguarde o
autocomplete_delayapós digitar (padrão: 200 ms) - Requer pelo menos
autocomplete_min_charscaractere (padrão: 1)
O Codis tem um handler global de clipboard contextual:
- Foco em
Entry→ opera sobre o campo de texto - Foco no editor
Text→ delega ao handler interno - Outros casos → opera sobre o editor ativo
Se não funcionar, verifique qual widget tem foco. Ctrl+A também é contextual.
Se a ação correspondente falhar internamente, o Codis mostra um diálogo de erro e registra o problema no log, em vez de simplesmente não fazer nada. Se você vir esse diálogo, copie a mensagem e reporte um bug - ele ajuda bastante a identificar a causa. Se nenhum diálogo aparecer e o item realmente não tiver efeito algum, isso também é um bug válido para reportar.
Use o Modo Completo de troca de tema (não o Modo Rápido) para reconstruir toda a interface com o novo tema.
Veja Temas → Criando um Tema Customizado.
-
py_compile(sempre disponível) funciona para erros de sintaxe - Para pylint/mypy/flake8:
pip install pylint mypy flake8 - Verifique os caminhos em
config.json:pylint_path,mypy_path,flake8_path - Confira o Output Panel → canal
Pythonpara erros
O LintManager executa o ESLint no diretório raiz do workspace. O arquivo de configuração (.eslintrc, eslint.config.js, etc.) deve estar na raiz do workspace aberto.
O lint roda em thread separada e não deve travar a UI. Se perceber lentidão:
- Aumente
lint_delayemconfig.json(ex:1500ms) - Desative linters pesados:
"pylint_path": ""ou"lint_python": false - Para arquivos grandes:
"lint_enabled": false
- Verifique se o shell (
default_shell) está noPATH - Se em branco, o Codis detecta o primeiro shell disponível automaticamente
- No Windows, pelo menos
cmd.exedeve estar disponível - Confira o Output Panel para mensagens de erro
Ctrl+, → campo default_shell → nome do shell ("bash", "zsh", "PowerShell")
Ou clique no nome do shell na barra de status do terminal.
- Verifique se o Git está instalado:
git --version - Abra uma pasta que seja repositório Git (contém
.git/) - Verifique se
git_enabled: trueemconfig.json
O painel Git exibe um diálogo de credenciais ao detectar erros. Insira seu usuário e token de acesso pessoal (PAT). Para SSH, certifique-se de que a chave SSH está configurada no sistema.
Isso acontece quando nenhum breakpoint foi marcado antes de clicar em Run - sem breakpoints, o debugpy libera a execução e o script roda normalmente do início ao fim. Não é um bug: clique na margem esquerda do editor (gutter), ao lado do número da linha, para marcar um breakpoint antes de iniciar a depuração. Veja o guia completo em Debug.
A porta configurada para o DAP (debug_dap_port, padrão 5678) já está sendo usada por outro processo. As causas mais comuns:
- Outra sessão de debug do Codis ainda está rodando - clique em ⏹ Stop no painel antes de iniciar uma nova.
- VS Code aberto ao mesmo tempo, depurando Python no mesmo projeto - veja a próxima pergunta.
- Algum outro processo manual (
python -m debugpy ...) deixado rodando em segundo plano.
Solução rápida: mude debug_dap_port para outro valor (ex: 5690) em Configurações → Avançado, ou Ctrl+, → Avançado.
Isso é esperado, não um defeito de nenhum dos dois editores: o Codis e a extensão Python Debugger do VS Code usam, por padrão, exatamente a mesma porta (5678) para conversar com o debugpy, porque os dois seguem a mesma convenção da ferramenta. Com ambos abertos e tentando depurar Python ao mesmo tempo, um deles falha ao abrir a porta, ou acaba conectando à sessão errada.
A solução é simples - não é preciso fechar nenhum dos dois editores:
- No Codis, vá em Configurações → Avançado (
Ctrl+,); - Mude
debug_dap_portpara um valor diferente do padrão (ex:5690,15678, qualquer porta livre); - Pronto. Os dois editores podem depurar Python ao mesmo tempo, cada um na sua porta, sem disputar o mesmo recurso.
Isso só importa se você for depurar nos dois ao mesmo tempo; usando um por vez nunca há conflito.
Instale com pip install debugpy, no mesmo Python/ambiente virtual que o Codis usa para executar seus scripts (confira o interpretador na barra de status). Sem o debugpy, o painel ainda executa o arquivo, mas sem breakpoints/stepping reais.
Eles só têm efeito quando a execução está parada num breakpoint (status ⏸ Stopped). Se não houver uma sessão parada (ela ainda não rodou até um breakpoint, já terminou, ou nunca foi iniciada), o painel avisa no console em vez de fingir que algo aconteceu.
- Instale o servidor LSP (ex:
pip install python-lsp-serverpara Python) - O servidor deve estar no
PATH - Verifique o Output Panel → canal
LSPpara erros - Confirme
lsp_enabled: trueemconfig.json
Abra um arquivo Python e pressione F12 sobre uma função (Ir para Definição). Se funcionar, o LSP está ativo. Mensagens também aparecem no canal LSP do Output Panel.
- Desative com
Ctrl+Alt+N - Se não voltar ao normal, reinicie o Codis
- Se persistir, delete
~/.codis/config.jsonpara resetar
Mude o perfil de performance para low ou minimal:
- Ferramentas → K-UI: Performance
- Spotlight (
Ctrl+Space) → "Perf"
| Perfil | CPU |
|---|---|
quantum |
Muito alto |
ultra |
Alto |
high |
Médio-alto |
balanced |
Médio |
windows |
Médio-baixo |
low |
Baixo |
minimal |
Mínimo (alias de low - ainda tem partículas/meteoros, não é "sem animações") |
ultra_plustambém existe como alias dequantum, epower_savercomo alias dewindows(mesmos perfis, nomes alternativos).
O K-UI usa PIL/Pillow para renderizar as nebulosas em background. Instale com pip install Pillow. Sem PIL, o K-UI usa gradiente puro como fallback.
Os easter eggs são ativados via comando no terminal integrado: /codis <código>. Exemplo: /codis nova. Ver a lista completa em K-UI → Easter Eggs.
- Verifique se está em
~/.codis/plugins/ - Output Panel → canal
Extensionspara erros - Verifique se a análise estática de segurança não bloqueou o plugin
- Certifique-se de que o plugin define
MANIFESTeactivate(api)
O analisador de imports (_sandbox_check_imports em src/plugins/api.py) classifica os, pathlib, shutil, requests, threading, pickle e outros como avisos; já subprocess, socket, ssl, ctypes, multiprocessing, winreg e similares são classificados como bloqueados - mais arriscados.
O que acontece depois depende de como o plugin chegou ao Codis:
-
Instalando pela interface (
Plugins → Instalar Plugin): tanto avisos quanto bloqueios mostram um diálogo de confirmação. Aceitar adiciona o plugin a~/.codis/trusted_plugins.json, e ele passa a carregar normalmente nas próximas inicializações. -
Arquivo já presente em
~/.codis/plugins/sem nunca ter passado pela instalação (ex: copiado manualmente): se contiver imports bloqueados, é recusado automaticamente, sem diálogo - só passa a carregar depois de ser instalado uma vez pela interface.
pip install pytest pytest-cov
pytest tests/ -vA suíte roda headless (sem display gráfico). Ver tests/README.md.
O conftest.py instala stubs de Tkinter automaticamente antes de qualquer importação. Certifique-se de rodar pytest a partir da raiz do projeto (cd Codis && pytest tests/).
Para arquivos acima de 3 MB, o modo simplificado é ativado automaticamente (syntax highlighting e autocomplete desativados). O limite é configurável via large_file_mb em config.json.
O conteúdo completo de todos os arquivos abertos fica em memória. Feche abas não utilizadas. O K-UI com perfis ultra ou quantum também consome mais CPU e memória.
Abra uma issue no GitHub incluindo:
- Versão do Codis (
Ajuda → About Codis) - Sistema operacional e versão do Python
- Passos para reproduzir
- Mensagens de erro do terminal ou Output Panel
Veja CONTRIBUTING.md.
Começando
Editando
- Editor
- Inteligência do Editor
- KDocs
- Linting & LSP
- Debug
- Git
- Terminal
- Workspace & Produtividade
- Utilitários de Desenvolvimento
Assistente e conectividade
Ferramentas e extras
- Recursos Avançados
- Recursos Exclusivos
- K-UI
- Sistema & Performance
- Backups, Lixeira & Arquivos
- Painel de Saída
- Acessibilidade
- Editor de Imagens (Paint)
- Utilitários Pessoais
- Incorporar Programas e Preview Web
- DOOM Embutido
Para quem desenvolve
Projeto