.\" Generated by scdoc 1.11.5
.\" Complete documentation for this program is not available as a GNU info page
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.nh
.ad l
.\" Begin generated content:
.TH "labwc\-actions" "5" "2026\-08\-22"
.PP
.SH NAME
.PP
labwc \- actions
.PP
.SH ACTIONS
.PP
Actions are used in menus and keyboard/mouse bindings.\&
.PP
\fB\fR
.RS 4
Close top\-most window.\&
.PP
.RE
\fB\fR
.RS 4
Kill the process associated with the current window by sending it the
SIGTERM signal.\&
.PP
.RE
\fB\fR
.RS 4
Execute command.\& Note that in the interest of backward compatibility,
labwc supports as an alternative to even though
openbox documentation states that it is deprecated.\&
Note: Tilde (\(ti) is expanded in the command before passing to execvp().\&
.PP
.RE
\fB\fR
.RS 4
Exit labwc.\&
.PP
.RE
\fB\fR
.RS 4
Give focus to window under cursor.\&
.PP
.RE
\fB\fR
.RS 4
Remove focus from the window that is currently focused.\&
.PP
.RE
\fB\fR
.RS 4
Restack the current window above other open windows.\&
.PP
.RE
\fB\fR
.RS 4
Restack the current window below other open windows.\&
.PP
.RE
\fB\fR
.RS 4
Iconify (minimize) focused window.\&
.PP
.RE
\fB\fR
.RS 4
Begin interactive move of window under cursor.\&
.PP
.RE
\fB\fR
.RS 4
Move window until it hits the next edge.\&
.PP
\fBdirection\fR [left|up|right|down] Direction in which to move.\&
.PP
\fBsnapWindows\fR [yes|no] Move window until it hits an edge of
another window or screen edge.\& If set to "no", only move to
the next screen edge.\& Default is yes.\&
.PP
.RE
\fB\fR
.RS 4
Begin interactive resize of window under cursor.\&
.PP
\fBdirection\fR [up|down|left|right|up\-left|up\-right|down\-left|down\-right]
Edge or corner from which to start resizing.\& If this is not provided,
the direction is inferred from the cursor position.\&
.PP
.RE
\fB\fR
.RS 4
Resize window relative to its current size.\& Values of left, right,
top or bottom tell how much to resize on that edge of window,
positive values grow window, negative shrink window.\&
.PP
Note that some applications like terminal emulators may refuse growing
or shrinking by small amounts to keep the window size aligned to their
internal cell size.\&
.PP
.RE
\fB\fR
.RS 4
Resize window to fill the space between its edge and any other
window edge.\&
.PP
\fBdirection\fR [left|up|right|down] Direction in which to grow.\&
.PP
.RE
\fB\fR
.RS 4
Reverse of GrowToEdge.\& Shrinks by a maximum of 50%.\&
.PP
\fBdirection\fR [left|up|right|down] Direction in which to shrink.\&
.PP
.RE
\fB\fR
.RS 4
Move to position (x, y).\&
.PP
.RE
\fB\fR
.RS 4
Resize window.\&
.PP
\fBwidth\fR The width to resize the window to in pixels.\&
.PP
\fBheight\fR The height to resize the window to in pixels.\&
.PP
.RE
\fB\fR
.RS 4
Move to be centered on cursor.\&
Tries to prevent any part of the window from going off\-screen.\&
This action is deprecated from v0.\&7.\&3.\& To ensure your config works in
future labwc releases, please use:
.PP
\fB\fR
.PP
.RE
\fB\fR
.RS 4
Move window relative to its current position.\& Positive value of x moves
it right, negative left.\& Positive value of y moves it down, negative up.\&
.PP
.RE
\fB\fR
.br
\fB\fR
.RS 4
Resize window to fill half or quarter the output in the given direction.\&
.PP
\fBdirection\fR [up|down|left|right|up\-left|up\-right|down\-left|down\-right|center]
.RS 4
Direction in which to snap the window.\&
.PP
.RE
\fBcombine\fR [yes|no]
.RS 4
Allows to snap a window to an output corner by combining two
directions.\& For example, snapping a window to \fBright\fR and then
to \fBup\fR places it in the \fBup\-right\fR quarter of the output.\&
Default is no.\&
.PP
.RE
ToggleSnapToEdge additionally toggles the active window between
tiled to the given direction and its untiled position.\&
.PP
.RE
\fB\fR
.br
\fB\fR
.RS 4
Resize and move active window according to the given region.\&
.PP
ToggleSnapToRegion additionally toggles the active window between
tiled to the given region and its untiled position.\&
.PP
See labwc\-config(5) for further information on how to define regions.\&
.PP
.RE
\fB\fR
.RS 4
Resize and move the active window back to its untiled or unmaximized
position if it had been maximized or tiled to a direction or region.\&
.PP
.RE
\fB\fR
.br
\fB\fR
.br
\fB\fR
.br
\fB\fR
.br
Cycle focus to next/previous window, respectively.\&
.PP
.RS 4
Default keybinds for NextWindow and PreviousWindow are Alt\-Tab and
Shift\-Alt\-Tab.\& While cycling through windows, the arrow keys move the
selected window forwards/backwards and the escape key halts the cycling.\&
.PP
NextWindowImmediate and PreviousWindowImmediate skip the Window Switcher
and OSD, useful for binding to keys without modifiers.\&
.PP
\fBworkspace\fR [all|current]
This determines whether to cycle through windows on all workspaces or
the current workspace.\& Default is "current".\&
.PP
\fBoutput\fR [all|focused|cursor]
This determines whether to cycle through windows on all outputs, the
focused output, or the output under the cursor.\& Default is "all".\&
.PP
\fBidentifier\fR [all|current]
This determines whether to cycle through all windows or only windows of
the same application as the currently focused window.\& Default is "all".\&
.PP
.RE
\fB\fR
.RS 4
Re\-load configuration and theme files.\&
.PP
.RE
\fB\fR
.RS 4
Show a menu.\&
.PP
.RE
.nf
.RS 4
yes|no
X
Y
.fi
.RE
.PP
.RS 4
\fBmenu\fR The name of the menu to show.\& The menus "root\-menu",
"client\-menu", "client\-send\-to\-menu" and "client\-list\-combined\-menu"
are guaranteed to exist, but others may be defined explicitly.\&
See labwc\-menu(5) for more information.\&
.PP
\fBatCursor\fR [yes|no] When opening a menu, open the menu at the location
of the mouse cursor.\& When set to no, the menu will appear at the
upper\-left corner of the window associated with the action or underneath
the window button that opened the menu.\& Default is yes.\&
.PP
\fBposition\fR Show the menu in the specified position on the monitor
that has cursor focus, see below.\&
.PP
The position tag has two sub\-tags.\& and specify a position and
take either a pixel value, the string "center" which will center the
menu in that dimension, or a relative value specified as a percentage
A relative value is interpreted in terms of the monitor the menu will
be shown on, and will be relative to the left/top edge of the menu
window and monitor for positive values, and to the right/bottom edge
for negative values.\&
.PP
The example below demonstrates how the '\&root\-menu'\& can be opened from a
bottom aligned panel using the command `wtype \-M logo \-k Space`:
.PP
.RE
.nf
.RS 4
0
\-0
.fi
.RE
.PP
\fB\fR
.RS 4
Set decorations of focused window.\&
.PP
\fBdecorations\fR [full|border|none] \fBfull\fR enables the whole server side
decorations.\& With \fBborder\fR.\& only the borders and invisible resize area
are enabled.\& \fBnone\fR disables everything.\&
.PP
\fBforceSSD\fR [yes|no] If this is no, this action will be ignored for
windows that have client side decorations if it would increase the
amount of decoration.\& Default is no.\&
.PP
.RE
\fB\fR
.RS 4
Toggle decorations of focused window.\&
.PP
This is a 3\-state action which can be executed multiple times:
.PD 0
.IP \(bu 4
Only the titlebar will be hidden, borders and resize area are kept
.IP \(bu 4
Remaining decorations will be disabled
.IP \(bu 4
Decorations will be shown normally
.PD
.PP
By disabling the theme configuration '\&keepBorder'\& the first step
will be removed and the action only toggles between on and off.\&
.PP
.RE
\fB\fR
.RS 4
Toggle fullscreen state of focused window.\&
.PP
.RE
\fB\fR
.RS 4
Toggle maximize state of focused window.\& Supported directions are
"both" (default), "horizontal", and "vertical".\&
.PP
.RE
\fB\fR
.RS 4
Maximize focused window in the direction(s) specified.\& Supported
directions are "both" (default), "horizontal", and "vertical".\&
.PP
.RE
\fB\fR
.RS 4
Unmaximize focused window in the direction(s) specified and return it to
its pre\-maximized dimensions.\& Supported directions are "both" (default),
"horizontal", and "vertical".\&
.PP
.RE
\fB\fR
.RS 4
Toggle always\-on\-top of focused window.\&
.PP
.RE
\fB\fR
.RS 4
Toggle between layers '\&always\-on\-bottom'\& and '\&normal'\&.\& When a window is
in the '\&always\-on\-bottom'\& layer, it is rendered below all other
top\-level windows.\& It is anticipated that this action will be useful
when defining window\-rules for desktop\-management tools that do not
support the wlr\-layer\-shell protocol.\&
.PP
.RE
\fB\fR
.RS 4
Toggle omnipresent (visible on all workspaces / sticky) for the focused
window.\&
.PP
.RE
\fB\fR
.RS 4
Stop handling keybinds/mousebinds other than ToggleKeybinds itself.\&
This can be used to allow A\-Tab and similar keybinds/mousebinds to be
delivered to Virtual Machines, VNC clients or nested compositors.\&
A second call will restore all original keybinds/mousebinds.\&
.PP
This action will only affect the window that had keyboard focus when
the binding was executed.\& Thus when switching to another window, all
the usual keybinds will function again until switching back to the
original window.\& There can be multiple windows with this mode set.\&
.PP
.RE
\fB\fR
.RS 4
Toggles tearing for the focused window between enabled and disabled.\&
This overrides the preference (tearing hint) from the focused window.\&
.PP
Requires the config option '\&allowTearing'\&.\& When '\&allowTearing'\& is set
to '\&fullscreen'\& or '\&fullscreenForced'\&, tearing will still only be
enabled if the active window is in fullscreen mode.\&
.PP
.RE
\fB\fR
.RS 4
Give focus to topmost window on other output and warp the cursor
to the center of the window.\&
.PP
If \fBoutput\fR is specified, the focus is given to the specified output and
\fBdirection\fR is ignored.\& If \fBoutput\fR is omitted, \fBdirection\fR may be one
of "left", "right", "up" or "down" to indicate that the focus should be
given to the next output in that direction (if one exists).\&
.PP
\fBwrap\fR [yes|no] When using the direction attribute, wrap around
from right\-to\-left or top\-to\-bottom, and vice versa.\& Default is no.\&
.PP
If the target output does not contain any windows, the cursor will
be centered on the output.\&
.PP
.RE
\fB\fR
.RS 4
Moves active window to other output, unless the window state is
fullscreen.\&
.PP
If \fBoutput\fR is specified, the window will be sent directly to the
specified output and \fBdirection\fR is ignored.\& If \fBoutput\fR is omitted,
\fBdirection\fR may be one of "left", "right", "up" or "down" to indicate
that the window should be moved to the next output in that direction
(if one exists).\&
.PP
\fBwrap\fR [yes|no] When using the direction attribute, wrap around from
right\-to\-left or top\-to\-bottom, and vice versa.\& Default is no.\&
.PP
.RE
\fB\fR
.RS 4
Resizes active window size to width and height of the output when the
window size exceeds the output size.\&
.PP
.RE
\fB\fR
.RS 4
Switch to workspace.\&
.PP
\fBto\fR The workspace to switch to.\& Supported values are "current", "last",
"left", "right", "left\-occupied", "right\-occupied" or the full name of a
workspace or its index (starting at 1) as configured in rc.\&xml.\&
.PP
\fBwrap\fR [yes|no] Wrap around from last desktop to first, and vice
versa.\& Default is yes.\&
.PP
\fBtoggle\fR [yes|no] Toggle to “last” if already on the workspace that
would be the actual destination.\& Default is no.\&
.PP
.RE
\fB\fR
.RS 4
Send active window to workspace.\&
.PP
\fBto\fR The workspace to send the window to.\& Supported values are the same
as for GoToDesktop.\&
.PP
\fBfollow\fR [yes|no] Also switch to the specified workspace.\&
Default is yes.\&
.PP
\fBwrap\fR [yes|no] Wrap around from last desktop to first, and vice
versa.\& Default is yes.\&
.PP
.RE
\fB\fR
.RS 4
Add virtual output (headless backend).\&
.PP
For example, it can be used to overlay virtual output on real output,
but with a different resolution (this can be done with `wlr\-randr`
or `wdisplays`).\& After that, virtual output can be selected for screen
sharing (casting), effectively sharing only the region of the screen.\&
.PP
It must be noted that overlaying virtual output and real output is not
endorsed or explicitly supported by wlroots.\& For example, after
configuring virtual output, real output must be reconfigured as well
(for the overlay configuration to work correctly).\& This is the example
configuration:
.PP
.RE
.nf
.RS 4
.fi
.RE
.PP
.RS 4
Note that the vertical resolution of "ScreenCasting" output is just 50px
smaller than "eDP\-1" output to cut off bottom panel from screen sharing.\&
.PP
Virtual output is also useful for extending the desktop to (maybe
mobile) remote systems like tablets.\& E.\&g.\& simply adding a virtual
output, attaching wayvnc to it and running a VNC client on the remote
system.\&
.PP
\fBoutput_name\fR The name of virtual output.\& Providing virtual output name
is beneficial for further automation.\& Default is "HEADLESS\-X".\&
.PP
.RE
\fB\fR
.RS 4
Remove virtual output (headless backend).\&
.PP
\fBoutput_name\fR The name of virtual output.\& If not supplied, will remove
the last virtual output added.\&
.PP
.RE
\fB\fR
.RS 4
Reposition the window according to the desired placement policy.\&
.PP
\fBpolicy\fR [automatic|cursor|center|cascade] Use the specified policy,
which has the same meaning as the corresponding value for
\fB\fR.\& Default is automatic.\&
.PP
.RE
\fB\fR
.br
\fB\fR
.br
\fB\fR
.RS 4
Set, unset, or toggle, respectively, the "shaded" state of the active
window.\& When shaded, window contents are hidden, leaving only the
titlebar visible.\& Full\-screen windows or those without server\-side
decorations (including those for which the server\-side titlebar has been
hidden) are not eligible for shading.\&
.PP
.RE
\fB\fR
.RS 4
Warp the cursor to a position relative to the active output or window.\&
.PP
\fBto\fR [output|window] Specifies the target area of the warp.\&
Default is "output"
.PP
\fBx\fR [center|value] Specifies the horizontal warp position within the
target area.\& "center": Moves the cursor to the horizontal center of the
target area.\& Positive or negative integers warp the cursor to a position
offset by the specified number of pixels from the left or right edge of
the target area, respectively.\& Default is "center"
.PP
\fBy\fR [center|value] Equivalent for the vertical warp position within the
target area.\& Default is "center"
.PP
.RE
\fB\fR
.RS 4
Hide the pointer or stylus cursor.\& The cursor becomes visible again on
following pointer actions, stylus actions or touchpad gestures.\&
Use together with the WarpCursor action to not just hide the cursor but
to additionally move it away to prevent e.\&g.\& hover effects.\&
.PP
.RE
\fB\fR
.br
\fB\fR
.br
\fB\fR
.RS 4
Enable, disable or toggle scroll wheel emulation on cursor motion,
respectively.\& This can be useful for trackball mouses to use the
rotating ball not just for moving the cursor, but also for (mouse wheel)
scrolling.\&
.PP
See also \fB\fR in labwc\-config(5) for fine tuning
the scroll speed.\&
.PP
.RE
\fB\fR
.br
\fB\fR
.br
\fB\fR
.RS 4
Enable, disable or toggle mouse emulation for drawing tablets,
respectively.\&
.PP
.RE
\fB\fR
.RS 4
Toggle the screen magnifier on or off at the last magnification level
used.\&
.PP
.RE
\fB\fR
.RS 4
Minimize all windows in the current workspace so that the desktop
becomes visible.\& On calling the action again the hidden windows are
unminimized, provided that \- since the initial `ShowDesktop` \- (a) no
windows have been unminimized; (b) workspaces have not been switched;
and (c) no new applications have been started.\&
.PP
.RE
\fB\fR
.br
\fB\fR
.RS 4
Increase or decrease the magnification level for the screen magnifier.\&
If the magnifier is currently off, ZoomIn will enable it at the lowest
magnification, equal to (1 + the magnifier increment set in the theme).\&
If the magnifier is on and at the lowest magnification, ZoomOut will
turn it off.\&
.PP
.RE
\fB\fR
.RS 4
If used as the only action for a binding: clear an earlier defined
binding.\&
.PP
.RE
\fB\fR
.RS 4
Toggle visibility of key\-state on\-screen display (OSD).\& Note: This is
for debugging purposes only.\&
.PP
.RE
.SH CONDITIONAL ACTIONS
.PP
Actions that execute other actions.\& Used in keyboard/mouse bindings.\&
.PP
\fB\fR
.RS 4
This action will execute one set of actions if the focused window
matches the criteria, or another if it does not.\&
.PP
The arguments are as follows:
.PP
.nf
.RS 4
.fi
.RE
.PP
\fBquery\fR
.RS 4
Define a query with zero or more conditions.\& All conditions must
be evaluated as true in order for the window to match this
query.\& Multiple queries can be defined.\&
.PP
Pattern matching is done according to glob(7) and is
case\-insensitive.\&
.PP
Conditions are as follows:
.PP
\fBidentifier\fR
.RS 4
XDG shell app_id for Wayland clients, WM_CLASS for
XWayland clients.\&
.PP
.RE
\fBtitle\fR
.RS 4
XDG shell title for Wayland clients, WM_NAME for
XWayland clients.\&
.PP
.RE
\fBtype\fR
.RS 4
Internal heuristics for Wayland clients,
NET_WM_WINDOW_TYPE for XWayland clients.\&
.PP
.RE
\fBshaded\fR [yes|no]
.RS 4
Whether or not the client is rolled up.\&
.PP
.RE
\fBmaximized\fR [both|horizontal|vertical|none]
.RS 4
Whether the client is maximized along both axes, the
horizontal axis only, the vertical axis only, or neither
axis (none).\&
.PP
.RE
\fBiconified\fR [yes|no]
.RS 4
Whether or not the client is iconified.\&
.PP
.RE
\fBfocused\fR [yes|no]
.RS 4
Whether or not the client is focused.\&
.PP
.RE
\fBomnipresent\fR [yes|no]
.RS 4
Whether or not the client is visible on all desktops.\&
.PP
.RE
\fBdesktop\fR
.RS 4
The desktop the client is currently on.\& This can be the
number or name of a desktop, or special relative values
"current", "other", "left", "right", "left\-occupied",
"right\-occupied" or "last".\&
The "left" , "right", "left\-occupied" and
"right\-occupied" directions will not wrap.\&
.PP
.RE
\fBtiled\fR [up|right|down|left|up\-left|up\-right|down\-left|down\-right|center|any]
.RS 4
Whether the client is tiled (snapped) along the
indicated screen edge.\&
.PP
.RE
\fBtiled_region\fR
.RS 4
Whether the client is tiled (snapped) to the indicated
region.\& The indicated region may be a glob.\&
.PP
.RE
\fBdecoration\fR [full|border|none]
.RS 4
Whether the client has full server\-side decorations,
borders only, or no server\-side decorations.\&
.PP
.RE
\fBmonitor\fR [current|left|right|]
.RS 4
Whether the client is on a monitor relative to the to
the currently focused monitor (current, left, or right)
or on a monitor with the supplied .\&
.PP
.RE
This argument is optional.\&
.PP
.RE
\fBprompt\fR
.RS 4
Display a yes/no prompt dialog (labnag by default).\& If '\&yes'\& is
selected, the \fBthen\fR branch will be taken; and similarly with
\&'\&no'\& and \fBelse\fR.\& This argument is optional.\& Note that the syntax
is different to that of Openbox where a prompt element is not
tied to If\-actions but would just be a child of the downstream
action.\& The reason for this difference is increased flexibility
and functionality gained by optionally using an \fBelse\fR branch.\&
.PP
.nf
.RS 4
.fi
.RE
.PP
.RE
\fBthen\fR
.RS 4
A list of actions to be executed if the window matches any
query.\& This argument is optional.\&
.PP
.RE
\fBelse\fR
.RS 4
A list of actions to be executed if the window does not match
any query.\& This argument is optional.\&
.PP
.RE
.RE
\fB\fR
.RS 4
Identical to "If" action, but applies to all windows, not just the
focused one.\&
.PP
The \fBForEach\fR action has another optional \fBnone\fR branch which gets
executed when no window has been matched by the query.\& This allows
for example to implement a run\-or\-raise functionality.\&
.PP
.RE
.SH SEE ALSO
.PP
labwc(1), labwc\-config(5), labwc\-theme(5), glob(7)