# labwc Labwc is a [WIP] free, stacking compositor for Wayland. It is in early development and has the following aims: - Be light-weight, small and fast. - Have the look and feel of the X11 Window Manager Openbox. - Where practicable, use other software to show wall-paper, take screenshots, and so on. ## Dependencies - wlroots (>=0.10.0) - wayland-protocols - xwayland - libxml2 - glib-2.0 Will soon depend on - cairo, pango ## Roadmap - [x] Support xwayland - [x] Parse [rc.xml](data/rc.xml) - [x] Parse [themerc](data/themerc) - [ ] Read xbm icons - [ ] Add maximize, minimize, close buttons - [ ] Add grip - [ ] Create `view_impl` starting with .configure - [ ] Support layer-shell background (e.g. using swaybg) - [ ] Draw better alt-tab rectangle - [ ] Try restarting and consider catching SIGHUP for --reconfigure - [ ] Implement client-menu - [ ] Implement root-menu ## Influenced by - [sway](https://github.com/swaywm/sway) - [cage](https://www.hjdskes.nl/blog/cage-01/) - [wio](https://wio-project.org/) - [rootston](https://github.com/swaywm/rootston) - [openbox](https://github.com/danakj/openbox) ## Alternatives The following were considered before choosing wlroots: - [QtWayland](https://github.com/qt/qtwayland), [grefsen](https://github.com/ec1oud/grefsen) - [Mir](https://mir-server.io), [egmde](https://github.com/AlanGriffiths/egmde) ## Configuration See [rc.xml](data/rc.xml) and [themerc](data/themerc) comments for details incl. keybinds. ## Integration Suggested apps: - grim - screenshots ## Build ### Arch Linux sudo pacman -S wlroots git clone https://github.com/johanmalm/labwc cd labwc meson build ninja -C build ### Debian ``` sudo apt install \ build-essential \ cmake \ libwayland-dev \ wayland-protocols \ libegl1-mesa-dev \ libgles2-mesa-dev \ libdrm-dev libgbm-dev \ libinput-dev \ libxkbcommon-dev \ libudev-dev \ libpixman-1-dev \ libsystemd-dev \ libcap-dev \ libxcb1-dev \ libxcb-composite0-dev \ libxcb-xfixes0-dev \ libxcb-xinput-dev \ libxcb-image0-dev \ libxcb-render-util0-dev \ libx11-xcb-dev \ libxcb-icccm4-dev \ freerdp2-dev \ libwinpr2-dev \ libpng-dev \ libavutil-dev \ libavcodec-dev \ libavformat-dev \ universal-ctags \ xwayland # Debian Buster has an old version of meson, so we use pip3 pip3 install --target=$HOME/bin meson git clone https://github.com/johanmalm/labwc cd labwc git clone https://github.com/swaywm/wlroots subprojects/wlroots # wlroots 0.10.0 is the last version which runs with Wayland 0.16 # (which is what Buster runs) cd subprojects/wlroots && git checkout 0.10.0 && cd ../.. meson build ninja -C build ``` ## Debug To enable ASAN and UBSAN, run meson with `-Db_sanitize=address,undefined`