<?xml version="1.0"?> <!-- This file contains all supported config elements & attributes with default values. --> <labwc_config> <core> <decoration>server</decoration> <gap>0</gap> <adaptiveSync>yes</adaptiveSync> <allowTearing>yes</allowTearing> <reuseOutputMode>no</reuseOutputMode> </core> <!-- Where to place new windows --> <placement> <policy>center</policy> </placement> <!-- <font><theme> can be defined without an attribute to set all places --> <theme> <name>Kawaii</name> <cornerRadius>16</cornerRadius> <keepBorder>yes</keepBorder> <font> <name>GohuFont 14 Nerd Font</name> <size>14</size> <slant>normal</slant> <weight>bold</weight> </font> <!--<font place="ActiveWindow"> <name>sans</name> <size>10</size> <slant>normal</slant> <weight>normal</weight> </font> <font place="InactiveWindow"> <name>sans</name> <size>10</size> <slant>normal</slant> <weight>normal</weight> </font> <font place="MenuItem"> <name>sans</name> <size>10</size> <slant>normal</slant> <weight>normal</weight> </font> <font place="OnScreenDisplay"> <name>sans</name> <size>10</size> <slant>normal</slant> <weight>normal</weight> </font> --> </theme> <!-- Just as for window-rules, 'identifier' relates to app_id for native Wayland windows and WM_CLASS for XWayland clients. --> <windowSwitcher show="yes" preview="yes" outlines="yes"> <fields> <!-- <field content="type" width="25%" /> <field content="trimmed_identifier" width="25%" /> --> <field content="identifier" width="25%" /> <field content="title" width="50%" /> </fields> </windowSwitcher> <!-- edge strength is in pixels --> <resistance> <screenEdgeStrength>20</screenEdgeStrength> </resistance> <!-- Show a simple resize and move indicator --> <resize popupShow="Never" /> <focus> <followMouse>yes</followMouse> <followMouseRequiresMovement>yes</followMouseRequiresMovement> <raiseOnFocus>no</raiseOnFocus> </focus> <!-- Set range to 0 to disable window snapping completely --> <snapping> <range>1</range> <topMaximize>yes</topMaximize> </snapping> <!-- Workspaces can be configured like this: <desktops> <popupTime>1000</popupTime> <names> <name>Workspace 1</name> <name>Workspace 2</name> <name>Workspace 3</name> <name>Workspace 4</name> </names> </desktops> Or it can also be configured like this: <desktops number="4" /> popupTime defaults to 1000 so could be left out. Set to 0 to completely disable the workspace OSD. Use GoToDesktop left | right to switch workspaces. Use SendToDesktop left | right to move windows. See man labwc-actions for further information. --> <desktops> <popupTime>1000</popupTime> <names> <name>Default</name> </names> </desktops> <!-- <margin> can be used to reserve space where new/maximized/tiled windows will not be placed. Clients using layer-shell protocol reserve space automatically, so <margin> is only intended for other, specialist cases. If output is left empty, the margin will be applied to all outputs. <margin top="" bottom="" left="" right="" output="" /> --> <!-- Percent based regions based on output usable area, % char is required --> <!-- <regions> <region name="top-left" x="0%" y="0%" height="50%" width="50%" /> <region name="top" x="0%" y="0%" height="50%" width="100%" /> <region name="top-right" x="50%" y="0%" height="50%" width="50%" /> <region name="left" x="0%" y="0%" height="100%" width="50%" /> <region name="center" x="10%" y="10%" height="80%" width="80%" /> <region name="right" x="50%" y="0%" height="100%" width="50%" /> <region name="bottom-left" x="0%" y="50%" height="50%" width="50%" /> <region name="bottom" x="0%" y="50%" height="50%" width="100%" /> <region name="bottom-right" x="50%" y="50%" height="50%" width="50%" /> </regions> --> <!-- Keybind actions are specified in labwc-actions(5) The following keybind modifiers are supported: W - window/super/logo A - alt C - ctrl S - shift Use <keyboard><default /> to load all the default keybinds (those listed below). If the default keybinds are largely what you want, a sensible approach could be to start the <keyboard> section with a <default /> element, and then (re-)define any special binds you need such as launching your favourite terminal or application launcher. See rc.xml for an example. --> <keyboard> <numlock>on</numlock> <layoutScope>global</layoutScope> <repeatRate>40</repeatRate> <repeatDelay>400</repeatDelay> <keybind key="A-Tab"> <action name="NextWindow" /> </keybind> <keybind key="W-Return"> <action name="Execute" command="foot" /> </keybind> <keybind key="W-j"> <action name="Execute" command="firefox" /> </keybind> <keybind key="A-F4"> <action name="Close" /> </keybind> <keybind key="W-f"> <action name="ToggleMaximize" /> </keybind> <keybind key="A-Left"> <action name="MoveToEdge" direction="left" /> </keybind> <keybind key="A-Right"> <action name="MoveToEdge" direction="right" /> </keybind> <keybind key="A-Up"> <action name="MoveToEdge" direction="up" /> </keybind> <keybind key="A-Down"> <action name="MoveToEdge" direction="down" /> </keybind> <keybind key="W-Left"> <action name="SnapToEdge" direction="left" /> </keybind> <keybind key="W-Right"> <action name="SnapToEdge" direction="right" /> </keybind> <keybind key="W-Up"> <action name="SnapToEdge" direction="up" /> </keybind> <keybind key="W-Down"> <action name="SnapToEdge" direction="down" /> </keybind> <keybind key="A-Space"> <action name="ShowMenu" menu="client-menu" /> </keybind> <keybind key="XF86_AudioLowerVolume"> <action name="Execute" command="amixer sset Master 5%-" /> </keybind> <keybind key="XF86_AudioRaiseVolume"> <action name="Execute" command="amixer sset Master 5%+" /> </keybind> <keybind key="XF86_AudioMute"> <action name="Execute" command="amixer sset Master toggle" /> </keybind> <keybind key="XF86_MonBrightnessUp"> <action name="Execute" command="brightnessctl set +10%" /> </keybind> <keybind key="XF86_MonBrightnessDown"> <action name="Execute" command="brightnessctl set 10%-" /> </keybind> <!-- SnapToRegion via W-Numpad --> <!-- <keybind key="W-KP_7"> <action name="SnapToRegion" region="top-left" /> </keybind> <keybind key="W-KP_8"> <action name="SnapToRegion" region="top" /> </keybind> <keybind key="W-KP_9"> <action name="SnapToRegion" region="top-right" /> </keybind> <keybind key="W-KP_4"> <action name="SnapToRegion" region="left" /> </keybind> <keybind key="W-KP_5"> <action name="SnapToRegion" region="center" /> </keybind> <keybind key="W-KP_6"> <action name="SnapToRegion" region="right" /> </keybind> <keybind key="W-KP_1"> <action name="SnapToRegion" region="bottom-left" /> </keybind> <keybind key="W-KP_2"> <action name="SnapToRegion" region="bottom" /> </keybind> <keybind key="W-KP_3"> <action name="SnapToRegion" region="bottom-right" /> </keybind> --> </keyboard> <!-- Multiple <mousebind> can exist within one <context> Multiple <actions> can exist within one <mousebind> Currently, the only openbox-action not supported is "Unshade" Use <mouse><default /> to load all the default mousebinds (those listed below). If the default mousebinds are largely what you want, a sensible approach could be to start the <mouse> section with a <default /> element, and then (re-)define any special binds you need such as launching a custom menu when right-clicking on your desktop. See rc.xml for an example. --> <mouse> <!-- time is in ms --> <doubleClickTime>500</doubleClickTime> <scrollFactor>1.0</scrollFactor> <context name="Frame"> <mousebind button="A-Left" action="Press"> <action name="Focus" /> <action name="Raise" /> </mousebind> <mousebind button="A-Left" action="Drag"> <action name="Move" /> </mousebind> <mousebind button="A-Right" action="Press"> <action name="Focus" /> <action name="Raise" /> </mousebind> <mousebind button="A-Right" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="Top"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="Left"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="Right"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="Bottom"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="TRCorner"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="BRCorner"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="TLCorner"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="BLCorner"> <mousebind button="Left" action="Drag"> <action name="Resize" /> </mousebind> </context> <context name="TitleBar"> <mousebind button="Left" action="Press"> <action name="Focus" /> <action name="Raise" /> </mousebind> <mousebind button="Right" action="Click"> <action name="Focus" /> <action name="Raise" /> </mousebind> <mousebind direction="Up" action="Scroll"> <action name="Unshade" /> <action name="Focus" /> </mousebind> <mousebind direction="Down" action="Scroll"> <action name="Unfocus" /> <action name="Shade" /> </mousebind> </context> <context name="Title"> <mousebind button="Left" action="Drag"> <action name="Move" /> </mousebind> <mousebind button="Left" action="DoubleClick"> <action name="ToggleMaximize" /> </mousebind> <mousebind button="Right" action="Click"> <action name="ShowMenu" menu="client-menu" /> </mousebind> </context> <context name="Maximize"> <mousebind button="Left" action="Click"> <action name="ToggleMaximize" /> </mousebind> <mousebind button="Right" action="Click"> <action name="ToggleMaximize" direction="horizontal" /> </mousebind> <mousebind button="Middle" action="Click"> <action name="ToggleMaximize" direction="vertical" /> </mousebind> </context> <context name="WindowMenu"> <mousebind button="Left" action="Click"> <action name="ShowMenu" menu="client-menu" /> </mousebind> <mousebind button="Right" action="Click"> <action name="ShowMenu" menu="client-menu" /> </mousebind> </context> <context name="Iconify"> <mousebind button="Left" action="Click"> <action name="Iconify" /> </mousebind> </context> <context name="Close"> <mousebind button="Left" action="Click"> <action name="Close" /> </mousebind> </context> <context name="Client"> <mousebind button="Left" action="Press"> <action name="Focus" /> <action name="Raise" /> </mousebind> <mousebind button="Middle" action="Press"> <action name="Focus" /> <action name="Raise" /> </mousebind> <mousebind button="Right" action="Press"> <action name="Focus" /> <action name="Raise" /> </mousebind> </context> <context name="Root"> <mousebind button="Left" action="Press"> <action name="ShowMenu" menu="root-menu" /> </mousebind> <mousebind button="Right" action="Press"> <action name="ShowMenu" menu="root-menu" /> </mousebind> <mousebind button="Middle" action="Press"> <action name="ShowMenu" menu="root-menu" /> </mousebind> <mousebind direction="Up" action="Scroll"> <action name="GoToDesktop" to="left" wrap="yes" /> </mousebind> <mousebind direction="Down" action="Scroll"> <action name="GoToDesktop" to="right" wrap="yes" /> </mousebind> </context> </mouse> <!-- Direct cursor movement to a specified output. If the compositor is running in nested mode, this does not take effect. --> <touch mapToOutput="" /> <!-- The tablet cursor movement can be restricted to a single output. If output is left empty or the output does not exists, the tablet will span all outputs. The tablet orientation can be changed in 90 degree steps, thus *rotate* can be set to [0|90|180|270]. Rotation will be applied after applying tablet area transformation. The active tablet area can be specified by setting the *top*/*left* coordinate (in mm) and/or *width*/*height* (in mm). If width or height are omitted or default (0.0), width/height will be set to the remaining width/height seen from top/left. Tablet buttons emulate regular mouse buttons. The tablet *button* can be set to any of [Tip|Stylus|Stylus2|Stylus3|Pad|Pad2|Pad3|..|Pad9]. Valid *to* mouse buttons are [Left|Right|Middle]. --> <tablet mapToOutput="" rotate="0"> <!-- Active area dimensions are in mm --> <area top="0.0" left="0.0" width="0.0" height="0.0" /> <map button="Tip" to="Left" /> <map button="Stylus" to="Right" /> <map button="Stylus2" to="Middle" /> </tablet> <!-- The *category* attribute is optional and can be set to touch, touchpad, non-touch, default or the name of a device. You can obtain device names by running *libinput list-devices* as root or member of the input group. Tap is set to *yes* be default. All others are left blank in order to use device defaults. All values are [yes|no] except for: - pointerSpeed [-1.0 to 1.0] - accelProfile [flat|adaptive] - tapButtonMap [lrm|lmr] --> <libinput> <device category="default"> <naturalScroll></naturalScroll> <leftHanded></leftHanded> <pointerSpeed></pointerSpeed> <accelProfile></accelProfile> <tap>yes</tap> <tapButtonMap></tapButtonMap> <tapAndDrag></tapAndDrag> <dragLock></dragLock> <middleEmulation></middleEmulation> <disableWhileTyping></disableWhileTyping> </device> </libinput> <!-- # Window Rules # - Criteria can consist of 'identifier' or 'title' or both (in which # case AND logic is used). # - 'identifier' relates to app_id for native Wayland windows and # WM_CLASS for XWayland clients. # - Criteria can also contain `matchOnce="true"` meaning that the rule # must only apply to the first instance of the window with that # particular 'identifier' or 'title'. # - Matching against patterns with '*' (wildcard) and '?' (joker) is # supported. Pattern matching is case-insensitive. <windowRules> <windowRule identifier="*"><action name="Maximize"/></windowRule> <windowRule identifier="foo" serverDecoration="yes"/> <windowRule title="bar" serverDecoration="yes"/> <windowRule identifier="baz" title="quax" serverDecoration="yes"/> </windowRules> # Example below for `lxqt-panel` and `pcmanfm-qt \-\-desktop` # where 'matchOnce' is used to avoid applying rule to the panel # configuration window with the same 'app_id'. <windowRules> <windowRule identifier="lxqt-panel" matchOnce="true"> <skipTaskbar>yes</skipTaskbar> <action name="MoveTo" x="0" y="0" /> <action name="ToggleAlwaysOnTop"/> </windowRule> <windowRule title="pcmanfm-desktop*"> <skipTaskbar>yes</skipTaskbar> <skipWindowSwitcher>yes</skipWindowSwitcher> <fixedPosition>yes</fixedPosition> <action name="MoveTo" x="0" y="0" /> <action name="ToggleAlwaysOnBottom"/> </windowRule> <windowRule identifier="org.qutebrowser.qutebrowser"> <action name="ResizeTo" width="1024" y="800" /> <action name="AutoPlace"/> </windowRule> </windowRules> --> </labwc_config>