#Overview
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.