Sobre el proyecto
Freya es una biblioteca GUI nativa, multiplataforma y declarativa para Rust. Está dirigida a desarrolladores que crean aplicaciones de escritorio en Rust y desean un modelo de UI basado en componentes sin depender de tecnologías web.
Modelo central: los componentes son elementos de UI reutilizables que se vuelven a renderizar cuando cambia el estado del que dependen. Los componentes pueden mantener estado interno o suscribirse a estado compartido, y cualquier tipo que implemente el trait Component puede actuar como componente; el componente raíz de la aplicación puede ser una función simple. Los ejemplos integrados incluyen Button y Switch.
Los componentes listos para usar abarcan desde controles simples como Button, Switch y Slider hasta otros más complejos como VirtualScrollView, Calendar y ColorPicker. Los archivos de ejemplo con el prefijo component_ en la carpeta examples los demuestran.
Áreas de funcionalidad descritas en el README:
- Animaciones: transiciones para colores, tamaños y posiciones, con control sobre tiempos, easing y secuencias.
- Edición de texto enriquecido: gestión del cursor, selección, atajos de teclado, formato personalizado y virtualización.
- Editor de código: editor agnóstico del estado que usa Rope para el texto y tree-sitter para el resaltado de sintaxis; tú proporcionas la gramática y la consulta de resaltados. Se habilita mediante la feature code-editor.
- Renderizado de Markdown mediante el componente MarkdownViewer (feature markdown).
- Enrutamiento y navegación con una derive Routable, layouts, enlaces y contexto de router (feature router).
- Gestión de estado global mediante freya-radio, un sistema basado en canales donde los componentes se suscriben a canales y reciben actualizaciones solo cuando cambian los datos relevantes (feature radio).
- Integración con bibliotecas de iconos, actualmente compatible con Lucide.
- Pruebas headless con freya-testing, que puede simular interacciones y renderizar el estado de la UI a archivos; Freya mismo lo usa para probar componentes integrados.
- Gráficos y trazado mediante la biblioteca Plotters (feature ploters).
- Internacionalización mediante el sistema de localización Fluent, con traducciones, pluralización y cambio de idioma (feature i18n).
- Modificadores de estilo inspirados en Material Design, como efectos ripple (feature material-design).
- Integración de WebView para incrustar contenido web junto a la UI nativa (feature webview).
- Emulación de terminal con soporte de PTY para terminales integradas o clientes SSH (feature terminal-pty).
- Herramientas de desarrollo para inspeccionar el árbol de componentes en tiempo real (feature devtools).
Uso: la última versión estable se especifica como freya = "0.4", con una versión preliminar 0.5.0-rc.7 y una opción de rama main. El repositorio usa submódulos de git, por lo que clonarlo requiere --recurse-submodules o ejecutar después git submodule update --init --recursive. Los ejemplos se pueden ejecutar con cargo run --example counter. Hay una guía de configuración para desarrollo enlazada desde la documentación. El README señala un posible problema de compilación en Windows con windows-gnu.
El proyecto enlaza un sitio web, documentación en docs.rs, un servidor de Discord, guías de contribución y una página de patrocinio, y da crédito a Dioxus, rust-skia y otros colaboradores.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.