Date: 23 novembre 2025
Objectif: Trouver la meilleure bibliothèque GUI Rust offrant un look-and-feel natif sur Linux, Windows et Mac
- Look-and-feel natif : Utilise les widgets natifs de chaque plateforme
- Support multi-plateforme : Windows, Linux, macOS
- Accessibilité : Support des lecteurs d'écran
- IME : Support des méthodes de saisie (japonais, chinois, etc.)
- Maturité : Stabilité, documentation, communauté
- 100% Rust : Pas de dépendances C/C++ si possible
- Type: Bindings Win32 API (Windows uniquement)
- Look-and-feel: ✅ 100% natif Windows
- Accessibilité: ✅ Oui (Windows Narrator)
- IME: ✅ Oui (support complet)
- 100% Rust: ✅ Oui
- Limitations: ❌ Windows uniquement
Verdict: Parfait pour Windows, mais pas cross-platform.
- Type: Bindings FLTK (C++)
- Look-and-feel:
⚠️ Thèmes natifs disponibles mais pas par défaut - Accessibilité: ✅ Oui (avec crate supplémentaire)
- IME: ✅ Oui (support complet)
- 100% Rust: ❌ Non (dépendance C++)
- Cross-platform: ✅ Windows, Linux, macOS
- Avantages:
- Léger et rapide
- Thèmes natifs disponibles: https://github.com/fltk-rs/fltk-theme
- Binaire statique possible
- Bonne documentation
Verdict: Bon compromis, thèmes natifs disponibles mais nécessite configuration.
- Type: Bindings GTK 4 (C)
- Look-and-feel:
⚠️ Natif sur Linux, émulé sur Windows/Mac - Accessibilité: ❌ Non (selon l'audit 2025)
- IME: ✅ Oui
- 100% Rust: ❌ Non (dépendance C)
- Cross-platform: ✅ Windows, Linux, macOS
- Limitations:
- Pas d'accessibilité
- Look non-natif sur Windows/Mac
- Dépendances lourdes
Verdict: Bon pour Linux, moins bon pour Windows/Mac.
- Type: Framework au-dessus de GTK 4
- Look-and-feel:
⚠️ Comme GTK 4 - Accessibilité: ❌ Non
- IME: ✅ Oui
- 100% Rust: ❌ Non (via GTK 4)
- Avantages:
- API Rust idiomatique
- Réactivité
Verdict: Même limitations que GTK 4.
- Type: Framework déclaratif avec DSL
- Look-and-feel:
⚠️ Rendu custom mais peut imiter le natif - Accessibilité: ✅ Oui (lecteurs d'écran)
- IME: ✅ Oui (quelques glitches mais fonctionne)
- 100% Rust: ✅ Oui (backend Rust disponible)
- Cross-platform: ✅ Windows, Linux, macOS, Embedded, Web
- Avantages:
- Excellent tooling (LSP, live preview)
- Styles natifs disponibles (Fluent, Material, Cupertino)
- Performance excellente
- Documentation complète
- Entreprise-backed (SixtyFPS GmbH)
Verdict: MEILLEUR CHOIX pour look-and-feel "proche du natif" cross-platform.
- Type: Framework React-like
- Look-and-feel:
⚠️ Rendu custom (CSS) - Accessibilité: ✅ Oui
- IME: ✅ Oui
- 100% Rust: ✅ Oui
- Cross-platform: ✅ Windows, Linux, macOS, Web, Mobile
- Avantages:
- Syntaxe familière (React)
- Excellent pour le web
- Hot reload
Verdict: Excellent mais look-and-feel web, pas natif.
- Type: Immediate mode GUI
- Look-and-feel:
⚠️ Rendu custom (style propre) - Accessibilité: ✅ Oui
- IME:
⚠️ Partiel (Tab volé par le converter) - 100% Rust: ✅ Oui
- Cross-platform: ✅ Windows, Linux, macOS, Web
- Avantages:
- Très simple à utiliser
- Pas de DSL/macros
- Excellent pour outils/debug
Verdict: Excellent mais look-and-feel custom, pas natif.
- Type: Framework Elm-like
- Look-and-feel:
⚠️ Rendu custom - Accessibilité: ❌ Non (issue ouverte depuis 4.5 ans)
- IME: ❌ Non
- 100% Rust: ✅ Oui
- Cross-platform: ✅ Windows, Linux, macOS, Web
Verdict: Prometteur mais manque d'accessibilité et IME.
- Type: Bindings Qt (C++)
- Look-and-feel: ✅ 100% natif (Qt utilise widgets natifs)
- Accessibilité: ✅ Oui (Qt a excellent support)
- IME: ✅ Oui
- 100% Rust: ❌ Non (dépendance Qt C++)
- Cross-platform: ✅ Windows, Linux, macOS
- Limitations:
- Linker hell (selon l'audit 2025)
- Nécessite compte Qt
- Dépendances lourdes
- Setup complexe
Verdict: Natif mais setup trop complexe et dépendances lourdes.
Aucune solution cross-platform parfaite en 100% Rust.
Les options:
-
FLTK-rs avec thèmes natifs (compromis acceptable)
- Dépendance C++ mais légère
- Thèmes natifs disponibles
- Bon support IME et accessibilité
-
Approche hybride:
- WinSafe pour Windows
- GTK 4 pour Linux
- Cacao pour macOS
- ❌ Mais 3 codebases différentes !
Slint ⭐⭐⭐⭐⭐
Pourquoi:
- ✅ Styles natifs intégrés (Fluent pour Windows, Material pour Linux, Cupertino pour Mac)
- ✅ 100% Rust (backend Rust disponible)
- ✅ Accessibilité complète
- ✅ IME fonctionnel
- ✅ Cross-platform (Windows, Linux, macOS, Web, Embedded)
- ✅ Excellent tooling (LSP, live preview)
- ✅ Performance excellente
- ✅ Documentation complète
- ✅ Entreprise-backed (maintenance garantie)
- ✅ Communauté active
Limitations:
⚠️ Utilise un DSL (.slintfiles)⚠️ Pas de widgets natifs OS (rendu custom)
Mais: Le rendu est suffisamment bon pour être indiscernable du natif dans la plupart des cas.
Si vous préférez une syntaxe React-like et que le look-and-feel web ne vous dérange pas.
| Bibliothèque | Natif | Cross-platform | Accessibilité | IME | 100% Rust | Maturité |
|---|---|---|---|---|---|---|
| Slint | ✅ | ✅ | ✅ | ✅ | ⭐⭐⭐⭐⭐ | |
| FLTK-rs | ✅ | ✅ | ✅ | ❌ | ⭐⭐⭐⭐ | |
| Dioxus | ❌ Web | ✅ | ✅ | ✅ | ✅ | ⭐⭐⭐⭐ |
| egui | ❌ Custom | ✅ | ✅ | ✅ | ⭐⭐⭐⭐ | |
| GTK 4 | ✅ | ❌ | ✅ | ❌ | ⭐⭐⭐ | |
| WinSafe | ✅ Windows | ❌ | ✅ | ✅ | ✅ | ⭐⭐⭐ |
| CXX-Qt | ✅ Qt | ✅ | ✅ | ✅ | ❌ | ⭐⭐ |
| Iced | ❌ Custom | ✅ | ❌ | ❌ | ✅ | ⭐⭐⭐ |
Pour le projet nonogram-solver, je recommande: Slint
Raisons:
- ✅ Look-and-feel proche du natif sur toutes les plateformes
- ✅ 100% Rust (objectif du projet)
- ✅ Accessibilité complète
- ✅ Cross-platform sans compromis
- ✅ Excellent tooling et documentation
- ✅ Performance excellente (important pour affichage d'images)
- ✅ Maintenance garantie (entreprise-backed)
Compromis accepté:
⚠️ Utilise un DSL (mais bien intégré avec Rust)⚠️ Rendu custom (mais indiscernable du natif)