- Bibliothèque de composants UI permettant de créer des applications desktop cross-platform avec le framework GPUI basé sur Rust
- Propose plus de 60 composants UI au style natif, en combinant l’esthétique macOS et Windows avec la modernité de shadcn/ui
- Intègre de nombreuses fonctionnalités comme des tables virtualisées, un éditeur de code haute performance, le rendu Markdown/HTML et la visualisation de graphiques
- Conçu avec un fort accent sur l’extensibilité et la personnalisation, avec système de thèmes, multilingue (i18n) et layout docking
- Dans l’écosystème Rust, se distingue face à Iced, egui et Qt par un style d’UI moderne et de bonnes performances sur le traitement de grands volumes de données
Aperçu du projet
- gpui-component est un ensemble de composants UI desktop cross-platform écrit en Rust, reposant sur le moteur de rendu GPUI
- Licence Apache-2.0
Fonctionnalités principales
- Jeu de composants riche : plus de 60 éléments UI, avec boutons, listes, tableaux, graphiques, éditeur et bien d’autres
- Design à sensation native : une interface moderne inspirée des contrôles natifs de macOS et Windows, combinés au style shadcn/ui
- Simplicité d’usage : architecture de composants RenderOnce sans état, pour écrire un code simple et intuitif
- Système de thèmes et de couleurs : prise en charge de plusieurs thèmes et d’une configuration basée sur des variables via Theme et ThemeColor
- Layout flexible : avec le Dock layout, il est possible d’organiser les panneaux, de les redimensionner et de composer librement une interface en tuiles
- Rendu haute performance : les Virtualized Table/List permettent d’afficher de gros volumes de données de manière fluide
- Rendu de contenu : prise en charge native de Markdown et d’un HTML simple
- Fonctions de graphiques : visualisation de données avec des graphiques intégrés
- Éditeur de code : inclut un éditeur de code haute performance basé sur LSP prenant en charge jusqu’à 200�0 lignes
- Prend en charge les diagnostics, l’autocomplétion, le hover, etc.
- Coloration syntaxique : utilise Tree Sitter pour fournir la mise en évidence syntaxique dans l’éditeur comme dans le Markdown
Stack technique et statistiques
- Répartition des langages : Rust 98.2%, Tree-sitter Query 0.8%, HTML 0.2%, Shell 0.2%, Python 0.1%, C 0.1%
- Indicateurs du dépôt : 5.4k stars, 223 forks, plus de 45 contributeurs
- Dernière release : v0.3.1 (27 octobre 2025)
Ce qu’il faut en retenir
- gpui-component est considéré dans l’écosystème Rust comme un nouveau framework UI desktop associant UI/UX moderne et rendu haute performance
- Il corrige les limites des frameworks GUI Rust existants et propose des fonctionnalités adaptées à un usage concret, comme le traitement de grands volumes de données, la thématisation et l’intégration de Markdown
- C’est un projet remarqué comme candidat à une couche UI standardisée pour le développement d’applications cross-platform en Rust
1 commentaires
Commentaires Hacker News
Dans l’écosystème UI Rust, cela ressemble à la collection de composants la plus aboutie que j’aie vue jusqu’à présent
Il y a encore très peu de cas d’usage, mais la documentation s’améliore progressivement
Un autre exemple de maturité comparable serait fyrox-ui, mais il est très peu utilisé en dehors du moteur fyrox
L’UI Rust gagne en maturité, mais les frameworks populaires comme iced, egui, dioxus et slint semblent encore en retrait sur le plan de la finition des composants
Pour mise à jour, ce projet montre une avancée majeure dans l’écosystème UI Rust.
Vous pouvez lancer ici l’application de galerie de widgets qui permet de voir tous les composants — il suffit d’exécuter
cargo run --releaseMême l’exemple le plus simple a plus de 1000 dépendances. Il dépend de toolkits comme GTK, GDK et pango. Le fait de dépendre d’autres toolkits donne une impression un peu étrange
Il est amer de voir que tant de technologies fondamentales de l’open source sont créées par des entreprises de trading ou de crypto. Cela dit, le fait qu’elles apportent malgré tout quelque chose à la société reste positif
Je me demande si les toolkits UI dits « modernes » n’ont plus d’éditeur visuel d’interface
Qt permettait de construire une UI par simple glisser-déposer avec des outils comme QtCreator ou QtDesigner
Et certains éléments des tableaux comparatifs liés à Qt sont faux — par exemple la taille minimale du binaire ou l’explication de QSyntaxHighlighter
Malheureusement, c’est un framework. Il doit donc avoir sa propre boucle d’événements
L’intégration est difficile dans des environnements où une autre boucle existe déjà. À l’inverse, egui est simplement une bibliothèque appelée à chaque frame
Je me demande si l’accessibilité pour les lecteurs d’écran fonctionne correctement
Je me demande si « natif » veut simplement dire que ce n’est pas du web, ou si cela signifie aussi qu’il utilise les widgets natifs du système d’exploitation. Le monde Java a beaucoup souffert de cette distinction
Je me demande si ce framework a implémenté l’accessibilité (a11y). Les UI Rust sont souvent jolies, mais dès qu’il y a des exigences d’accessibilité, il faut tout réécrire
La fonctionnalité de listes et tableaux virtualisés est vraiment excellente. Beaucoup de frameworks UI obligeaient à l’implémenter soi-même, ce qui était pénible
Rust a beaucoup de toolkits GUI, mais manque de collections de composants réutilisables
Cette collection semble utile, mais elle ressemble surtout à la liste de composants de la plupart des frameworks web. Le seul élément vraiment spécifique au natif semble être la webview. Pour des choses comme une boîte de dialogue d’ouverture de fichier, il faut encore utiliser une bibliothèque externe comme rfd, ce qui casse la cohérence visuelle