labwc(1)
π¦ labwc(1) β like, the manual page for labwc, bestie
okay so this is the manual page for labwc, section 1 of the General Commands Manual, and I'm gonna walk you through it like we're texting at 2am π
β¨ NAME β¨
labwc β a Wayland stacking compositor. that's it. that's the whole vibe check π
πΈ SYNOPSIS πΈ
labwc [options...]
literally just run it, optionally with some flags, and you're in β¨
π DESCRIPTION π
Labwc is a wlroots-based stacking compositor for Wayland. no cap.
It's light-weight and independent, and it's hyper-focused on one thing: simply stacking windows well and rendering some window decorations. Where practicable it uses clients for wall-paper, panels, screenshots and so on. it's giving "I delegate, I don't do everything myself" main character energy π
π«Ά SIGNALS π«Ά
so the compositor will exit on SIGTERM and reload its configuration on SIGHUP. respectively, obviously π for example:
kill -s <signal> $LABWC_PID
killall -s <signal> labwc
Each running instance of labwc sets the environment variable LABWC_PID to its PID. this is lowkey iconic because it lets you send signals to a specific instance, and it's exactly what the --exit and --reconfigure options use π―
π OPTIONS π
-c,--config <config-file>β specify a config file with path ποΈ-C,--config-dir <config-directory>β specify a config directory π-d,--debugβ enable full logging, including debug information. see the ENVIRONMENT VARIABLES section below for further options π-e,--exitβ exit the compositor by sendingSIGTERMto$LABWC_PIDπ-h,--helpβ show help message and quit, the classic π«‘-m,--merge-configβ merge user config/theme files in all XDG Base Directories π§¬-r,--reconfigureβ reload the compositor configuration by sendingSIGHUPto$LABWC_PIDπ-s,--startup <command>β run command on startup π-S,--session <command>β run command on startup and terminate the compositor on exit. this one is useful for session management because it lets the session client terminate labwc by exiting itself. it's a Wayland-specific use-case, and here's why: under X,xinitstarts the server and keeps it alive for as long as the session client β so either the session client starts the Window Manager, or the Window Manager can be launched independently first. On Wayland, the Compositor is both Display Server and Window Manager, so those described session management mechanisms do not work, because the Compositor needs to be running before the session can function. and since some session clients support both X11 and Wayland, this command line option avoids re-writes and fragmentation. slay, honestly π§-t,--title <fmtstr>β set the window title for labwc to use when it's running in a window (i.e. nested in a compositor).<fmtstr>is a format string used as the window title, replacing%owith the name of the output region. this is so useful when simulating multiple screens, like running labwc with the environment variableWLR_WL_OUTPUTS=2β in that case%owill be unique per simulated screen π₯οΈπ₯οΈ-v,--versionβ show the version number and quit π·οΈ-V,--verboseβ enable more verbose logging π£οΈ
π SESSION MANAGEMENT π
okay this section is a whole meal, buckle up π
To enable the use of graphical clients launched via D-Bus or systemd service activation, labwc can update both activation environments on launch. Provided that labwc is aware of an active D-Bus user session (i.e., the environment variable DBUS_SESSION_BUS_ADDRESS is defined), the compositor will invoke the commands
dbus-update-activation-environment
systemctl --user import-environment
(when available) to notify D-Bus and systemd with the values of the following environment variables:
WAYLAND_DISPLAY
DISPLAY
XDG_CURRENT_DESKTOP
XDG_SESSION_TYPE
XCURSOR_SIZE
XCURSOR_THEME
LABWC_PID
This behavior is enabled by default whenever labwc uses the "DRM" wlroots backend (which implies that labwc is the primary compositor on the console). When other backends are employed (for example, when labwc runs nested in another Wayland compositor or an X11 server), updates to the activation environment are disabled by default. You can force updates to the activation environment by setting the environment variable LABWC_UPDATE_ACTIVATION_ENV to one of the truthy values 1, true, yes or on; or suppress them by setting the variable to one of the falsy values 0, false, no or off. choose your fighter π
Whenever labwc updates the activation environment on launch, it will also attempt to clear the activation environment on exit. For D-Bus β which does not provide a means for properly un-setting variables in the activation environment β this is accomplished by setting the session variables to empty strings. For systemd, the command systemctl --user unset-environment will be invoked to actually remove the variables from the activation environment. tidy β¨
A systemd user unit named labwc-session.target is also shipped alongside the compositor for users who want to integrate labwc with systemd. It binds to the standard graphical-session.target, so systemd user services can start and stop in sync with the labwc session when they declare a WantedBy or PartOf relationship to that target. Labwc does not activate the target itself; users opt in by adding lines like the following to their autostart and shutdown files:
systemctl --user --no-block start labwc-session.target
systemctl --user stop graphical-session.target
The example autostart and shutdown files shipped with labwc include these commented out π To have a user service automatically started with the session, enable it so the corresponding symlink under the graphical-session.target.wants directory exists β for example by running systemctl --user enable dms.service.
π₯ ENVIRONMENT VARIABLES π₯
Set the environment variables listed below to enable specific debug options. You can do this in either the environment file or on the command line, for example: LABWC_DEBUG_FOO=1 labwc.
LABWC_DEBUG_LIBSFDOβ enable debug and info logging for libsfdo, for example for parsing of desktop files and searching for icons. note that libsfdo error logging is always enabled regardless of this environment variable, but will only be shown with the-V|--versionoption. iykyk πLABWC_DEBUG_DIR_CONFIG_AND_THEMEβ increase logging of paths for config files (for examplerc.xml,autostart,environmentandmenu.xml) as well as titlebar buttons ποΈLABWC_DEBUG_CONFIG_NODENAMESβ enable logging of all nodenames (for examplepolicy.placement: Cascadefor<placement><policy>Cascade</policy></placement>) for config and menu files respectively π³LABWC_DEBUG_KEY_STATEβ enable logging of press and release events for bound keys (generally key-combinations likeCtrl-Alt-t) β¨οΈ
β SEE ALSO β
labwc-actions(5), labwc-config(5), labwc-menu(5), labwc-theme(5) β go read the girlies too, they're part of the family π«Ά
and that's the whole page, bestie π this one ships out of the General Commands Manual source, dated 2026-08-22 β mwah, drink water, and go stack some windows πΈππ¦
π¦ where this page comes from
- arch rolling: labwc 0.20.2-1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms