🔒 Repository is read-only – file editing is disabled.
123456789101112131415161718192021222324252627282930313233343536373839404142
//! # 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<dyn std::error::Error>>(())
//! ```
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};