[package] name = "pagan-compositor" version = "0.1.0" edition = "2021" license = "MIT" description = "PaganDE: kompozytor Wayland (floating, hybrydowe CSD) zbudowany na Smithay 0.7" publish = false # Uwaga: korzystamy z VENDORED Smithay 0.7.0, żeby build działał offline i był # powtarzalny (zgodnie z podejściem "trzymamy się pakietów obecnych w PaganDE"). # Gdy chcesz wziąć Smithay z crates.io, podmień na: # smithay = { version = "0.7", default-features = false, features = [...] } # # Włączamy możliwie wąski zestaw feature'ów, żeby ograniczyć czas budowania # i liczbę zależności systemowych: # - backend_winit : backend okienkowy (X11/Wayland) do developmentu # - desktop : Space / Window (floating window manager) # - renderer_gl : GlesRenderer (EGL/OpenGL) # - renderer_glow : eksponuje crate `glow` (m.in. do własnych shaderów) # - wayland_frontend : protokoły Waylanda po stronie serwera (xdg-shell, decoration, shm) [dependencies] smithay = { path = "../smithay-0.7.0", default-features = false, features = [ "backend_winit", "desktop", "renderer_gl", "renderer_glow", "wayland_frontend", # XWayland: uruchamianie aplikacji X11 (wymaga binarki `Xwayland` w PATH). "xwayland", ] } anyhow = "1" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } # Ładowanie kursora z motywu XCursor (System: libXcursor). xcursor = "0.3" # Definicje protokołu wlr-screencopy (serwer) — implementujemy jego logikę sami. wayland-protocols-wlr = { version = "0.3", features = ["server"] } # Wymagane tylko przez backend tty-udev (feature `udev`): rustix = { version = "1.0", optional = true, features = ["fs"] } # `smithay-drm-extras` daje `DrmScanner` (skanowanie konektorów/CRTC) — Smithay 0.7 # przeniósł to do osobnego crate'a. `default-features = false`, bo nie używamy # `display-info` (a to pociągnęłoby zależność od libdisplay-info). smithay-drm-extras = { path = "../smithay-0.7.0/smithay-drm-extras", default-features = false, optional = true } inotify = { version = "0.11.5", default-features = false } # Rasteryzacja tekstu w kompozytorze (tytuł, etykiety menu aplikacji). # Cairo jest już pakietem w PaganOS (używa go też toolkit), więc nie dokładamy # nowej zależności systemowej — tylko tę samą, sprawdzoną bibliotekę. cairo-rs = "0.22" # Własny protokół menu aplikacji (pagan-app-menu-v1): generowanie kodu serwera # z XML-owego opisu. `wayland-server` jest potrzebny, bo wygenerowany kod # odwołuje się do niego bezpośrednio po nazwie crate'a. wayland-server = "0.31" wayland-backend = "0.3" wayland-scanner = "0.31" [features] default = [] # Produkcyjny backend: DRM/KMS + EGL/GBM + libinput + libseat. # Wymaga bibliotek systemowych: libdrm, libgbm, libinput, libudev, libseat. udev = [ "dep:rustix", "dep:smithay-drm-extras", "smithay/backend_drm", "smithay/backend_gbm", "smithay/backend_egl", "smithay/backend_udev", "smithay/backend_libinput", "smithay/backend_session_libseat", "smithay/renderer_multi", ] [profile.release] debug = true # Backend tty-udev (produkcja) jest dostępny przez feature `udev`: # cargo build --features udev && ./target/debug/pagan-compositor --tty-udev # Zobacz README.md, sekcja "Backend tty-udev (produkcja)".