# ✦ K-UI - K-UI (Holográfica/Cósmica) O **K-UI** (também chamado de K-UI) é uma engine de interface visual opcional que transforma o Codis em uma experiência cinematográfica com nebulosas, auroras, partículas quânticas e uma estética sci-fi imersiva, inspirada em Tron Legacy, Iron Man HUD e Cyberpunk 2077. --- ## Ativando o K-UI | Método | Ação | |---|---| | `Ctrl+Alt+N` | Ativa/desativa o K-UI | | Menu **Ferramentas → ✦ K-UI (toggle)** | Ativa/desativa | | Paleta de Comandos (`Ctrl+Shift+P`) → "K-UI" | Ativa | O estado é persistido em `config.json` (`kui_enabled: true/false`, padrão `false`). Ao reiniciar com `kui_enabled: true`, o K-UI reativa automaticamente após 300 ms. > **Nota:** K-UI e Vim Mode são mutuamente exclusivos. Ativar um desativa o outro. --- ## O que Muda com o K-UI Ativo ### Visual - **Fundo cósmico** - nebulosas e auroras renderizadas em thread separada via PIL, animadas continuamente - **Partículas quânticas** - flutuantes e reativas à velocidade de digitação - **Sistema solar de arquivos** - cada arquivo aberto recente orbita como planeta na tela de boas-vindas - **Buracos negros** - crescem com a quantidade de erros de lint, exercem gravidade sobre meteoros e estrelas - **Wormholes** - portais quânticos que teletransportam partículas entre dois pontos do espaço - **Cometas** - cauda de plasma longa cruzando a tela em intervalos - **Satélites** - objetos lentos atravessando o cosmos com painéis solares - **Nascimento estelar** - nebulosas protoestelares surgindo no cosmos - **Sash holográfico** - divisores do `PanedWindow` redesenhados com efeito de brilho ### Componentes Substituídos | Componente clássico | Componente K-UI | |---|---| | Tab Bar (Tkinter Label) | `KTabBar` holográfica com indicadores de atividade | | Top Bar (menu/toolbar) | `KTopBar` com glassmorphism | | Status Bar | `KStatusBar` com displays digitais | | Welcome Screen | `KWelcome` cósmica com sistema solar | --- ## Spotlight (Paleta de Comandos Holográfica) Com o K-UI ativo, `Ctrl+Space` abre o **Spotlight** - paleta de comandos redesenhada com: - Interface holográfica com glassmorphism - Busca fuzzy em tempo real em 100+ comandos - Ícones por categoria e animação de entrada/saída suave **Categorias disponíveis:** Arquivo · Editar · Executar/Formatar · Exibir/Temas · Navegação (linha, símbolo) · Painéis · Ferramentas · Modos especiais · LSP · Painéis flutuantes --- ## Painéis Flutuantes (Detach) No modo K-UI, qualquer aba do painel inferior pode ser "despluggada" para uma janela independente: 1. **Botão `⊞`** na barra de abas do painel inferior 2. **Menu de contexto** - clique direito em qualquer aba → "⊞ Despluggar 'nome'" 3. **Spotlight** - busque "Despluggar" + nome do painel Painéis que podem ser despluggados: `terminal` · `output` · `git` · `debug` · `regex` · `problems` Para devolver, clique direito na aba → "⊟ Reancoxar 'nome'". --- ## Perfis de Performance Ajustáveis via **Ferramentas → K-UI: Performance** ou Spotlight → "Perf": | Perfil | Efeitos | FPS | CPU | |---|---|---|---| | `quantum` (alias `ultra_plus`) | Tudo: física completa, subatômico, screensaver | 120 | Muito alto | | `ultra` | Alto: nebulosas + partículas + aurora | 60 | Alto | | `high` | Médio-alto: sem subatômico | 45 | Médio-alto | | `balanced` | Padrão: nebulosas + partículas básicas, anéis, scan | 30 | Médio | | `windows` (alias `power_saver`) | Reduzido: sem efeito de scan, otimizado para Windows | 30 | Médio-baixo | | `low` (alias `minimal`) | Econômico: ainda com partículas, meteoros e sistema solar, mas sem anéis/scan/buracos negros | 24 | Baixo | > Apesar do nome, `minimal` **não** remove todas as animações - é um alias exato de `low`, que ainda exibe partículas, meteoros e o sistema solar de arquivos, só com volume reduzido (30 estrelas, 12 partículas) e sem os efeitos mais pesados (anéis, scan, buracos negros, subatômico). Os perfis `quantum` e `ultra` exibem confirmação antes de ativar. O perfil é salvo em `config.json` (`kui_perf`) e pode ser alterado em tempo real. --- ## Easter Eggs O K-UI possui easter eggs ativados por sequências de teclado digitadas no terminal integrado (`/codis `): | Código | Efeito | |---|---| | `konami` | Explosão de partículas Konami | | `nova` | Supernova + chuva de meteoros | | `alien` | Naves alienígenas invadem o cosmos | | `nier` | Artefatos da humanidade flutuam no vazio | | `glitch` | Glitch cósmico máximo | | `freeze` | Congela a animação (modo debug) | | `reset` | Big Bang - reseta todo o cosmos | | `horror` | Visões subliminares cósmicas | | `space` | Nascimento estelar em massa | | `codis` | Efeito especial do Codis | --- ## KHoverTooltip - Painel de Aprendizado Cósmico Ao clicar em elementos da interface K-UI, um tooltip contextual (`KHoverTooltip`) exibe fatos de física quântica e cosmologia em 14 idiomas. Ativo no perfil `balanced` ou superior. Os fatos cobrem: emaranhamento quântico, singularidades, dilatação temporal, nebulosas, tunelamento, dualidade onda-partícula, Higgs, matéria escura, energia escura, evaporação de buracos negros, wormholes, estrelas de nêutrons, fundo cósmico de micro-ondas, multiverso, espaguetificação, relatividade e constante de Planck. --- ## Integração com Temas O K-UI usa sua própria paleta de cores (`_pal()`) que **ignora propositalmente** os atributos do tema ativo para garantir a estética cósmica: - `void = #020209` (dark) ou `#0d0d2b` (light) - `text_bg`, `text_fg`, `text_cur`, `text_sel` são cores otimizadas para legibilidade sobre o void Ao trocar o tema com o K-UI ativo, `apply_theme()` reconstrói a paleta e reaplicar os efeitos visuais automaticamente. --- ## Compatibilidade O K-UI é completamente **opcional e não-destrutivo**: desativá-lo restaura a interface clássica exatamente como estava, incluindo workspace e arquivos abertos. **Não compatível com:** - Vim Mode - ativar um desativa o outro automaticamente - Sistemas sem suporte a transparência nativa de janela **PIL/Pillow** é necessário para renderizar nebulosas em background. Sem ele, o K-UI usa um fundo de gradiente puro como fallback. --- ## Referências Técnicas | Arquivo | Responsabilidade | |---|---| | `src/ui/k_ui/_engine.py` | `KEngine` + `KWelcome` - motor principal de animação | | `src/ui/k_ui/_colors.py` | Paletas, interpolação de cor, utilitários de widget | | `src/ui/k_ui/_perf.py` | Definição dos 6 perfis de performance | | `src/ui/k_ui/_easter.py` | Detecção de sequências e disparo de easter eggs | | `src/ui/k_ui/_bgrenderer.py` | Renderização PIL de nebulosas/auroras em thread separada | | `src/ui/k_ui/_tooltip.py` | `KHoverTooltip` - painel de aprendizado contextual | | `src/ui/k_ui/_widgets.py` | `KGlassPane`, `KTopBar`, `KTabBar`, `KStatusBar`, `KPortal` | | `src/ui/k_ui/__init__.py` | `KUI` - controlador principal e re-exports | ## Barra lateral (K-UI Dock) No modo K-UI a barra lateral (Explorador, Busca, Git, etc.) é um painel **flutuante** sobre o conteúdo - a mesma sidebar do modo clássico, sem duplicação. | Ação | Como | |------|------| | Abrir/fechar | `Ctrl+E`, ícones da barra de atividades ou botão ▶/◀ | | Fechar | `✕`, clique fora do painel ou clicar de novo no ícone ativo | | Manter aberto | `◇` no cabeçalho (vira `◆`); o painel só fecha pelo `✕` | | Redimensionar | arraste a borda direita (240-520 px) | O painel permanece acima do editor, da tela inicial e do **modo cosmos**. Abrir um arquivo pelo Explorador em modo cosmos volta ao editor automaticamente. Ao desativar o K-UI a sidebar volta ao layout clássico mantendo o estado (aberta/fechada). ## Cosmos vivo (interações) Os fenômenos do cosmos não vivem mais isolados: uma camada de mundo (`_world.py`) roda antes de cada frame e faz com que eles se influenciem. | Causa | Efeito | |-------|--------| | Sol, buracos negros, binárias e pulsares | Gravidade: cometas ganham órbitas e estilingues; poeira cai nos buracos negros | | Cometa se aproxima do Sol | Cauda aponta para longe do Sol e cresce; perto demais, sublima e se desintegra | | Impacto no Sol ou num planeta (arquivo) | Faíscas, anel de choque, fragmentos; no Sol, uma erupção | | Buraco negro engole algo | Cresce, espirais de acreção; após vários, emite uma onda gravitacional | | Supernova | Onda de choque empurra poeira, detritos, cometas e nuvens; estrelas cintilam; aliens fogem | | Fim da supernova | Deixa um pulsar ou uma nebulosa; a nebulosa comprimida forma uma nova estrela | | Feixe de pulsar cruza um alvo | Ilumina planetas, cometas e satélites; aliens "recebem o sinal" | | Mouse | Arrastar leva a poeira; parado vira um poço (vagalumes); clique cria uma ondulação; aliens curiosos se aproximam se você está calmo | | Digitar | Vento solar: faíscas saem do Sol; ritmo alto aumenta erupções | | Avisos e erros do editor | Erupções mais frequentes e tempestades solares (ondas de choque) | | Salvar arquivo | Nova solar: onda suave que acalma o cosmos | | Abrir arquivo | Um cometa chega, mirando o Sol | O movimento é baseado em tempo (não em frames): a velocidade se mantém mesmo quando um frame atrasa. A camada se desliga sozinha, sem afetar a animação, se falhar repetidamente. ## Solução de problemas **A interface está lenta ou travada.** Rode com o diagnóstico de travamentos: ``` CODIS_STALL_TRACE=1 python run.py # Linux/macOS $env:CODIS_STALL_TRACE=1; python run.py # Windows (PowerShell) ``` Quando o laço principal fica parado por mais de 1,5 s (ajustável com `CODIS_STALL_MS`), o log `Codis.Stall` mostra a pilha do que estava bloqueando, e as fases de inicialização aparecem com seus tempos. Em telas muito grandes, o perfil `power_saver` ou `low` reduz ainda mais o custo do cosmos.