UWSM(1) General Commands Manual UWSM(1) (NAME) UWSM - (Wayland). (SYNOPSIS) uwsm [-h|-v] {subcommand} [options ...] (DESCRIPTION) Wayland systemd (autostart) XDG . scope service . (SUBCOMMANDS) select (Entry) . start . finalize systemd. stop . app ( Desktop Entry). check ( ). aux . SUBCOMMANDS . <> . (CONFIGURATION) (FILES) XDG: uwsm/env uwsm/env.d/* uwsm/env-${compositor} uwsm/env-${compositor}.d/* (shell) (source) . XDG_CURRENT_SESSION ( ). uwsm/default-id Desktop Entry . (Fallback) XDG . UWSM_UNIT_RUNG (run|home) systemd/user/ unit drop-in : $XDG_RUNTIME_DIR $XDG_CONFIG_HOME. UWSM_TWEAKS ( ) drop-in (tweak) False . UWSM_FINALIZE_VARNAMES ( ) <>. UWSM_WAIT_VARNAMES ( ) ( WAYLAND_DISPLAY). UWSM_WAIT_VARNAMES_TIMEOUT ( ) ( ) . (: 10). UWSM_WAIT_VARNAMES_SETTLETIME ( ) ( ) (: 0.2). UWSM_APP_UNIT_TYPE (scope|service) unit (: scope). UWSM_SILENT_START ( ) True 1 stdout <>. 2 . DEBUG ( ) True stderr. (Login Sequence Integration) uwsm exec (shell profile) ( Shell Profile Integration ). <> Desktop Entry Wayland (display manager) ( Use Inside Desktop Entry ). (Compositor Selection) uwsm Desktop Entry (ID) ( Action ID ). Desktop Entry whiptail ( select ). (Startup) start . UWSM : o wayland-session-pre@.target ( graphical-session-pre.target) o wayland-wm-env@.service ( ) o wayland-session@.target ( graphical-session.target) o wayland-wm@.service ( ) o wayland-session-xdg-autostart@.target ( xdg-desktop-autostart.target) o wayland-session-envelope@.target ( ) o wayland-session-shutdown.target ( ) o wayland-session-bindpid@.service ( PID) o wayland-session-waitenv.service ( ) ( Desktop Entry ) (specifier) . graphical-session-pre.target <> ( POSIX source ) uwsm . (delta) systemd D-Bus . IN_UWSM_ENV_PRELOADER true . graphical-session.target ( ) wayland-wm@${ID}.service wayland-session-waitenv.service . WAYLAND_DISPLAY systemd . uwsm . WAYLAND_DISPLAY (timeout) . <> ( finalize ) UWSM_WAIT_VARNAMES UWSM_WAIT_VARNAMES_SETTLETIME ( Environment vars ). WAYLAND_DISPLAY graphical-session.target . xdg-desktop-autostart.target . (Inside session) (app launcher) scope service (app.slice background.slice session.slice) . uwsm : o app-graphical.slice o background-graphical.slice o session-graphical.slice app systemd-run ( app ). session.slice ( systemd.special(7) ). : o uwsm stop o wayland-wm@*.service wayland-session-envelope@*.target o wayland-session-shutdown.target Systemd . graphical-session-pre.target (unset ) . (kill ). (SUBCOMMANDS) select (Desktop Entry) wayland . uwsm select whiptail Desktop Entry XDG wayland-sessions . ${XDG_CONFIG_HOME}/uwsm/default-id . . 1 . (shell profile) . check 0 1 . is-active: uwsm check is-active [-h] [-v] [compositor] -v compositor compositor graphical-session*.target (active) (activating) . may-start: uwsm check may-start [-h] [-g [S]] [-v|-q] [N ...] N VT ... (: 1) -g S S graphical.target (: 60 0 ). -i (login shell) -r ( ) -v -q wayland : o DBUS_SESSION_BUS_ADDRESS o (login shell) o graphical.target o graphical-session*.target o VT (: 1) o VT Desktop Entry (units) . uwsm start [-h] [-D name[:name...]] [-a|-e] [-N Name] [-C Comment] [-U {run|home}] [-t] [-o] [-n] -- compositor [args ...] -F hardcode drop-in . -D name[:name...] XDG_CURRENT_DESKTOP ( :). . -a -D (). -e -D . -N Name ( Desktop Entry ). -C Comment ( Desktop Entry ). -U {run|home} (rung) : run: $XDG_RUNTIME_DIR/systemd/user () home: $XDG_CONFIG_HOME/systemd/user. systemd . . UWSM_UNIT_RUNG . -t ( ) (tweak). UWSM_TWEAKS=false . -T (tweak) . . -g S S graphical.target (: 60 ). -G S S graphical.target ( -g : -1 ()). -o . -n (Dry run) . (ID) : o o Desktop Entry ( <<:>>) o : o select - . o default - ( ). hardcode . <<-->> . () wayland-session-bindpid@${PID}.service PID uwsm uwsm systemctl wayland-wm@${ID}.service . WAYLAND_DISPLAY systemd . <> ( ). . uwsm finalize [-h] [VAR_NAME ...] WAYLAND_DISPLAY DISPLAY UWSM_FINALIZE_VARNAMES ( ) (export) . systemd . WAYLAND_DISPLAY systemd wayland-session@.service wayland-session-waitenv.service . UWSM_FINALIZE_VARNAMES . VAR_NAME=value UWSM_WAIT_VARNAMES . stop . uwsm stop [-h] [-r [compositor] [-U {run|home}] [-n] -r [compositor] ( compositor). -U (rung) {run|home} : run: $XDG_RUNTIME_DIR/systemd/user () home: $XDG_CONFIG_HOME/systemd/user. systemd . . UWSM_UNIT_RUNG . -n (dry run) . app -- Desktop Entry. uwsm app [-h] [-s {a,b,s,custom.slice}] [-t {scope,service}] [-a app_name] [-u unit_name] [-d unit_description] [-S ] [-T] -- application [args ...] -s slice {a,b,s,custom.slice} (: a): a - app-graphical.slice b - background-graphical.slice s - session-graphical.slice slice -t {scope,service} (: scope UWSM_APP_UNIT_TYPE). -a app_name ( ). -u unit_name . -d unit_description . -p Property=value ( ). -S {out,err,both} stdout stderr . -T . . Desktop Entry Action ":" . Desktop Entry . "--" . systemd. systemd . prepare-env ( ExecStart wayland-wm-env@.service wayland-session-pre@.target). cleanup-env ( ExecStop wayland-wm-env@.service wayland-session-pre@.target). exec ( Exec wayland-wm@.service wayland-session@.target). app-daemon uwsm-app. (APP DAEMON) wayland-wm-app-daemon.service . ${XDG_RUNTIME_DIR}/uwsm-app-daemon-in . ${XDG_RUNTIME_DIR}/uwsm-app-daemon-out . \0 \0 . (write+close) . : o app "uwsm app" o ping "pong" o stop exec & wait . <> . eval . : #!/bin/sh printf '0%s' app "$@" > "${XDG_RUNTIME_DIR}/uwsm-app-daemon-in" IFS='' read -r cmd < "${XDG_RUNTIME_DIR}/uwsm-app-daemon-out" eval "$cmd" uwsm-app : . (SHELL PROFILE INTEGRATION) uwsm ( ) . VT 1 ( ) : if uwsm check may-start && uwsm select; then exec systemd-cat -t uwsm_start uwsm start default fi VT : if uwsm check may-start 1; then exec systemd-cat -t uwsm_start uwsm start sway.desktop elif uwsm check may-start 2; then exec systemd-cat -t uwsm_start uwsm start labwc.desktop fi <> . may-start check . exec uwsm . <> () (uwsm) (stdout) (stderr) systemd <> . systemd-cat(1) . uwsm / (display/login manager) <> (Desktop Entries) . /usr/local/share/wayland-sessions/my-compositor.desktop: [Desktop Entry] Name=My compositor (with UWSM) Comment=My cool compositor Exec=uwsm start -N "My compositor" -D mycompositor -C "My cool compositor" mywm DesktopNames=mycompositor Type=Application : o o Exec= <> o ( Desktop Entry ID Action ID) o Desktop Entry ID Action ID `uwsm` uwsm shell profile . uwsm . (SEE ALSO) uwsm-plugins(3), systemd-run(1), systemd-cat(1), systemd.special(7) 2026-08-24 UWSM(1)