flowral.docs

Flowral Theme Engine — especificação

Implementação aprovada: Rust + Slint para flowral-themes; motor desacoplado e executável também em CLI. Sem serviço permanente obrigatório.

Domínio

ThemeFamily = Sakura | Daisy | Petunia. Appearance = Light | Dark. Seis combinações. AccentOverride opcional, WallpaperSelection, IconPack, UiFont, MonoFont, HighContrast, ReduceMotion.

# Exemplo declarativo, NÃO arquivo de implementação existente
schema_version = 1
family = "petunia"
appearance = "dark"
accent_override = "#C998BB"
wallpaper = "wallpapers/petunia-dark.jpg"
ui_font = "Noto Sans"
mono_font = "Iosevka"
reduce_motion = false

Palette source → semantic tokens → adapter-specific generated configs. Não misturar chaves de aplicativos com a paleta canônica.

Aplicadores

Destino Técnica Resultado mínimo
Swirl Config gerada (cores de foco/idle/bordas) + reload compatível feedback imediato sem reiniciar sessão
WezTerm Módulo Lua dedicado gerado/importado ANSI 16 + background/foreground/cursor/selection, live reload se suportado
Fish fish_color_*/tema declarado sintaxe, autosuggestion, seleção e prompt
Neovim tema Lua + highlight groups/Tree-sitter cores + Markdown legível
Mako arquivo/CLI conforme versão notificações coerentes
Fuzzel/swaybar config/estilo adaptado papel, seleção e tipografia
PCManFM GTK configuração de tema GTK/ícones aplicar o máximo permitido por GTK/CSD
Qt apps palette/settings Qt conforme integração sem prometer sobrepor estilos internos
Outros terminais/TUIs ANSI OSC/arquivos de tema quando suportado fallback para cores ANSI do terminal

Limite técnico: não há garantia universal de alterar decoração client-side (CSD) nem temas internos de terceiros. A página do app mostra suporte: nativo, adaptador, compatibilidade ou não suportado.

Operação de aplicar tema (transação)

  1. Carregar paleta declarativa e validar referências de assets/fontes.
  2. Mostrar preview e lista exata de aplicativos afetados.
  3. Salvar snapshot de arquivos sob controle do Flowral; detectar modificações manuais e conflitos.
  4. Gerar arquivos temporários para adapters instalados, validar sintaxe específica.
  5. Aplicar atomicamente; solicitar reload somente em componentes compatíveis.
  6. Conferir resultado; se falhar, reverter arquivos, preservar log redigido e avisar usuário.
  7. Persistir tema efetivo e emitir evento local (sem daemon dedicado).
  8. Em inicialização de aplicativo Flowral, carregar tema atual via flowral-theme library.

Armazenamento

  • Presets versionados em /usr/share/flowral/themes/ (somente leitura).
  • Preferências do usuário em $XDG_CONFIG_HOME/flowral/theme.toml.
  • Estado de transação/backup em $XDG_STATE_HOME/flowral/themes/.
  • Cache de wallpapers processados em $XDG_CACHE_HOME/flowral/.
  • Nunca instalar assets privados sem verificar direitos.

UI do gerenciador

Grade 3 famílias × 2 modos, preview papel/borda/texto/terminal, opções wallpaper/ícones/fontes, salvar/aplicar/desfazer, indicador por adapter, reset seletivo, import/export de tema sem credenciais.

Testes/aceitação

  • Seis variantes aplicáveis sem crash; rollback após falha simulada.
  • Contraste e legibilidade das seis, inclusive terminal e seleção.
  • Idempotência (aplicar duas vezes gera mesmos arquivos).
  • WezTerm, Fish e Neovim recebem tokens reais; nada depende de servidor web.
  • Tema permanece após reinício; não altera arquivos do usuário sem snapshot/confirmação.
  • Não aumenta consumo de repouso com processo residente.