labwc/README.md
2021-03-16 21:25:01 +00:00

4.3 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
  • 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.