This document is still very preliminary. It is likely to be incomplete and/or incorrect and is very likely to change.
liblx is an API to The X Window System, implementing the client side of the protocol spoken between clients and servers. It sits in the software stack at the same place as Xlib and xcb. (If you want you could think of it as a competitor to them. I prefer to think of them as complementary alternatives rather than competitors; their ideal use cases are different.)
liblx was the subject of a talk I gave on 2026-02-01 at FOSDEM 2026. FOSDEM's published video for the talk is, at this writing, here, with a copy mirrored here because video.fosdem.org has drunk the "we're going to ram HTTPS down everyone's throat" koolaid, and, as I read the license, I'm permitted to mirror it provided I give "appropriate credit" (which I believe the foregoing does) and "provide a link to the license" (which is here; I know of no non-HTTPS hosting for it, and that I don't care enough about to provide myself). I'm not particularly proud of the talk; I made various gaffes of varying severity (see below for more thoughts on the talk). But it is what it is, flubs and all.
At this writing, 2026-02-06, the only machines I know it works on are my own and one work Linux machine. Its native home is NetBSD, but I expect it to be an easy-to-trivial port to make it work anywhere libaio and possibly libavl work. (libavl only if the application uses block function orders; see the libaio documentation. liblx itself does not need it.)
I've created a linux branch in the git repo with the changes I found necessary to make it work on the aforementioned work Linux machine. Because there is a huge variety of Linux distros, I can't promise that it'll work out of the box for you, but it's probably closer than the master branch is. Check out the linux branch and look at the READMEs. This branch also includes copies of the various other of my libraries (and one program) that liblx depends on.
I've written some example programs.
I've got many more, a few of which I'm giving here. These ones, though, I haven't gone through and commented, so they are drastically under-documented. As I get them commented, I'll move them to the list above.
I have not yet even started writing a full manpage (or manpages). At the moment, documentation takes two forms:
My primary distribution mechanism is a world-clonable git repo: git://git.rodents-montreal.org/liblx is the thing to clone. There's also the unpacked view of the git repo; see here for the contents of HEAD or here for the per-repo top directory for liblx (and here, in particular the README, for more on the paradigm this exemplifies).
For building it, if you don't want to use my build infrastructure, which I expect describes most of you, check out the ‘linux’ branch of the git repo; that branch includes copies of the source to other libraries and tools used for building liblx, and a few updates to work around some of Linux's idiosyncracies. And, of course, as I said in my talk, you can always send me mail. It might even work! :-)
Almost all these pages—all, I think—are 100% hand-coded.