WaylandClientKit is a Swift 6 package for native Wayland clients and GUI framework infrastructure on Linux. It uses Wayland system libraries directly and keeps protocol handles, file descriptors, unsafe lifetimes, and C interop behind typed Swift APIs.
WaylandClientKit is pre-foundation, so source-breaking changes are possible.
WaylandClientis the public product for windows, input, text input, data transfer, cursors, output facts, presentation feedback, and desktop integration.WaylandGraphicsPreviewis a source-breaking preview product for graphics submission experiments.
Both products are baseline and audit tracked under the compatibility policy.
Current public coverage includes:
- display and managed window, popup, dialog, and subsurface lifecycle
- transactional software drawing, damage, scale, regions, and presentation feedback
- pointer, keyboard, touch, tablet, gesture, cursor, and text input
- clipboard, primary selection, and drag-and-drop
- desktop and output integration
- preview GPU submission with explicit software fallback reporting
See the Support Matrix for protocol-level status.
WaylandClientKit does not provide widgets, layout, styling, accessibility semantics, scene management, application architecture, or renderer selection. It does not expose public raw Wayland, GBM, EGL, or DRM objects; borrowed file descriptor integers; raw pointers; or unsafe implementation handles.
Swift 6.3.2 or newer is required.
nix develop
swift run wck tools toolchain-smoke
swift run wck bootstrap check
swift build --disable-index-store
swift run wayland-client-kit-smokeWithout Nix, install the packages in Linux Dependencies before running the checks. The smoke executable requires a Wayland session. For a first client, follow Getting Started.
swift run wck ci cheap
swift run wck ci required
swift run wck ci check
swift run wck examples build
swift run wck protocols verify-generated
swift run wck identity verify-generatedci cheap runs static checks. ci required adds the public API baseline,
strict build, unit tests, external integration packages, and expected-failure
clients for invalid graphics policy and graphics-lease copying or reuse. ci check
also verifies Markdown and DocC.
See Tooling and Protocol Generation for command ownership and generated files.
- Getting Started
- Which API Should I Use?
- Support Matrix
- WaylandClient DocC
- WaylandGraphicsPreview DocC
- Compositor Matrix
- Release Checklist
Examples are separate Swift package targets. Run one from the repository root:
swift run --package-path Examples WaylandClientKitDemoThe API chooser links features to examples.
Build every example with swift run wck examples build.
Read Contributing, Support, and the Code of Conduct. Report vulnerabilities according to Security, not through public issues.
WaylandClientKit is licensed under the Apache License 2.0. Vendored protocol XML and generated artifacts retain upstream license and provenance notices.