[package] name = "srdwm-wayland" version.workspace = true edition.workspace = true license.workspace = true description = "Wayland backend for srdwm: a smithay-based compositor" [dependencies] srdwm-core.workspace = true srdwm-platform.workspace = true log.workspace = true thiserror.workspace = true fontdue = "0.9" # `udev/capture.rs`: builds a `pixman::Image` off-screen render target # directly (`PixmanRenderer::create_buffer`/`Offscreen` hand one back, but # nothing constructs one standalone). Pinned to the same version smithay # itself depends on (see Cargo.lock), so both see one set of types. pixman = "0.2.1" # smithay 0.7 ships no wlr-screencopy helper, so `src/screencopy.rs` # implements that protocol directly against these server bindings. Pinned to # the same version smithay itself depends on, so both see one set of types. wayland-protocols-wlr = { version = "0.3.12", features = ["server"] } # `appmenu.rs`: `org_kde_kwin_appmenu` (global menu for Wayland-native # clients - the equivalent of `xwayland.rs`'s X11-property reading, for # windows that never go through XWayland at all). Same sibling-crate/no # smithay-helper situation as the wlr protocols above, pinned the same way. wayland-protocols-plasma = { version = "0.3.12", features = ["server"] } # `ext-workspace-v1` (`src/workspace.rs`): staging-tree protocol, not # wlr-specific - lives in the plain `wayland-protocols` crate instead, and # (like the wlr protocol above) has no smithay helper to delegate to. wayland-protocols = { version = "0.32.13", features = ["server", "staging"] } serde.workspace = true serde_json.workspace = true # `gamma_control.rs`: `zwlr_gamma_control_v1.set_gamma` hands over a raw # gamma table as a memory-mapped fd, not a value on the wire - already a # transitive dependency (smithay's own shm handling uses it), just not # previously used directly by this crate. memmap2 = "0.9" # `gtk_shell_protocol.rs`: `gtk_shell1`/`gtk_surface1` is a GTK-private # protocol with no published `wayland-protocols-*` crate (unlike the wlr/ # staging ones above) - generated at compile time from a vendored copy of # GTK's own XML instead. Pinned to the version `wayland-server` above # actually resolves to, so both see the same wire types. wayland-scanner = "0.31.10" wayland-backend = { version = "0.3.15", features = ["server_system"] } xcursor = "0.3.11" # `native_lock.rs`: converts a pressed key's `Keysym` (from `KeysymHandle:: # modified_sym()`) into the printable character it represents, for the # lock screen's own password field - smithay has no helper for this # itself, only the raw `Keysym`. Pinned to the same version smithay itself # depends on (with the same `wayland` feature), same reasoning as every # other "pinned to smithay's own version" dependency above - both need to # see one identical `Keysym` type, not two incompatible ones. xkbcommon = { version = "0.8", features = ["wayland"] } [dependencies.smithay] version = "0.7" default-features = false features = [ "backend_winit", "backend_drm", "backend_libinput", "backend_udev", "backend_session_libseat", # `backend_egl`/`backend_gbm`: the udev backend's opt-in (`SRDWM_GPU=1`) # GPU render path - see `udev/gpu.rs`'s own module doc comment. Additive # to the existing `renderer_pixman` dumb-buffer path below, not a # replacement: that path stays the default for portability (a low-spec # machine or a VM with no GBM/3D support still needs it to work). "backend_egl", "backend_gbm", "renderer_gl", "renderer_pixman", "desktop", "wayland_frontend", "xwayland", ]