• src/conio/wl_cio.c wl_cio.h wl_dynload.c wl_dynload.h wl_events.c wl_e

    From Deuc¨@VERT to Git commit to main/sbbs/master on Mon Mar 16 12:11:08 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/f33f5c166b8a074e17371cae
    Added Files:
    src/conio/wl_cio.c wl_cio.h wl_dynload.c wl_dynload.h wl_events.c wl_events.h wl_proto.c wl_proto.h
    Modified Files:
    src/conio/CMakeLists.txt Common.gmake GNUmakefile ciolib.adoc ciolib.c ciolib.h src/syncterm/CHANGES HACKING.md Manual.txt bbslist.c syncterm.c syncterm.man.in
    Log Message:
    Add native Wayland display backend for ciolib

    This backend has been planned and designed for quite some time, but the
    sheer amount of mechanical work kept it on the back burner. Wayland's
    protocol binding model effectively requires reimplementing the client
    library glue to support runtime dlopen Ä generating protocol marshalling
    code, defining interface structs, and wiring up function pointer
    redirection for every API call. That's a lot of tedious but necessary scaffolding. The only reason this finally got done is that Claude was
    able to do the heavy lifting on the protocol generation and plumbing.

    Features: SHM buffer rendering, internal/external scaling via
    viewporter, xkbcommon keyboard layout support, clipboard copy/paste,
    window icon (xdg-toplevel-icon-v1), cursor shape theming, server-side decoration negotiation, Alt+drag window move for CSD mode, and HiDPI double-scaling prevention. Optional protocols degrade gracefully.

    Runtime dlopen of libwayland-client, libwayland-cursor, and libxkbcommon
    (no link-time dependencies). Protocol code pre-generated by
    wayland-scanner and combined into wl_proto.[ch] Ä no build-time scanner dependency. Auto-detected via pkg-config; disable with WITHOUT_WAYLAND.

    Preferred over X11 in AUTO mode on Unix. Select explicitly with -IY.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net