À propos du projet
Freya est une bibliothèque GUI native, multiplateforme et déclarative pour Rust. Elle cible les développeurs créant des applications de bureau en Rust qui souhaitent un modèle d'interface basé sur des composants sans dépendre des technologies web.
Modèle de base : les composants sont des éléments d'interface réutilisables qui se re-rendent lorsque l'état dont ils dépendent change. Les composants peuvent contenir un état interne ou s'abonner à un état partagé, et tout type implémentant le trait Component peut agir comme un composant ; le composant racine de l'application peut être une simple fonction. Les exemples intégrés incluent Button et Switch.
Les composants prêts à l'emploi vont de contrôles simples comme Button, Switch et Slider à des composants plus complexes comme VirtualScrollView, Calendar et ColorPicker. Les fichiers d'exemple préfixés par component_ dans le dossier examples les illustrent.
Domaines fonctionnels décrits dans le README :
- Animations : transitions pour les couleurs, tailles et positions, avec contrôle du timing, de l'easing et des séquences.
- Édition de texte enrichi : gestion du curseur, sélection, raccourcis clavier, formatage personnalisé et virtualisation.
- Éditeur de code : éditeur agnostique à l'état utilisant Rope pour le texte et tree-sitter pour la coloration syntaxique ; vous fournissez la grammaire et la requête de surlignage. Activé via la fonctionnalité code-editor.
- Rendu Markdown via le composant MarkdownViewer (fonctionnalité markdown).
- Routage et navigation avec un derive Routable, des layouts, des liens et un contexte de routeur (fonctionnalité router).
- Gestion d'état global via freya-radio, un système basé sur des canaux où les composants s'abonnent à des canaux et ne reçoivent des mises à jour que lorsque les données pertinentes changent (fonctionnalité radio).
- Intégration de bibliothèques d'icônes, prenant actuellement en charge Lucide.
- Tests headless avec freya-testing, qui peut simuler des interactions et rendre l'état de l'interface dans des fichiers ; utilisé par Freya lui-même pour tester les composants intégrés.
- Graphiques et tracés via la bibliothèque Plotters (fonctionnalité ploters).
- Internationalisation utilisant le système de localisation Fluent, avec traductions, pluralisation et changement de locale (fonctionnalité i18n).
- Modificateurs de style inspirés du Material Design tels que les effets ripple (fonctionnalité material-design).
- Intégration WebView pour intégrer du contenu web aux côtés de l'interface native (fonctionnalité webview).
- Émulation de terminal avec prise en charge PTY pour des terminaux intégrés ou des clients SSH (fonctionnalité terminal-pty).
- Outils de développement pour inspecter l'arbre des composants en temps réel (fonctionnalité devtools).
Utilisation : la dernière version stable est spécifiée comme freya = "0.4", avec une pré-version 0.5.0-rc.7 et une option de branche main. Le dépôt utilise des sous-modules git, donc le clonage nécessite --recurse-submodules ou ultérieurement git submodule update --init --recursive. Les exemples peuvent être exécutés avec cargo run --example counter. Un guide de configuration de développement est lié depuis la documentation. Le README signale un possible problème de compilation sous Windows avec windows-gnu.
Le projet renvoie vers un site web, la documentation docs.rs, un serveur Discord, des directives de contribution et une page de sponsoring, et crédite Dioxus, rust-skia et d'autres contributeurs.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.