A Wayland window-stacking compositor https://labwc.github.io
Find a file
2021-03-29 19:36:46 +01:00
docs theme: support border.width 2021-03-27 21:09:45 +00:00
include theme: support border.width 2021-03-27 21:09:45 +00:00
protocols Merge branch 'master' into output-management 2021-02-28 13:11:33 -05:00
src seat: add missing damage_all_outputs() 2021-03-29 19:35:25 +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 meson.build: add rev-parse to version number 2021-03-17 21:21:49 +00:00
meson_options.txt Add man-pages option like swaywm/sway@ba16f16e4d 2021-03-04 06:35:15 +00:00
NEWS.md Add NEWS.md and update README.md 2021-03-06 11:45:45 +00:00
README.md README: update progress summary 2021-03-29 19:36:46 +01:00

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.

Video (3:42) showing features

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:

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:

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 quickly adding configuration and theming options.

See wiki/Acceptance-criteria for a full down-selection.

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)

The following items are out-of-scope:

  • Icons (except window buttons)
  • Animations
  • Gradients for decoration and menus
  • Any theme option not required to reasonably render common themes (amazingig how few options are actually required).
  • Any configuration option not required to provide a simple openbox-like experience