Labwc 0.7.2, a Wayland Composite Server, Now Available for Release

Available project release labwc 0.7.2 (Lab Wayland Compositor), developing a composite server for Wayland with capabilities reminiscent of a window manager Openbox (the project is presented as an attempt to create an Openbox alternative for Wayland). Among the features of labwc are minimalism, compact implementation, extensive customization options and high performance. The project code is written in C and distributed by licensed under GPLv2.

The library is used as a basis wlroots, developed by the developers of the Sway user environment and providing basic functions for organizing the work of a composite manager based on Wayland. Of the extended Wayland protocols supported wlr-output-management to configure output devices, layer-shell to organize the work of the desktop shell and foreign-toplevel for connecting your own panels and window switches.


It is possible to connect add-ons to implement functions such as creating screenshots, displaying wallpaper on the desktop, placing panels and menus. Animated effects, gradients and icons (with the exception of window buttons) are not supported at all. To run X11 applications in an environment based on the Wayland protocol, the use of the DDX component is supported XWayland. The theme, basic menu and hotkeys can be configured via configuration files in xml format. There is built-in support for high pixel density (HiDPI) screens.

In addition to the built-in root menu, configured via menu.xml, you can connect third-party application menu implementations, such as bemenu, fuzzel And wofi. Can be used as a panel waybar, sfwbar, Yambar or LavaLauncher. To manage connecting monitors and changing their parameters, it is proposed to use wlr-randr or kanshi. The screen is locked using swaylock.

Key changes in the new release:

  • Added ‹menu›‹ignoreButtonReleasePeriod› setting to define how long mouse buttons are ignored, which can be used to protect against unintentional selection of items or closing of menus.
  • Added the ability to use drop shadows for windows decoded on the server side. To enable shadows in the ‹theme› block, the ‹dropShadows› setting has been proposed, and the|inactive.shadow.size and|inactive.shadow.color properties have been added to adjust the size and color.
  • Added ignoreConfigureRequest rule to allow configuration requests from X11 clients to be ignored to change screen size and position.
  • The rules allow binding to window types (‹windowRule type=””›). For example, for XWayland windows the type is NET_WM_WINDOW_TYPE_DESKTOP.
  • Added support for “none” sections to ‹action name=”ForEach”› loops, which fire when there are no successful matches.
  • Added “-S” (–session) option to run the specified command on startup and to shut down the composite manager when the command exits.
  • In themes, it is now possible to specify the color of the transparency level coding using the format “#aabbccff”.
  • In the interface settings for switching between windows, you can create custom fields with printf-style formatting, for example, ‹field content=”custom” format=”foobar %b %3s %-10o %-20W %-10i%t” width=”100% “/›. Added the ability to specify the width of the interface for switching between windows as a percentage relative to the screen width (“osd.window-switcher.width: 75%”), as well as change the size and color of the frame around window thumbnails (osd.window-switcher.preview.border.width |color). When setting up content, new fields workspace, state, type_short and output have been added.
  • Added support for Openbox-compatible menus (pipe-menu).
  • Added the ability to configure snapping to the edge of the screen.
  • Added support for setting input methods and an interface for editing them.
  • Added support for input device calibration.
  • In the interface for switching between virtual desktops, it is now possible to define a prefix for the names of desktops.
  • Added the ability to define environment variables in *.env files located in the “environment.d” directory.
  • Added support for specifying an empty value to clear an environment variable.
  • Added the ability to define a fallback output device (LABWC_FALLBACK_OUTPUT), which will be selected if the underlying output devices are unavailable, which may be useful, for example, when starting a VNC server.
  • Added the ‹windowSwitcher allWorkspaces=”yes”› setting, which allows the window-switcher to display windows on all virtual desktops.
  • The ability to run a shutdown script when shutting down has been provided.

Thanks for reading: