A Wayland window-stacking compositor https://labwc.github.io
Find a file
2021-08-22 19:11:04 +01:00
docs rcxml: load default keybinds on <keyboard><default /> 2021-08-22 19:09:31 +01:00
include config: add <core><gap> 2021-08-22 14:32:19 +01:00
protocols Merge branch 'master' into output-management 2021-02-28 13:11:33 -05:00
src rcxml: load default keybinds on <keyboard><default /> 2021-08-22 19:09:31 +01:00
subprojects meson: Use wrap files to manage dependencies 2021-06-26 18:12:24 +01:00
.gitignore desktop: rename desktop_cycle_view() 2020-10-31 14:46:33 +00:00
LICENSE Initial commit 2019-05-11 21:21:58 +01:00
meson.build build: bump wlroots dependency version number 2021-07-16 19:58:22 +01:00
meson_options.txt Add man-pages option like swaywm/sway@ba16f16e4d 2021-03-04 06:35:15 +00:00
NEWS.md NEWS.md: re-format 2021-07-09 21:34:00 +01:00
README.md README: add more links to example themes 2021-08-22 19:11:04 +01:00

labwc

1. What is this?

Labwc stands for Lab Wayland Compositor, with lab indicating a sense of experimentation and treading new ground.

It is a wlroots-based stacking compositor aiming to be light-weight and independent, with a focus on simply stacking windows well and rendering some window decorations. It relies on clients for wall-paper, panels, screenshots, and so on to create a full desktop environment.

Labwc tries to stay in keeping with wlroots and sway in terms of general approach and coding style.

In order to avoid re-inventing configuration & theme syntax, openbox-3.4 specification is used. This does not mean that labwc is an openbox clone but rather that configuration files will look and feel familiar.

video link date content
Video (1:10) 05-Aug-2021 window gymnastics, theming and waybar
Video (3:42) 25-Feb-2021 setting background and themes; xwayland/xdg-shell windows

So far, labwc supports the following:

  • Config files (rc.xml, autostart, environment)
  • Theme files and xbm icons
  • Damage tracking to reduce CPU usage
  • A basic root-menu (configured with menu.xml)
  • HiDPI
  • wlr-output-management protocol
  • layer-shell protocol
  • foreign-toplevel protocol (e.g. to integrate with panels and bars)
  • Optionally xwayland

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

Labwc uses the files listed below for configuration and theming.

file user over-ride location man page
rc.xml ~/.config/labwc/ labwc-config(5), labwc-actions(5)
menu.xml ~/.config/labwc/ labwc-menu(5)
autostart ~/.config/labwc/ labwc(1)
environment ~/.config/labwc/ labwc-environment(5)
themerc ~/.local/share/themes/<theme-name>/openbox-3/ labwc-theme(5)

The example rc.xml has been kept simple. For all options and default values, see rc.xml.full

Configuration and theme files are re-loaded on receiving SIGHUP (e.g. killall -SIGHUP labwc)

For keyboard settings, see environment and xkeyboard-config(7)

For themes, search the internet for "openbox themes" and place them in ~/.local/share/themes/. Some good starting points include:

5. Run

./build/labwc [-s <command>]

Click on the background to launch a menu.

If you have not created an rc.xml config file, default binds will be:

combination action
alt-tab activate next window
alt-escape exit
super-return alacritty
alt-F3 bemenu
alt-F4 close window
super-a toggle maximize
alt-mouse-left move window
alt-mouse-right resize window
alt-arrow move window to edge

6. Integrate

Suggested apps to use with labwc:

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 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).