Sobre o projeto
Freya é uma biblioteca GUI nativa, multiplataforma e declarativa para Rust. Ela é voltada para desenvolvedores que criam aplicações desktop em Rust e desejam um modelo de UI baseado em componentes sem depender de tecnologias web.
Modelo central: componentes são elementos de UI reutilizáveis que são renderizados novamente quando o estado do qual dependem muda. Componentes podem manter estado interno ou assinar estado compartilhado, e qualquer tipo que implemente a trait Component pode atuar como um componente; o componente raiz do app pode ser uma função simples. Exemplos integrados incluem Button e Switch.
Os componentes prontos para uso vão de controles simples como Button, Switch e Slider até outros mais complexos como VirtualScrollView, Calendar e ColorPicker. Arquivos de exemplo com o prefixo component_ na pasta examples os demonstram.
Áreas de recursos descritas no README:
- Animações: transições para cores, tamanhos e posições, com controle sobre timing, easing e sequências.
- Edição de texto rico: gerenciamento de cursor, seleção, atalhos de teclado, formatação personalizada e virtualização.
- Editor de código: editor agnóstico de estado usando Rope para texto e tree-sitter para realce de sintaxe; você fornece a gramática e a consulta de realces. Habilitado via o recurso code-editor.
- Renderização de Markdown via o componente MarkdownViewer (recurso markdown).
- Roteamento e navegação com uma derive Routable, layouts, links e contexto de roteador (recurso router).
- Gerenciamento de estado global por meio do freya-radio, um sistema baseado em canais no qual componentes assinam canais e recebem atualizações apenas quando dados relevantes mudam (recurso radio).
- Integração com biblioteca de ícones, atualmente com suporte a Lucide.
- Testes headless com freya-testing, que pode simular interações e renderizar o estado da UI em arquivos; usado pelo próprio Freya para testar componentes integrados.
- Gráficos e plotagem via a biblioteca Plotters (recurso ploters).
- Internacionalização usando o sistema de localização Fluent, com traduções, pluralização e troca de locale (recurso i18n).
- Modificadores de estilo inspirados no Material Design, como efeitos ripple (recurso material-design).
- Integração com WebView para incorporar conteúdo web ao lado da UI nativa (recurso webview).
- Emulação de terminal com suporte a PTY para terminais integrados ou clientes SSH (recurso terminal-pty).
- Ferramentas de desenvolvedor para inspecionar a árvore de componentes em tempo real (recurso devtools).
Uso: a versão estável mais recente é especificada como freya = "0.4", com uma pré-versão 0.5.0-rc.7 e uma opção de branch main. O repositório usa submódulos git, então o clone exige --recurse-submodules ou um git submodule update --init --recursive posterior. Exemplos podem ser executados com cargo run --example counter. Um guia de configuração de desenvolvimento é vinculado na documentação. O README observa um possível problema de compilação no Windows com windows-gnu.
O projeto vincula um site, documentação em docs.rs, um servidor no Discord, diretrizes de contribuição e uma página de patrocínio, e dá créditos a Dioxus, rust-skia e outros contribuidores.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.