Create a first-pass at wayflan-server


I created Wayflan with the purpose of supporting Wayland clients in Common Lisp. That said, I've purposefully suffixed -client in systems and packages to provide space for a server-side implementation.

I believe this will be more ambitious than creating a Wayland client, because I want a daughter compositor project to validate that the server-side API is passable. For reference, wl-roots advertises itself as "60,000 lines of code you were going to write anyway", and clock reports the reference compositor Weston 11.0.0 to have 120,000 LOC. I believe a daughter compositor & validation should be deferred until a first-pass at wayflan-server is staged up.

#Acceptance Criteria

  • The system wayflan-server and package xyz.shunter.wayflan.server is created.
  • The server package contains code responsible for server-side Wayland communication: creating a server socket, listening for client connections, managing multiple clients' displays, hooks to implement Wayland interfaces, sending wl errors, and so on
  • wayflan-server's define-request and define-event ought to be complementary to wayflan-client's define macros.
  • Wayflan-server ought to share symmetry with wayflan-client, and share features with libwayland server.
  • Unit tests are created to verify wayflan-server can:
    • send and receive messages
    • manage multiple displays
    • send fatal wl-display.error events & disconnect on invalid messages
    • withstand various weird input without hiccupping library user code.
Assigned to
3 months ago
3 months ago