A simple wayland client library briding the gap from cairo to wayland

The Name

Nkk was initially named 9kk for the distance of roughly 9 thousand kilometers between the cities of Cairo and Wayland. Yes it could have been 9mm for 9 mega meters, but that just didn't feel right (and who wants library named after a bullet).

In C, however, identifier names (functions and variables) cannot start with a number. So 9kk was the name of the library and the header files, but in-code identifiers used "nkk" as their prefix. Eventually I gave in and just called the whole thing nkk.

But whatever you call it, it spans the distance between the wayland protocol and the cairo graphics library. Nkk makes it easy to create wayland client windows ready to receive cairo drawing commands, receive keyboard and mouse events, etc. Nkk supports the xdg-shell and layer-shell protocols (the latter covers the role of "override-redirect" windows in X11 and can provide wallpaper/backgrounds, status bars, docks, etc)

The Docs

There aren't any yet. But there are several simple examples that demonstrate several different uses of nkk. Proper documentation will come - but nkk is still experimental and changing rapidly.

The .so API

While maintaining backwards compatibility is always important, there are no guarantees of a stable API prior to version 1 (with a soname ending in .so.1). All .so.0 builds should be considered experimental or for educational purposes. If you distribute any software that uses an .so.0 version, be sure to keep a close eye on nkk development for potential breaking changes.

The Examples

The examples directory contains various 'toy' programs exemplifying many of nkk's abilities. More realistic applications can be found in the utilities packaged with the tabby wayland compositor.