Hi suckless, As discussed in the previous thread (swc library to implement dwm under Wayland), I've been working on a Wayland compositor library, and after several redesigns, I'm pretty happy with where it is now.
You can find the source here: https://github.com/michaelforney/swc There is still some more work to be done, in particular moving/resizing windows with the mouse, and more careful handling of special window states (for example transient and fullscreen). However, for basic usage it should work fine. Here is the current output of sloccount: SLOC Directory SLOC-by-Language (Sorted) 5801 libswc ansic=5801 533 launch ansic=533 409 cursor ansic=409 launch/ contains code for swc-launch, a privileged launcher that handles VTs, managing DRM master, and opening/revoking input devices. cursor/ contains a program taken from wayland to extract cursors from the X server cursor font. As far as dependencies go, currently you need wayland, libdrm, libevdev, libxkbcommon, pixman, and wld[0]. wld contains the buffer management and rendering code used by swc and Wayland versions of st and dmenu. Optionally, you can use libudev for input hotplugging. This is the only way I know to accomplish this, and I am open to suggestions for alternatives (I'd still like to remain compatible with systems running udevd though). I'd also like suggestions for how to deal with configuration for things like what settings to use for XKB (keyboard layout, etc). This is a per-user setting, so I don't think setting it in a config.h would be appropriate. I have not begun any process of porting/rewriting dwm to use swc. I figured I'd see where people want to go from here. One potential obstacle that might show up is the status bar. Since with swc the window manager is in the same process as the compositor, currently the status bar would have to go in to a separate process. I accomplished this in the video below by adding a protocol extension which can notify clients when certain things happen in the window manager (like workspace or focus change). I'm not sure if this is the best approach though. I made a demo video showing some of swc's features (as well as Wayland st and dmenu) here: http://www.youtube.com/watch?v=5thcLnLHkjs&hd=1 The window manager used in the video is one that I started quite a while ago, which I hacked up to use swc instead. It suits my needs for developing swc, but I'd like to see what others can come up with! The public API is available in swc.h[1]. Comments, questions, and criticism are welcome! You can find me on freenode or OFTC under the nick tridactyla. [0]: https://github.com/michaelforney/wld [1]: https://github.com/michaelforney/swc/blob/master/libswc/swc.h -- Michael Forney <mfor...@mforney.org>