惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 司徒正美
Last Week in AI
Last Week in AI
爱范儿
爱范儿
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
量子位
V
V2EX
博客园 - 叶小钗
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - conxlgtm/WaylandClientKit: Swift-native Wayland ...
Nocerg · 2026-06-18 · via Hacker News: Show HN

WaylandClientKit is a Swift 6 package for building native Wayland clients and GUI framework infrastructure on Linux.

It exposes typed Swift APIs over Wayland client protocols for display lifecycle, windows, input, text input, data transfer, cursors, desktop integration, output facts, presentation feedback, and preview graphics submission.

Toolkit Boundary

WaylandClientKit does not wrap Qt, GTK, Electron, SDL, or another application toolkit.

It uses Linux and Wayland system libraries directly, then keeps raw protocol handles, queues, file descriptors, unsafe lifetimes, and C interop behind Swift APIs.

This package is intentionally below a GUI toolkit. Layout, widgets, styling, accessibility semantics, scene management, application architecture, and renderer selection belong in higher layers.

Status

WaylandClientKit is pre-foundation. It is useful for experiments, GUI framework development, compositor testing, and protocol validation, but source-breaking changes are still possible.

WaylandClient is the main public product. Its public API is baseline/audit tracked under the compatibility policy.

WaylandGraphicsPreview is a source-breaking preview product for graphics submission experiments. It may change while the graphics path is validated across real compositors.

Versioning is documented in Versioning.

What It Supports

Current public coverage includes:

  • display connection and owner-thread lifecycle
  • xdg-shell windows, popups, dialogs, and subsurfaces
  • software frame drawing, damage, regions, scale, and presentation feedback
  • pointer, keyboard, touch, tablet, gestures, pointer capture, and pointer warp
  • xkbcommon-backed key interpretation, compose, and dead-key text
  • regular clipboard, primary selection, drag-and-drop, and drag icons
  • text input through zwp_text_input_v3
  • cursor themes, cursor-shape requests, custom cursors, and cursor animation
  • desktop integration hooks for icons, idle inhibition, activation, system bell, shortcut inhibition, and toplevel drag
  • output topology facts and wlroots output-management preview snapshots
  • preview graphics APIs with software fallback reporting

The full protocol/status table lives in Support Matrix.

What It Does Not Provide

WaylandClientKit does not provide a widget set, declarative view tree, layout engine, styling system, accessibility model, scene model, retained renderer, or public raw Wayland binding layer.

Raw Wayland, GBM, EGL, DRM, dmabuf, syncobj, and graphics file descriptor handles are not public API.

Quick Start

WaylandClientKit requires Swift 6.3.2 or newer.

nix develop
swift run wck tools toolchain-smoke
swift run wck bootstrap check
swift build --disable-index-store
swift run wayland-client-kit-smoke

If you are not using Nix, install the packages in Linux Dependencies, then run the same wck checks.

Tiny Window

import WaylandClient

@main
struct TinyWaylandClient {
    static func main() async throws {
        try await WaylandDisplay.withConnection { display in
            let window = try await display.createTopLevelWindow()

            try await window.show { frame in
                frame.withXRGB8888Rows { _, pixels in
                    for index in 0..<pixels.count {
                        unsafe pixels[unchecked: index] = 0x0020_4060
                    }
                }
            }

            for await event in display.inputEvents.prefix(4) {
                print(event)
            }

            await window.close()
        }
    }
}

For the full walkthrough, see Getting Started.

Products

WaylandClient

The main public product for windowing, input, data transfer, text input, cursors, output facts, presentation feedback, and desktop integration.

WaylandGraphicsPreview

A source-breaking preview product for renderer-facing experiments. Use it when testing managed GPU paths, software fallback behavior, synchronization, pacing, or graphics metadata.

Repository Checks

The wck executable contains project checks and maintainer tooling.

Common commands:

swift run wck ci cheap
swift run wck ci check
swift run wck examples build
swift run wck protocols verify-generated

Checks cover protocol generation, shim verification, public API baselines, DocC, import boundaries, unsafe-token allowlists, examples, unit tests, integration tests, sanitizer runs, and live/headless smoke paths.

See Tooling and Protocol Generation for details.

Documentation

Examples

Useful first examples:

Build every example with:

swift run wck examples build

Compositor Evidence

Wayland behavior varies by compositor and advertised protocol support. WaylandClientKit tracks live compositor evidence separately from unit tests.

See Compositor Matrix for current evidence and collection commands.

Contributing

Read Contributing, Support, and the Code of Conduct.

Keep changes protocol-shaped, small, documented, and verified. Public API changes should update the relevant baseline, audit, docs, tests, and examples.

Security

Do not open public issues for vulnerabilities. Follow SECURITY.md.

License

WaylandClientKit is licensed under the Apache License 2.0.

Vendored protocol XML keeps upstream license and provenance notices intact. Generated protocol artifacts should retain those upstream comments when they are regenerated.