4.8 KiB
labwc
1. What is this?
Labwc is a wlroots-based stacking compositor for Wayland.
It has the following aims:
- Be light-weight, small and fast.
- Use openbox-3.4 specification for configuration and themes.
- Keep feature set small (ca 40% of openbox).
- Where practicable, use clients for wall-paper, panel, screenshots, and so on.
- Stay in keeping with wlroots and sway in terms of approach and coding style.
2. Build
meson build/
ninja -C build/
Dependencies include:
- meson, ninja, gcc/clang
- wlroots (master)
- wayland (>=1.19)
- wayland-protocols
- libinput (>=1.14)
- libxml2
- cairo, pango, glib-2.0
- xkbcommon
- xwayland, xcb (optional)
Disable xwayland with meson -Dxwayland=disabled build/
For further details see wiki/Build.
3. Install
See wiki/Install.
4. Configure
If you want to override the defaults, create the following files:
- ~/.config/labwc/rc.xml
- ~/.config/labwc/menu.xml
- ~/.local/share/themes/<theme-name>/openbox-3/themerc
See full details in the following:
5. Run
./build/labwc [-s <command>]
Click on the background to launch a menu.
If you have not created an rc.xml configuration file, default keybinds will be:
- Alt-tab: cycle window
- Alt-F3: launch bemenu
- Alt-escape: exit
6. Integrate
Suggested apps to use with labwc:
- Screen-shooter: grim
- Screen-recorder: wf-recorder
- Background image: swaybg
- Panel: waybar
- Launchers: bemenu, fuzzel, wofi
- Output managers: kanshi, wlr-randr
7. Acceptance Criteria
A lot of emphasis is put on code simplicy when considering features.
The main development effort if focused on producing a solid foundation for a stacking compositor rather than adding configuration and theming options.
In order to define what 'small feature set' means, refer to the lists of complete and outstanding items.
For more details, see the full table of acceptance criteria.
High-level summary of progress:
- Optionally support xwayland
- Parse openbox config files (rc.xml, autostart, environment)
- Parse openbox themes files and associated xbm icons
- Support maximize, iconify, close buttons
- Catch SIGHUP to re-load config file and theme
- Support layer-shell protocol
- Support damage tracking to reduce CPU usage
- Parse menu.xml to generate a basic root-menu
- Support wlr-output-management protocol
- Support HiDPI
- Support foreign-toplevel protocol (e.g. to integrate with wlroots panels/bars)
- Support on-screen display (osd), for example to support alt-tab window list
- Support libinput configuration (tap is enabled for the time being)
High-level summary of items which are not inteded to be implemented:
- Icons (except window buttons)
- Animations
- Gradients for decoration and menus
- Any theme option not required to reasonably render common themes (it's amazing how few options are actually required).

