% Environnement de bureau
Spécification de l'Environnement de Bureau en Rust
Objectifs
- Développer un environnement de bureau performant et robuste en Rust.
- Prioriser la vitesse d'exécution, la robustesse et l'ergonomie.
- Permettre une interopérabilité avec toutes les bibliothèques graphiques existantes sous GNU/Linux.
- Assurer une gestion adaptative des tailles de fenêtres en fonction de la résolution du moniteur (similaire à macOS).
- Fonctionner principalement sous Wayland, avec une compatibilité optionnelle pour X11.
Architecture
1. Gestion de l'affichage
- Utilisation de Wayland via
smithay pour la composition.
- Support possible de X11 via
x11-rs ou xcb pour la compatibilité avec d'anciennes applications.
- Intégration avec wlroots pour une gestion avancée des sorties et entrées.
2. Interface Graphique et Rendu
- Moteurs graphiques supportés:
wgpu (Rust-native, performant, compatible Vulkan/OpenGL/Metal)
gtk-rs pour compatibilité GTK
qt-rs via cxx pour Qt
druid ou skia-rs pour un rendu custom
- Gestion du redimensionnement automatique des fenêtres:
- Récupération des informations de moniteur via
wl_output
- Ajustement dynamique des fenêtres en fonction du DPI et de la résolution
- Positionnement intelligent pour optimiser l'espace disponible
3. Gestionnaire de Fenêtres
- Basé sur smithay et inspiré des gestionnaires comme Mutter (Gnome) et Xfwm (XFCE).
- Prise en charge des animations fluides pour le redimensionnement.
- Compatibilité avec XWayland pour les applications non natives Wayland.
- Intégration d'un tiling dynamique optionnel.
4. Gestion des Entrées et Sessions
- Utilisation de libinput pour la gestion du clavier et de la souris.
- Gestion des sessions via elogind ou systemd-logind.
- Support des événements tactiles.
5. Composants Clés
- Explorateur de fichiers: intégration avec
gio ou rfd.
- Barre des tâches et menu d’applications inspirés de Rofi/KRunner.
- Gestion des notifications via D-Bus et Freedesktop.
- Panneau de configuration pour l’ergonomie et l’adaptabilité.
Optimisation et Interopérabilité
- Gestion efficace des threads via
tokio ou async-std.
- Communication entre composants via D-Bus (
zbus).
- Système de configuration modulaire avec fichiers TOML/YAML.
Contraintes Ergonomiques (À définir)