A Wayland window-stacking compositor https://labwc.github.io
Find a file
Johan Malm d839889972 xdg: start unmaximized
Some xdg-shell applications remember the (un)maximized states when last
closed. We could honour this state, but it makes the code cumbersome
regarding padding and position. Prefer to keep it simple.
2021-03-17 20:56:03 +00:00
docs Convert man pages from md to scd 2021-03-05 22:14:02 +00:00
include xdg: chase swaywm/wlroots@f574ca934c 2021-03-13 23:23:33 +00:00
protocols Merge branch 'master' into output-management 2021-02-28 13:11:33 -05:00
src xdg: start unmaximized 2021-03-17 20:56:03 +00: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: remove -Wno-enum-compare 2021-03-15 18:11:44 +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 table-of-contents 2021-03-16 21:27:10 +00: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
  • Keep feature set fairly small and use openbox-3.4 configuration/theme specification in order to avoid inventing another one.
  • Where practicable, use clients to show wall-paper, take 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

The following list indicates the intended high level roadmap:

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

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.

The following items are likely to be out-of-scope:

  • Icons (except window buttons)
  • Animations
  • Gradients on window decorations 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

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