From 43175c78a5b450eb108738187b72e80d36a7bf5d Mon Sep 17 00:00:00 2001 From: srdusr <99972264+srdusr@users.noreply.github.com> Date: Tue, 2 Apr 2024 01:07:00 +0200 Subject: Add window rules, real config validation, and a Wayland DRM/udev backend - srd.rule(): match windows by title/class, apply floating/maximized/ workspace/geometry/decoration actions on creation (crates/core/src/rules.rs) - srd.validate_config()/srd.debug.*: real range/format checks and status/profiling helpers, replacing the always-true stub - Wayland titlebar text rendering via fontdue, unit-tested without a display (crates/wayland/src/decoration.rs) - Wayland precise keybinding matching, replacing the "any Super-held key" heuristic, sharing the keysym table with X11 (moved to crates/core/src/keysyms.rs) - Wayland DRM/udev backend (crates/wayland/src/udev.rs): runs as the real compositor on a bare TTY via libseat/libinput/KMS, software rendering via Pixman + dumb buffers (no GBM/EGL required) - srdwm_platform::detect() fix, found via VM testing: a bare TTY with no DISPLAY/WAYLAND_DISPLAY now correctly resolves to Wayland instead of an X11 backend that can never work there - XWayland integration groundwork (crates/wayland/src/xwayland.rs): spawn, X11Wm, and full XwmHandler event routing into the same WindowManager/ Space pipeline as native clients. Windows don't render yet - a real glamor-vs-software-renderer conflict in XWayland's own fallback path, root-caused via WAYLAND_DEBUG tracing and documented in docs/IMPLEMENTATION_STATUS.md rather than worked around blind. All verified live in an isolated QEMU VM: X11 backend shows two decorated, correctly-tiled xterms with real title text; the DRM/udev Wayland backend opens the GPU, initializes input, and scans out a rendered frame via KMS page-flip. --- crates/x11/src/lib.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'crates/x11/src/lib.rs') diff --git a/crates/x11/src/lib.rs b/crates/x11/src/lib.rs index 0faf513..d025efa 100644 --- a/crates/x11/src/lib.rs +++ b/crates/x11/src/lib.rs @@ -18,12 +18,12 @@ //! millimeters instead of the CRTC's pixel mode; here it reads the CRTC. //! //! Not implemented (documented rather than faked): XKB-level keymaps (only -//! a hand-maintained keysym table covering common keys, see `keysyms.rs`), -//! ICCCM `WM_HINTS`/urgency, and EWMH pager/taskbar hints beyond +//! a hand-maintained keysym table covering common keys, shared with the +//! Wayland backend via `srdwm_core::keysyms`), ICCCM `WM_HINTS`/urgency, and +//! EWMH pager/taskbar hints beyond //! `_NET_SUPPORTED`/`_NET_CLIENT_LIST`/`_NET_WM_STATE` maximize. -mod keysyms; - +use srdwm_core::keysyms; use srdwm_core::{Event, Modifiers, MouseButton, TitlebarHit, Window as CoreWindow, WindowId, TITLEBAR_HEIGHT}; use srdwm_core::{Monitor, Rect, WindowManager}; use srdwm_platform::{Platform, PlatformError, PlatformKind, Result as PlatformResult}; -- cgit v1.2.3