Commit graph

10 commits

Author SHA1 Message Date
Till Wegmueller
9ab3e6d782 Remove dead code and fix all clippy/fmt warnings
- Remove CapturedFrame struct and last_capture field (no consumer yet)
- Remove display_handle field (re-obtainable when needed)
- Prefix output_manager_state and xdg_decoration_state with _ (kept
  alive for Wayland globals but not directly read)
- Keep framebuffer capture logging to verify ExportMem path works
2026-04-04 19:07:46 +02:00
Till Wegmueller
5fee1a9b40 Fix review findings: output transform, resize TODO, import aliases
- Change Transform::Flipped180 to Transform::Normal for virtual output
- Add TODO comment on resize handler for future output mode update
- Rename misleading JsonPointer* import aliases to *Trait
2026-04-04 19:03:14 +02:00
Till Wegmueller
ed2f9be8e6 Add missing delegates and framebuffer capture for functional compositor
- Add PrimarySelectionState and delegate: terminals like foot expect
  the primary selection protocol to be present
- Add XdgDecorationState and delegate: allows clients to negotiate
  server-side vs client-side window decorations
- Send initial configure for popups so menus and tooltips render
- Flatten nested if-let chains in commit handler (clippy)
- Include framebuffer capture in render pipeline (from prior task):
  copies rendered frame via ExportMem for future network transport
2026-04-04 18:59:49 +02:00
Till Wegmueller
a189c2f51b Add keyboard and pointer input handling via Smithay seat
Initialize keyboard and pointer on the Wayland seat at startup, and
route Winit input events (keyboard, pointer motion, button, scroll)
through process_input_event to the Smithay seat so clients can receive
input. Click-to-focus raises the clicked window and sets keyboard focus.
2026-04-04 18:51:22 +02:00
Till Wegmueller
cbfc6e95df Add rendering pipeline for client surfaces via OutputDamageTracker
- Create render module using Smithay's desktop::space::render_output
  for damage-tracked frame rendering to the Winit backend window
- Store backend and damage_tracker in CalloopData so the Winit event
  callback can trigger rendering on Redraw events
- Send initial xdg toplevel configure on first commit so clients can
  begin drawing
- Send frame callbacks after each render so clients schedule redraws
2026-04-04 18:45:31 +02:00
Till Wegmueller
50c8f68906 Wire up Winit backend and calloop event loop for wrsrvd
Initialize WinitGraphicsBackend with GlesRenderer, create a virtual
Output matching the window size, set up a Wayland listening socket via
ListeningSocketSource, and run the main event loop through calloop with
WinitEventLoop as an event source. The compositor now opens a window
and accepts Wayland client connections.
2026-04-04 18:38:38 +02:00
Till Wegmueller
383e91addf Split Wayland protocol handlers into dedicated modules
Move handler trait impls and delegate macros from state.rs into
handlers/{compositor,xdg_shell,input,output}.rs. Flesh out
CompositorHandler::commit with on_commit_buffer_handler and
XdgShellHandler::new_toplevel with window mapping. Add DataDeviceHandler,
SelectionHandler, ClientDndGrabHandler, and ServerDndGrabHandler impls
with DataDeviceState in the WayRay struct. State.rs now contains only
the struct definition and constructor.
2026-04-04 18:30:32 +02:00
Till Wegmueller
1f44288bce Add WayRay compositor state struct with Smithay subsystems
Define the central WayRay state struct holding all Smithay subsystem
states (compositor, xdg_shell, shm, seat, output, space, clock) and
wire Display creation into main.rs. Includes minimal handler trait
impls and delegate macros needed to compile; these will be expanded
and moved to a handlers module in Task 4.
2026-04-04 18:26:03 +02:00
Till Wegmueller
2d68ab6e8d Add tracing and miette error infrastructure to wrsrvd 2026-04-04 18:20:52 +02:00
Till Wegmueller
4e08dfb5a9 Set up Cargo workspace with four crates
Workspace: wrsrvd, wrclient, wayray-protocol, wradm under crates/.
Smithay configured with default-features=false, portable features only.
Implements ADR-007 project structure.
2026-04-04 18:16:53 +02:00