No description
  • Zig 79.7%
  • Python 20.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Fynn Mahringer d6a204dc0b
Some checks failed
release / security (push) Failing after 3s
release / release (push) Has been skipped
chore: use local trivy runner directly
2026-09-02 19:22:47 +02:00
.forgejo/workflows chore: use local trivy runner directly 2026-09-02 19:22:47 +02:00
example example: use non-shift keysyms 2026-03-02 13:51:08 +03:00
scripts chore: add forgejo release workflow 2026-09-02 19:18:27 +02:00
.gitignore build: port bindings to zig 0.16 2026-08-04 23:49:58 +02:00
build.zig fix: always export swc module 2026-08-05 00:43:51 +02:00
build.zig.zon fix: harden callback wrappers 2026-08-06 00:05:37 +02:00
LICENSE initial commit 2026-03-01 20:45:45 +03:00
README.md docs: refresh README for clarity 2026-08-09 16:54:20 +02:00
swc.zig fix: avoid runtime tag names in callbacks 2026-08-06 00:12:28 +02:00

zig-neuswc

zig 0.16 bindings for neuswc that are easier to use than the output of zig translate-c.

The goal is to keep the generated Wayland surface close to the upstream C library, while giving Zig code a small, predictable wrapper around it.

Build

Validate the Zig wrapper and generated Wayland bindings:

zig build

Example

zig-neuswc includes a Zig translated version of the example compositor in swc. The example target links against a system-provided libswc, plus wayland-server and xkbcommon:

zig build -Dexample=true
swc-launch zig-out/bin/example

API

zig-neuswc stays close to zig-wayland where that makes sense, but it uses a data-first listener style so the handler can infer the payload type without an extra comptime parameter.