xobl
xobl copied to clipboard
[WIP] Pure OCaml bindings to the X11 protocol
xobl
The X11 OCaml Bindings Library. A Pure OCaml implementation of the X11 protocol.
TODO
- Tweaks to HIR
- [ ] GetProperty reply: remove value_len. It's left in because the length field is calculated using both value_len and format.
- [ ] prune unused enums and masks after converting them to variants and optional fields.
- [ ] fix QueryTextExtents
- there is a field that depends on the length of the whole request(!) so we should probably handle it.
- Bindings
- [ ] come up with a better API for sending multiple requests at once.
- how do we encode stuff which needs a reply?
- [ ] events/variant structs/errors that are only made of one field should be converted to that one field.
- notify_variant
- [ ] come up with a better API for sending multiple requests at once.
- OCaml backend
- [ ] encode/decode events and errors.
- [ ] change handling of flags?
Documentation
- https://www.x.org/releases/X11R7.7/doc/
- https://www.x.org/wiki/Development/
- Many of the reasons behind decisions in the XCB protocol spec were documented in the commit messages on https://cgit.freedesktop.org/xcb/proto/log/
Other implementations generated from the spec
- Guile: guile-xcb
- Emacs Lisp: xelb
- Haskell: XHB (parser)
- Elixir: XEB
- Javascript (Node): node-x11
- Clojure: xcljb
- Rust: rust-xcb, x11rb
- Ruby: alembic
- Go: xgb
Xlib implementations (not generated) of note
- Python: python-xlib
- Common Lisp: CLX
Further reading/watching
- The real story behind Wayland and X (Daniel Stone)