Repository navigation
temas
O Codis possui um sistema de temas completo com suporte a modos claro e escuro, além de suporte a temas criados por plugins.
21 temas inclusos, todos definidos em src/theme/base.py. O nome exibido no menu Exibir → Tema é exatamente o nome interno (sem rebranding) - a tabela abaixo só capitaliza para leitura.
| Nome interno | Exibição | Modo |
|---|---|---|
fluent_dark |
Fluent Dark | Escuro |
fluent_light |
Fluent Light | Claro |
catppuccin_mocha |
Catppuccin Mocha | Escuro |
tokyo_night |
Tokyo Night | Escuro |
dracula |
Dracula | Escuro |
gruvbox_dark |
Gruvbox Dark | Escuro |
gruvbox_light |
Gruvbox Light | Claro |
solarized_dark |
Solarized Dark | Escuro |
solarized_light |
Solarized Light | Claro |
one_dark_pro |
One Dark Pro | Escuro |
nord |
Nord | Escuro |
monokai_pro |
Monokai Pro | Escuro |
github_dark |
GitHub Dark | Escuro |
github_light |
GitHub Light | Claro |
palenight |
Palenight | Escuro |
rose_pine |
Rosé Pine | Escuro |
everforest_dark |
Everforest Dark | Escuro |
ayu_mirage |
Ayu Mirage | Escuro |
midnight_void |
Midnight Void | Escuro |
sepia |
Sepia | Claro |
high_contrast |
High Contrast | Escuro |
Além desses, o modo K-UI aplica uma camada visual holográfica adicional sobre qualquer um dos 21 temas - ver Tema K-UI mais abaixo.
O tema padrão é fluent_dark.
Existem quatro formas de trocar de tema:
-
Menu:
Exibir → Tema- lista todos os temas disponíveis. - Activity Bar: clique no ícone 🎨 na parte inferior da Activity Bar - avança para o próximo tema.
-
Configurações:
Ctrl+,→ campotheme. -
Paleta de Comandos:
Ctrl+Shift+P→ "Toggle Theme".
Ao trocar de tema, um diálogo pergunta qual modo aplicar:
- Modo Rápido - repinta todos os widgets sem reconstruir a UI. Mais rápido, mas alguns elementos podem ficar com cores ligeiramente inconsistentes.
- Modo Completo - destrói e reconstrói toda a interface preservando o estado (workspace e arquivos abertos). Garante consistência total de cores.
O Seletor de Temas (Exibir → Tema → Abrir Seletor de Temas...) abre um painel dedicado de pré-visualização (src/ui/theme_preview_panel.py) antes de aplicar qualquer tema definitivamente:
- Grade de cartões com todos os temas disponíveis, mostrando nome e um ícone indicando se é dark ou light
- Preview ao vivo: cada cartão mostra uma miniatura realista de como ficariam o editor, a sidebar, a tab bar e a barra de status com aquele tema - sem precisar aplicá-lo antes para ver
- Filtro por nome e por polaridade (mostrar apenas dark, apenas light, ou todos)
- Navegação totalmente por teclado: setas para mover entre cartões,
Enterpara confirmar,Escapepara cancelar - Ao confirmar, ainda é perguntado se a aplicação deve ser Completa ou Rápida (ver seção anterior)
Um tema é um @dataclass Theme definido em src/theme/base.py. Os atributos são organizados por grupos:
| Atributo | Descrição |
|---|---|
name |
Identificador único do tema |
dark |
True para escuro, False para claro |
bg |
Cor de fundo da janela |
fg |
Cor de texto principal |
fg_muted |
Cor de texto secundário (menos visível) |
| Atributo | Descrição |
|---|---|
editor_bg |
Fundo da área de código |
cursor |
Cor do cursor de texto |
O texto principal do editor usa
fg(não existe umeditor_fgseparado no dataclassTheme, apesar de mencionado no docstring interno debase.py- trata-se de uma referência desatualizada no comentário do código-fonte).
| Atributo | Descrição |
|---|---|
sidebar_bg |
Fundo da sidebar |
activity_bg |
Fundo da Activity Bar |
| Atributo | Descrição |
|---|---|
tabbar_bg |
Fundo da barra de abas |
tab_act_bg |
Fundo da aba ativa |
tab_act_fg |
Texto da aba ativa |
tab_in_fg |
Texto das abas inativas |
| Atributo | Descrição |
|---|---|
panel_bg |
Fundo do painel inferior |
floating_bg |
Fundo de janelas flutuantes (diálogos) |
| Atributo | Descrição |
|---|---|
sel_bg |
Fundo de texto selecionado |
sel_fg |
Texto selecionado |
input_bg |
Fundo de campos de texto |
border |
Cor de bordas e divisores |
| Atributo | Descrição |
|---|---|
btn_bg |
Fundo de botões padrão |
btn_hover |
Fundo de botões ao passar o mouse |
btn_fg |
Texto de botões padrão |
btn_primary |
Fundo de botões de ação primária |
btn_primary_fg |
Texto de botões de ação primária |
| Atributo | Descrição |
|---|---|
scroll_bg |
Trilha da scrollbar |
scroll_thumb |
Thumb (alça) da scrollbar |
| Atributo | Descrição |
|---|---|
ok_fg |
Cor de status positivo |
warn_fg |
Cor de avisos |
err_fg |
Cor de erros |
| Atributo | Descrição |
|---|---|
t_keyword |
Palavras-chave |
t_string |
Strings |
t_comment |
Comentários |
t_number |
Números |
t_func |
Funções |
t_type |
Tipos / classes |
t_operator |
Operadores |
t_decorator |
Decoradores / anotações |
A forma mais flexível é criar um plugin que registre o tema:
# meu_plugin.py
from src.plugins.api import PluginAPI, PluginManifest
from src.theme.base import Theme
MANIFEST = PluginManifest(name="meu-tema", version="1.0.0")
def activate(api: PluginAPI) -> None:
meu_tema = Theme(
name="meu_tema",
dark=True,
bg="#1a1a2e",
fg="#e0e0e0",
fg_muted="#888888",
editor_bg="#16213e",
cursor="#00d4ff",
sidebar_bg="#0f3460",
activity_bg="#0a2540",
tabbar_bg="#1a1a2e",
tab_act_bg="#0f3460",
tab_act_fg="#ffffff",
tab_in_fg="#aaaaaa",
panel_bg="#0f0f1a",
floating_bg="#1a1a2e",
sel_bg="#0f3460",
sel_fg="#ffffff",
input_bg="#0f1f35",
border="#2d3f6e",
btn_bg="#1e2d4a",
btn_hover="#2d3f6e",
btn_fg="#e0e0e0",
btn_primary="#00d4ff",
btn_primary_fg="#000000",
scroll_bg="#0f1f35",
scroll_thumb="#2d3f6e",
ok_fg="#00ff88",
warn_fg="#ffaa00",
err_fg="#ff4444",
t_keyword="#00d4ff",
t_string="#00ff88",
t_comment="#555577",
t_number="#ff8855",
t_func="#88aaff",
t_type="#ffdd44",
t_operator="#cc88ff",
t_decorator="#ff88cc",
)
api.register_theme(meu_tema)Esse diretório é criado automaticamente na inicialização do Codis (junto com plugins/, snippets/ etc.), mas não é escaneado nem carregado automaticamente nesta versão - não há nenhum loader de tema que leia arquivos .py soltos dessa pasta. O Método 1 acima (via plugin) é a única forma funcional e suportada de registrar temas customizados.
No Windows, o Codis aplica automaticamente:
-
SetProcessDpiAwareness(1)viactypes.windll.shcore tk scaling 1.5- Coloração da barra de título nativa (
DwmSetWindowAttribute) para combinar com o tema ativo (Windows 11)
Nenhuma configuração manual é necessária.
O tema kui é especial - ele é registrado dinamicamente ao ativar o K-UI. Não é um tema no sentido tradicional: a K-UI renderiza sua própria paleta de cores independente (_pal()), com void escuro (#020209 escuro / #0d0d2b claro), texto luminoso e efeitos visuais que ignoram propositalmente as cores do bg para criar a estética cósmica.
Ver K-UI para detalhes.
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