environnement-de-bureau.md 2.5 KB

% 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)