gui-component : des composants UI pour créer des apps Rust

Par:
francoistonic

mer, 04/02/2026 - 14:23

Tu veux construire une app desktop avec une interface graphique de qualité ? Connais-tu GPUI Component ? Il s'agit d'une suite de composants graphiques pour Rust. Les specs sont alléchantes :

+ 60 composants multiplateforme

Natif et largement inspiré de macOS et Windows

Implémentation simple

Personnalisation

Flexibilité des layouts

Le contenu peut être rendu en markdown ou html

Exemple :

use gpui::*;
use gpui_component::{button::*, *};
pub struct HelloWorld;
impl Render for HelloWorld {
    fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
        div()
            .v_flex()
            .gap_2()
            .size_full()
            .items_center()
            .justify_center()
            .child("Hello, World!")
            .child(
                Button::new("ok")
                    .primary()
                    .label("Let's Go!")
                    .on_click(|_, _, _| println!("Clicked!")),
            )
    }
}
fn main() {
    let app = Application::new();
    app.run(move |cx| {
        // This must be called before using any GPUI Component features.
        gpui_component::init(cx);
        cx.spawn(async move |cx| {
            cx.open_window(WindowOptions::default(), |window, cx| {
                let view = cx.new(|_| HelloWorld);
                // This first level on the window, should be a Root.
                cx.new(|cx| Root::new(view, window, cx))
            })?;
            Ok::<_, anyhow::Error>(())
        })
        .detach();
    });
}
GPUI n'est pas l'unique solution UI pour Rust, il existe Iced ou encore egui. L'un des manques de GPUI est l'absence du support web, un rendu HTML encore rudimentique. Le projet est très jeune.