Skip to content

WaylandClientKit

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.

Status And Products

WaylandClientKit is pre-foundation, so source-breaking changes are possible.

  • WaylandClient is the public product for windows, input, text input, data transfer, cursors, output facts, presentation feedback, and desktop integration.
  • WaylandGraphicsPreview is a source-breaking preview product for graphics submission experiments.

Both products are baseline and audit tracked under the compatibility policy.

Scope

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.

Build And Run

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-smoke

Without 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.

Repository Checks

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-generated

ci 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.

Documentation

Examples are separate Swift package targets. Run one from the repository root:

swift run --package-path Examples WaylandClientKitDemo

The API chooser links features to examples. Build every example with swift run wck examples build.

Policies

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.

About

Swift-native Wayland client substrate for Linux: windows, input, data transfer, text input, protocol facts, and preview graphics APIs.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages