- Scheme 79%
- C 11.7%
- Makefile 9.1%
- Shell 0.2%
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:
- Packaged in guix. See guix.scm
- Few sane improvements that came with guix packagment (how module naming scheme generated from protocols file names)
- Few small bug fixes with guile scheme
- Handled "new_id" returning events in guile scheme
- Moved the README from .md to .org
- Created the wayland-scm.texi and add documentation generation to the guix package
- 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