1
0
Fork
You've already forked wayland-scm
0
a r7rs scheme library implementing the wayland protocol
  • Scheme 79%
  • C 11.7%
  • Makefile 9.1%
  • Shell 0.2%
Find a file
2026年04月27日 14:11:35 +03:00
ai + ai/gptel.deepseek.new-id-handling.research.org 2025年10月26日 11:43:04 +03:00
channel/wayland-scm/packages + channel/wayland-scm/packages/wlroots.scm 2025年10月26日 11:43:04 +03:00
chicken V0.3.0 2025年02月26日 15:05:05 +03:00
examples examples: bump copyright 2026年01月29日 16:51:13 +03:00
ext ext/shm: guixify makefile 2025年08月01日 19:37:59 +03:00
tests/integration introduce lock.scm & 'guix time-machine ...', guile-ares-rs: use 0.9.7 2026年04月27日 09:09:13 +03:00
wayland-scm (wayland-scm client): pass proxy record to callback for objects 2026年04月17日 10:47:15 +03:00
COPYING add license file 2024年10月09日 14:13:42 +00:00
example.Makefile examples/input-method + makefile 2025年10月26日 11:43:04 +03:00
guile.Makefile tests: intro 2026年03月27日 19:47:08 +03:00
guix.scm introduce lock.scm & 'guix time-machine ...', guile-ares-rs: use 0.9.7 2026年04月27日 09:09:13 +03:00
lock.scm introduce lock.scm & 'guix time-machine ...', guile-ares-rs: use 0.9.7 2026年04月27日 09:09:13 +03:00
Makefile V0.3.0 2025年02月26日 15:05:05 +03:00
nrepl.Makefile repl.Makefile, nrepl.Makefile: use 'guix time-machine' 2026年04月27日 14:11:35 +03:00
README.org README.org: Testing 2026年03月27日 19:47:08 +03:00
repl.Makefile repl.Makefile, nrepl.Makefile: use 'guix time-machine' 2026年04月27日 14:11:35 +03:00
scanner.scm scanner.scm: remove doc-looking comments 2026年01月29日 16:51:13 +03:00
test.Makefile introduce lock.scm & 'guix time-machine ...', guile-ares-rs: use 0.9.7 2026年04月27日 09:09:13 +03:00
tests.scm introduce lock.scm & 'guix time-machine ...', guile-ares-rs: use 0.9.7 2026年04月27日 09:09:13 +03:00
wayland-scm.texi wayland-scm.texi: add note on demashalling 2026年04月24日 22:25:30 +03:00
with-weston.scm tests: intro 2026年03月27日 19:47:08 +03:00

wayland-scm: (mostly) R7RS-compliant scheme bingings for Wayland

Authors

At the time this project was very young and about 80% ready to use the original author Lirr Govel (@lirr-govel) had another account on codeberg — @mal (and previously @kfu). And he removed the account because was going through hard times.

I (@shegeley) have to pick it up and make the last 20%.

About 10 months later he came back and contacted me. He's a very good programmer and now writes he's own experiments in guile scheme and wayland. We made a deal that I keep this project under my account and he stays as a contributor.

Check out his page and support his projects.

Progress so far

What I did:

  1. Packaged in guix. See guix.scm
  2. Few sane improvements that came with guix packagment (how module naming scheme generated from protocols file names)
  3. Few small bug fixes with guile scheme
  4. Handled "new_id" returning events in guile scheme
  5. Moved the README from .md to .org
  6. Created the wayland-scm.texi and add documentation generation to the guix package
  7. Introduced basic integration testing

Currently project support is focused on Guile Scheme scheme with GNU Guix as a primary developer OS (packaging, shells, etc). There are artefact of chicken and gauche scheme that can be picked up and continued by enthusiasts.

Documentation

There's no unified documenting solutions that works on all schemes (RNRS don't write about documentation at all)

So I made a choise to keep this project's doc in wayland-scm.texi file. It should be updated on every commit that introduced massive changes to some mechanisms, new variables or whatsoever.

Testing

Testing is now at it's very first iteration.

Integration testing is done with headless-weston: without a screen, just with socket exposed to that I can connect to it and it'd behave like a 'real' compositor.

The tests themselfs are written using Andrew Tropin's suitbl library (built into ares).

Unit testing is not set up (yet). See how wayflan handles tests: mimicking server answers via socket.

TODO CI/CD: build package from guix.scm

Other Known Lisp Wayland Bindings Implementations

  • wayflan - client bindings on common lisp
  • cl-wayland - client/server binding on common lisp
  • guile-wayland - guile scheme client/server bindings. unstable, sigsegvs on some methods. Also there's guile-wlroots that depends on this library
  • acarrico:wayland-protocol - racket implementation. mtime 2016. has default.nix file. Not tested
  • chicken-wayland-server - chicken scheme server bindings implementation. Not tested. Also ther's chicken-wlroots that depends on this library