labwc/README.md
2021-02-26 19:18:52 +00:00

4.3 KiB

labwc

1. What is this?

Labwc is a [WIP] free, wlroots-based stacking compositor for Wayland.

It has the following aims:

  • Be light-weight, small and fast
  • Have the look and feel of openbox albeit with a smaller feature set
  • 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

It is in early development, so expect bugs and missing features.

Video (3:42) showing features

2. Build

meson build && ninja -C build

Dependencies include:

  • meson, ninja, gcc/clang
  • wlroots (0.11.0 - 0.12.0)
  • wayland (>=1.16)
  • 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. Configure

If you want to override the defaults, create the following files:

See full details in the following:

4. Run

./build/labwc [-s <some-application>]

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-F2: cycle window
  • Alt-F3: launch dmenu
  • Alt-escape: exit

5. Integrate

Suggested apps to use with labwc:

6. Roadmap

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
  • Show maximize, iconify, close buttons
  • Catch SIGHUP to re-load config file and theme
  • Support layer-shell protocol ('exclusive' not yet implemented)
  • Support damage tracking to reduce CPU usage
  • Support root-menu and parse menu.xml (very simple implementation - no submenus, separators or titles)
  • Support 'maximize'
  • Support wlr-output-management protocol and kanshi
  • Support foreign-toplevel protocol (e.g. to integrate with wlroots panels/bars)
  • Implement client-menu
  • Support on-screen display (osd), for example to support alt-tab window list
  • Support HiDPI
  • Support libinput configuration (tap is enabled for the time being)

7. Scope

In order to keep the code base clean and maintainable, simplicy is favoured over full specification adherence.

In-scope

Refer to these wiki pages for a more detailed scope definition against the openbox documentation.

Track progress against the above specification.

Out-of-scope

The following items are out-of-scope:

  • Icons (except window buttons)
  • Animations
  • Gradients on window decorations and menus
  • Any theme option (probably at least half of them) not required to reasonably render common themes
  • Any configuration option not required to provide a simple openbox-like experience
  • Multiple desktops
  • Pipe-menus