A Wayland window-stacking compositor https://labwc.github.io
Find a file
2020-07-06 21:58:51 +01:00
data src/rcxml.c: parse <keybind> 2020-06-19 22:00:22 +01:00
include Render close, iconify and maximize buttons 2020-07-06 21:58:51 +01:00
protocols Add meson.build 2020-05-20 22:04:22 +01:00
src Render close, iconify and maximize buttons 2020-07-06 21:58:51 +01:00
tests src/rcxml.c: parse <keybind> 2020-06-19 22:00:22 +01:00
tools Render window close button 2020-06-29 19:27:59 +01:00
.clang-format Support xwayland view resize (LAB_DECO_PART_LEFT) 2020-05-25 13:42:40 +01:00
.gitignore Add meson.build 2020-05-20 22:04:22 +01:00
LICENSE Initial commit 2019-05-11 21:21:58 +01:00
meson.build Render window close button 2020-06-29 19:27:59 +01:00
README.md Render close, iconify and maximize buttons 2020-07-06 21:58:51 +01:00

labwc

Labwc is a [WIP] free, stacking compositor for Wayland.

It is in early development and has the following aims:

Dependencies

Runtime dependencies include wlroots (>=0.10.0), wayland-protocols,xwayland, libxml2, glib-2.0, cairo and pango.

Roadmap

  • Support xwayland
  • Parse rc.xml
  • Parse themerc
  • Read xbm icons
  • Add maximize, minimize, close buttons
  • Add grip
  • 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

Inspiration

Labwc has been inspired and inflenced by openbox, sway, cage, wio and rootston

Design

Labwc is based on the wlroots library.

The following were considered before choosing wlroots: QtWayland, grefsen, Mir and egmde.

Configuration

See rc.xml and 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