Introducing taiwins, a compact wayland compositor

Sichem Zhou sichem.zh at
Tue May 12 19:19:25 UTC 2020

Hi All,

I would like to present the Taiwins wayland compositor, a tiling window
manager based on libweston. I created this project aiming for a compact but
yet versatile wayland window manager, like a swiss army knife. It offers a
built-in shell for providing wallpaper, panel, widgets and locker. A
launcher for launching applications, running commands and finding files.
Today, the compositor is configurable through lua script. It exposes some
interfaces of the compositor so you can extend and change its behavior
through the lua configuration. It also implements a flexible keybinding
system on top of libweston. You can bind functions with a key sequence like
in Emacs.

Here I would like to address some questions people may have.

1. what is the difference between taiwins and popular compositor like Sway
or weston?

Sway and weston are clearly much more popular, weston is the reference
compositor of wayland, for a long time it was the only well-functioning
wayland compositor. Sway took the approach of forking the behavior from
i3wm, it is popular design, back in the days, I was more of a awesome wm
fan. But essentially, the big difference between taiwins and sway or
weston, I think, is that taiwins focus wayland client code.

I created this sub-project called twclient for writing wayland client. It
offers a render loop, GL initializers, wl_shell/xdg_shell implementation, a
immediate GUI system(nuklear), font/image loading, etc. I used this GUI
system to create the wallpaper, panel, locker for taiwins. twclient is
small and quite embeddable yet it lifts the weight of binding wl_globals,
taking care of shm buffer, EGL for you. Creating a window in wayland takes
less than 20 lines of code.

2. Most people seemed to opt in wlroots based, why taiwins is built upon

I was originally developing taiwins using wlc, and rewrote in libweston in
2018. Back then wlroots was in quite early stage so I didn't make a switch,
like Drew DeVault once pointed out, libweston was split from weston, it has
the middle layer design. Interestingly wlroots has way more compositors
built from it, as for right now I don't find good example for libweston
rather than weston itself.

To be honest I don't actually find in what way libweston is limiting my
compositor design right now, It does lack of some functions I need but it
is not part of problem of design. At same time, libweston does offer most
of the abstractions I need in creating wayland compositors. I am not sure
if I would make the switch in the future, but at the moment, I am closely
following the weston development, sometimes I send a patch. If people are
not giving up on weston, patches are accepted, libweston is continuously a
viable backend.

It feels kind of awkward to advertise my project on this mailing list,
however I don't find a better place for people with common interests in
wayland. Right now taiwins is usable and under actively development. I Hope
there could be anyone interested. Checkout the code here:

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the wayland-devel mailing list