//! # pagan-toolkit //! //! Własna, minimalna biblioteka UI dla Waylanda. **Bez** Qt, GTK, SCTK ani iced — //! tylko `wayland-client`, `wayland-protocols`, `cairo-rs`, `memmap2` i `tempfile`. //! //! Celem jest pokazanie, jak od zera zbudować okno xdg-shell z dekoracjami //! rysowanymi po stronie klienta (CSD): //! //! 1. łączymy się z kompozytorem Wayland (`connection`), //! 2. alokujemy bufor pamięci współdzielonej i wystawiamy go jako `wl_shm` (`shm`), //! 3. renderujemy okno do tego bufora biblioteką Cairo (`window`, `draw`), //! 4. obsługujemy mysz: hover, przeciąganie za pasek tytułu, resize za krawędzie (`input`). //! //! Do lokalizacji napisów służy lekki moduł `i18n` (PL/EN) bez ciężkich zależności. //! //! ## Szybki start //! //! ```no_run //! use pagan_toolkit::i18n::{tr, Locale, MsgKey}; //! //! let locale = Locale::from_env(); //! let title = tr(locale, MsgKey::WindowTitle); //! // let (queue, state) = pagan_toolkit::create_window(800, 500, title, locale)?; //! # Ok::<(), Box>(()) //! ``` pub mod app_menu; pub mod connection; pub mod draw; pub mod i18n; pub mod input; pub mod shm; pub mod window; // Re-exporty publicznego API — dzięki nim użytkownik nie musi znać rozkładu modułów. pub use app_menu::AppMenu; pub use connection::{ create_window, publish_app_menu, render_and_commit, CompositorState, ToolkitError, }; pub use i18n::{tr, Locale, MsgKey}; pub use shm::{ShmBuffer, ShmError}; pub use window::{Edges, MyToolkitWindow, OpenMenu, WindowAction};