Přejít k navigační liště

Zdroják » Různé » GPUI Component: moderní Rust GUI komponenty pro cross-platform desktop aplikace

GPUI Component: moderní Rust GUI komponenty pro cross-platform desktop aplikace

Články Různé

GPUI Component je open-source Rust knihovna rozšiřující framework GPUI o více než 60 moderních, nativních a multiplatformních UI komponent. Staví na deklarativním přístupu, stateless renderování a jednoduchém API inspirovaném Reactem či Yew. Díky optimalizovanému výkonu, podpoře témat a flexibilním layoutům umožňuje rychlý vývoj desktopových aplikací, jako je například trading nástroj Longbridge Pro. Knihovna je licencována pod Apache 2.0 a dostupná na GitHubu.

GPUI Component je open-source knihovna napsaná v jazyce Rust, která rozšiřuje framework GPUI o sadu více než 60 moderních UI komponent. Vznikla v rámci projektu Longbridge, který ji využívá pro vlastní aplikaci Longbridge Pro. Je licencována pod Apache 2.0 a dostupná na GitHubu.

Knihovna staví na deklarativním přístupu – komponenty jsou stateless a implementují rozhraní RenderOnce. UI se popisuje podobně jako v Reactu nebo v Yew (pro web). Vše je optimalizováno pro výkon a jednoduchost integrace s GPUI jádrem.

Základní návrhové principy:

  • Stateless renderování: komponenty implementují RenderOnce, čímž se eliminuje potřeba spravovat vnitřní stav.
  • Konzistence a jednoduchost: API se snaží zůstat jednoduché, srozumitelné a snadno rozšiřitelné.
  • Cross-platform: všechny komponenty fungují na Windows, macOS i Linuxu.

Hlavní klíčové funkce

  • Bohatost: Více než 60 cross-platform desktopových UI komponent.
  • Nativní: Inspirováno ovládacími prvky macOS a Windows, kombinováno s designem shadcn/ui pro moderní vzhled.
  • Snadné použití: Stateless komponenty RenderOnce, jednoduché a uživatelsky přívětivé.
  • Přizpůsobitelné: Vestavěný systém Theme a ThemeColor, podpora více motivů a konfigurací založených na proměnných.
  • Všestranné: Podpora velikostí xs, sm, md a lg.
  • Flexibilní layout: Dock layout pro uspořádání panelů, změnu velikosti a volné (Tiles) layouty.
  • Vysoký výkon: Virtualizované komponenty Table a List pro plynulé vykreslování velkých datasetů.
  • Rendering obsahu: Nativní podpora Markdownu a jednoduchého HTML.
  • Grafy: Vestavěné grafy pro vizualizaci dat.
  • Editor: Vysoce výkonný kódový editor (podpora až 200 000 řádků) s LSP (diagnostika, doplňování, hover atd.).
  • Zvýraznění syntaxe: Zvýraznění syntaxe pro editor a Markdown komponenty pomocí Tree-Sitter.

Ukázka použití

Základní aplikace s tlačítkem:

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.into(), window, cx))
            })?;

            Ok::<_, anyhow::Error>(())
        })
        .detach();
    });
}Code language: Rust (rust)

Integrace

Projekt je stále ve vývoji, takže se zatím přidává přímo z GitHubu.

gpui = "0.2.2"
gpui-component = "0.3.1"Code language: Rust (rust)

Pro build vyžaduje Rust 1.77+ a závisí na jádru GPUI. Podporuje integraci se souborem flake.nix pro jednotné prostředí a reprodukovatelné buildy.

Ukázková aplikace

První reálná aplikace postavená na gpui-component je Longbridge Pro – desktopový trading nástroj. Využívá multi-theme systém, panely a virtualizované tabulky.

Výhody

  • Silný výkon díky Rustu a nativnímu renderingu.
  • Konzistentní, moderní design bez potřeby webového enginu (bez Electronu).
  • Dobře navržené API a srozumitelný systém témat.
  • Vhodné pro aplikace typu IDE, analytické dashboardy nebo editory.

Nevýhody

  • Projekt je stále aktivně vyvíjen, API se může měnit.
  • Menší komunita než u zavedených GUI frameworků (např. egui, iced).
  • Dokumentace je zatím stručná, většina příkladů v repozitáři.

Shrnutí

GPUI Component je ambiciózní knihovna, která ukazuje, že Rust GUI může být moderní, rychlé a vizuálně atraktivní. Pro vývojáře, kteří chtějí tvořit nativní multiplatformní desktopové aplikace bez Electronu, představuje jednu z nejkomplexnějších sad komponent v Rust ekosystému.

Pro více informací: github.com/longbridge/gpui-component

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Most Voted
Dev

… reposted this!

Umělá inteligence a KYC

AI
Komentáře: 1
Založit účet u banky bez občanského průkazu už dnes prakticky nejde. Když ale stejný doklad začne vyžadovat chatbot, je to signál, že se něco mění. Ověřování identity (KYC), které bylo donedávna doménou finančního sektoru, proniká do světa umělé inteligence. Co za tím stojí, jaké jsou regulatorní důvody a proč bychom měli přemýšlet o tom, kolik osobních údajů jsme ochotni za používání AI služeb obětovat?