Labwc

From ArchWiki

Labwc stands for Lab Wayland Compositor[1]. According to the official website:

Labwc is a wlroots-based window-stacking compositor for wayland, inspired by openbox.
It is light-weight and independent with a focus on simply stacking windows well and rendering some window decorations. It relies on clients for panels, screenshots, wallpapers and so on to create a full desktop environment.
Labwc tries to stay in keeping with wlroots and sway in terms of general approach and coding style.
Labwc only understands wayland-protocols & wlr-protocols, and it cannot be controlled with dbus, sway/i3-IPC or other technology. The reason for this is that we believe that custom IPCs and protocols create a fragmentation that hinders general Wayland adoption.

Installation

Labwc can be installed with the packages labwcAUR or labwc-gitAUR.

The default terminal emulator is foot. Before starting labwc it is advisable to either install it or set a new terminal in the configuration.

Configuration

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

Reason: Multiple sections duplicate upstream documentation. Missing Template:ic and Template:man between other misc visual adjustments. (Discuss in Talk:Labwc)

Openbox 3.6 specification is used for configuration and theme syntaxes. Config layout for ~/.config/labwc/ :

- autostart
- environment
- menu.xml
- rc.xml
- themerc-override
- shutdown

See `man labwc-config and `man labwc-theme` for further details. rc.xml.all contain default settings with all options.

copy the sample configuration files located at /usr/share/doc/labwc/ to ~/.config/labwc/.

see integration for more configuration

Autostart

~/.config/labwc/autostart is used as autostart.

Keymap

On ~/.config/labwc/environment

The following keyboard-configuration variables are supported: XKB_DEFAULT_RULES, XKB_DEFAULT_MODEL, XKB_DEFAULT_LAYOUT, XKB_DEFAULT_VARIANT and XKB_DEFAULT_OPTIONS. :

XKB_DEFAULT_LAYOUT=us
XKB_DEFAULT_LAYOUT=us,de
XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle
XKB_DEFAULT_OPTIONS=grp:shift_caps_toggle

for details see xkeyboard-config(7)

Typematic delay and rate

To change typematic delay and rate, you can add the following lines to your input section, these are default value:

~/.config/labwc/rc.xml
<keyboard>
<repeatRate>25</repeatRate>
<repeatDelay>600</repeatDelay>
</keyboard>

Statusbar

waybar can be used.

~/.config/labwc/autostart
waybar >/dev/null 2>&1 &

to enable a taskbar through the toplevel-foreign protocol in waybar-wlr-taskbar(5)

~/.config/waybar/config
"modules-left": ["wlr/taskbar"],

 "wlr/taskbar": {
        "format": "{app_id}",
        "on-click": "minimize-raise",
    },
 

Outputs

external tools like wlr-randr,kanshi

~/.config/labwc/autostart
wlr-randr --output HDMI-A-2 --preferred --pos 0,0 --output HDMI-A-1 --preferred --pos -1920,0

Wallpaper

use autostart and wallpaper setter like swaybg, wallutils, wpaperd, wbgAUR etc

~/.config/labwc/autostart
swaybg -c '#113344' >/dev/null 2>&1 &

Custom keybindings

~/.config/labwc/rc.xml
<keyboard>
<keybind key="W-d"> <action name="Execute" command="fuzzel"/> </keybind>
<keybind key="XF86_AudioLowerVolume">  <action name="Execute" command="wpctl set-volume  @DEFAULT_AUDIO_SINK@ 5%-"/> </keybind>
<keybind key="XF86_AudioRaiseVolume"> <action name="Execute" command="wpctl set-volume  @DEFAULT_AUDIO_SINK@ 5%+"/> </keybind>
<keybind key="XF86_AudioMute"> <action name="Execute" command="wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle "/> </keybind>
<keybind key="XF86_MonBrightnessUp"> <action name="Execute" command="brightnessctl -e set 5%+"/> </keybind>
<keybind key="XF86_MonBrightnessDown"> <action name="Execute" command="brightnessctl -e set 5%-"/> </keybind>
</keyboard>

workspaces

~/.config/labwc/rc.xml
<labwc_config>
<desktops number="4" />
<keyboard>
<keybind key="W-1">  <action name="GoToDesktop" to="1" />  </keybind>
<keybind key="W-2"> <action name="GoToDesktop" to="2" />  </keybind>
<keybind key="W-3"> <action name="GoToDesktop" to="3" /> </keybind>
<keybind key="W-4"> <action name="GoToDesktop" to="4" /> </keybind>
</keyboard>

</labwc_config>

Menu

it uses openbox sepecification menu. see /usr/share/doc/labwc/menu.xml and man labwc-menu. you can also use automatic menu generators for openbox like archlinux-xdg-menu, obmenu-generatorAUR,etc

example:

<?xml version="1.0" ?>
<openbox_menu>
<menu id="root-menu" label="">
<item label="󰈹   Firefox">
   <action name="Execute" command="firefox" />
 </item>
 <item label="  Terminal">
   <action name="Execute" command="foot" />
 </item>
 </menu>
 </openbox_menu>

Xwayland

it starts xorg-xwayland automatically if xwayland support is enabled at build time. to force disable it set:

~/.config/labwc/enviroment
WLR_XWAYLAND=' '

Starting

Like all wlroots based compositor for seat it needs polkit when using systemd-logind or seatd service with your user added to seat user group

To start Labwc, type labwc in the Linux console.

labwc -s foot to start labwc with foot running.

See also