libLuna Dokumentacja
PL EN
GitHub

Dla deweloperów

Zbuduj coś na libLunie.

Jedna zależność, jedno okno, graf sceny i zestaw 77 widgetów w modelu immediate. Ta dokumentacja prowadzi od pierwszego run(...) do własnego motywu i własnego komponentu — bez GTK, Qt i GObject.

v0.0.4 Rust 1.80+ Wayland MPL-2.0

Cztery ścieżki

Nie musisz czytać wszystkiego po kolei. Wybierz to, czego potrzebujesz teraz — każda strona kończy się linkiem do następnego kroku.

Najkrótszy działający program

Tyle wystarczy, żeby otworzyć okno, narysować tło i napis. Reszta to rozwinięcie tego samego kontraktu.

rust · main.rs
use libluna::prelude::*;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = AppConfig::new("Moja apka").initial_size(800, 600);

    run(config, |frame: &mut Frame| {
        let theme = frame.theme;
        let (w, h) = (frame.size.width, frame.size.height);

        frame.scene.fill_rect(
            Rect::from_xywh(0.0, 0.0, w, h),
            theme.colors.window_bg,
        );
        frame.scene.text(
            TextRun::new(Point::new(24.0, 64.0), "Hello, Luna", 24.0)
                .with_color(theme.colors.text)
                .with_weight(700),
        );
    })
}

Pełny przykład z obsługą zdarzeń: Szybki start → pierwsze zdarzenie.

Co jest czym

Fasada libluna zbiera sześć crate'ów w jedno wejście. Aplikacja prawie zawsze używa tylko fasady i prelude.

libluna fasada

Re-eksportuje warstwy i prelude. To jedyna zależność, jakiej potrzebuje typowa aplikacja.

libluna-core fundament

Point, Rect, Color, zdarzenia, motyw, tokeny i ustawienia wyglądu.

libluna-render rysowanie

Graf sceny, tekst, ikony SVG i backend CPU (tiny-skia + fontdue).

libluna-platform okna

Okna xdg-shell, panele wlr-layer-shell, wejście, schowek i pętla zdarzeń.

libluna-widgets komponenty

77 widgetów w modelu immediate: paint + *_at, a nad nimi retencyjny layout.

libluna-i18n języki

Pliki .lang, wykrywanie locale, tr(...) i makro t!.

Warstwy zależą tylko w dół: widgety nie wiedzą, jak działa DRM, a platforma nie wie, jak rysowany jest przycisk. Szczegóły: Architektura.

Stan na dziś

Działa: render CPU, okna Wayland, wejście, motywy jasny/ciemny/auto, 9 akcentów, i18n, layout measure/allocate, 77 widgetów i pełna powłoka Luna.

Jeszcze nie: backend GPU/dmabuf, IME, pełne HiDPI, dostępność AT-SPI. API może się zmieniać przed 0.1 — dlatego wersjonujemy każdy crate osobno.