]> Freerunner's - dotfiles.git/commitdiff
labwc: initial config
authorAndre Ramnitz <andre.ramnitz@mail.de>
Fri, 29 May 2026 12:46:36 +0000 (14:46 +0200)
committerAndre Ramnitz <andre.ramnitz@mail.de>
Sun, 26 Jul 2026 14:27:41 +0000 (16:27 +0200)
dot-config/labwc/environment [new file with mode: 0644]
dot-config/labwc/rc.xml [new file with mode: 0644]

diff --git a/dot-config/labwc/environment b/dot-config/labwc/environment
new file mode 100644 (file)
index 0000000..a512977
--- /dev/null
@@ -0,0 +1,3 @@
+XCURSOR_THEME=Bibata-Original-Amber
+XCURSOR_SIZE=32
+XKB_DEFAULT_LAYOUT=us
diff --git a/dot-config/labwc/rc.xml b/dot-config/labwc/rc.xml
new file mode 100644 (file)
index 0000000..197870e
--- /dev/null
@@ -0,0 +1,765 @@
+<?xml version="1.0"?>
+<!--
+  This file contains all supported config elements & attributes with
+  default values.
+
+  Values for [yes|no] can be replaced by [true|false], [on|off] or [1|0].
+-->
+<labwc_config>
+  <core>
+    <decoration>server</decoration>
+    <gap>10</gap>
+    <adaptiveSync>fullscreen</adaptiveSync>
+    <allowTearing>yes</allowTearing>
+    <autoEnableOutputs>yes</autoEnableOutputs>
+    <hdr>no</hdr>
+    <reuseOutputMode>no</reuseOutputMode>
+    <xwaylandPersistence>no</xwaylandPersistence>
+    <primarySelection>yes</primarySelection>
+    <!--
+      # See labwc-config(5) for details
+      <promptCommand></promptCommand>
+    -->
+  </core>
+  <placement>
+    <policy>automatic</policy>
+    <!--
+      When <placement><policy> is "cascade", the offset for cascading new
+      windows can be overwritten like this:
+      <cascadeOffset x="40" y="30" />
+    -->
+  </placement>
+  <!-- <font><theme> can be defined without an attribute to set all places -->
+  <theme>
+    <!-- <name>Numix</name> -->
+    <!-- <icon>breeze</icon> -->
+    <fallbackAppIcon>labwc</fallbackAppIcon>
+    <titlebar>
+      <layout>icon:iconify,max,close</layout>
+      <showTitle>yes</showTitle>
+    </titlebar>
+    <cornerRadius>10</cornerRadius>
+    <keepBorder>yes</keepBorder>
+    <maximizedDecoration>titlebar</maximizedDecoration>
+    <dropShadows>yes</dropShadows>
+    <dropShadowsOnTiled>no</dropShadowsOnTiled>
+    <font place="ActiveWindow">
+      <name>ZedMono NFM</name>
+      <size>11</size>
+      <slant>normal</slant>
+      <weight>normal</weight>
+    </font>
+    <font place="InactiveWindow">
+      <name>ZedMono NFM</name>
+      <size>11</size>
+      <slant>normal</slant>
+      <weight>normal</weight>
+    </font>
+    <font place="MenuHeader">
+      <name>Noto Sans</name>
+      <size>11</size>
+      <slant>normal</slant>
+      <weight>normal</weight>
+    </font>
+    <font place="MenuItem">
+      <name>Noto Sans</name>
+      <size>11</size>
+      <slant>normal</slant>
+      <weight>normal</weight>
+    </font>
+    <font place="OnScreenDisplay">
+      <name>Noto Sans</name>
+      <size>11</size>
+      <slant>normal</slant>
+      <weight>normal</weight>
+    </font>
+    <name>Adwaita</name>
+    <icon>breeze-dark</icon>
+  </theme>
+  <windowSwitcher preview="yes" outlines="yes" unshade="yes">
+    <osd show="yes" style="classic" output="all" thumbnailLabelFormat="%T"/>
+    <fields>
+      <field content="icon" width="5%"/>
+      <field content="desktop_entry_name" width="30%"/>
+      <field content="title" width="65%"/>
+      <!--
+        Just as for window-rules, you can use 'identifier' or
+        'trimmed_identifier' to show the app_id for native wayland clients or
+        WM_CLASS for XWayland clients.
+
+        <field content="trimmed_identifier" width="65%" />
+      -->
+    </fields>
+  </windowSwitcher>
+  <!--
+    Many other kinds of content are supported in the window switcher like below.
+    Some contents are fixed-length and others are variable-length.
+    See "man 5 labwc-config" for details.
+
+    <windowSwitcher preview="no" outlines="no">
+      <osd show="yes" />
+      <fields>
+        <field content="workspace" width="5%" />
+        <field content="state" width="3%" />
+        <field content="type_short" width="3%" />
+        <field content="output" width="9%" />
+        <field content="identifier" width="30%" />
+        <field content="title" width="50%" />
+      </fields>
+    </windowSwitcher>
+
+    custom format - (introduced in 0.7.2)
+    It allows one to replace all the above "fields" with one line, using a
+    printf style format. For field explanations, see "man 5 labwc-config".
+
+    The example below would print "foobar", then type of window (wayland, X),
+    then state of window (M/m/F), then output (shows if more than 1 active),
+    then workspace name, then identifier/app-id, then the window title.
+    It uses 100% of OSD window width.
+
+    <windowSwitcher preview="no" outlines="no">
+      <osd show="yes" />
+      <fields>
+        <field content="custom" format="foobar %b %3s %-10o %-20W %-10i %t" width="100%" />
+      </fields>
+    </windowSwitcher>
+  -->
+  <!-- edge strength is in pixels -->
+  <resistance>
+    <screenEdgeStrength>50</screenEdgeStrength>
+    <windowEdgeStrength>30</windowEdgeStrength>
+    <!-- resistance for maximized/tiled windows -->
+    <unSnapThreshold>20</unSnapThreshold>
+    <!-- resistance for vertically/horizontally maximized windows -->
+    <unMaximizeThreshold>150</unMaximizeThreshold>
+  </resistance>
+  <resize>
+    <!-- Show a simple resize and move indicator -->
+    <popupShow>nonpixel</popupShow>
+    <!-- Let client redraw its contents while resizing -->
+    <drawContents>yes</drawContents>
+    <!-- Borders are effectively 8 pixels wide regardless of visual appearance -->
+    <minimumArea>8</minimumArea>
+    <!--
+      Set cornerRange to a positive value to increase the size of corner
+      regions for mouse actions and diagonal window resizing. When omitted,
+      the default size of the corner region is half of the titlebar height.
+
+      <cornerRange>8</cornerRange>
+    -->
+    <cornerRange>10</cornerRange>
+  </resize>
+  <focus>
+    <followMouse>yes</followMouse>
+    <followMouseRequiresMovement>yes</followMouseRequiresMovement>
+    <raiseOnFocus>no</raiseOnFocus>
+    <!-- Delay (ms) before applying raise-on-focus. 0 = immediate. -->
+    <raiseOnFocusDelay>0</raiseOnFocusDelay>
+  </focus>
+  <snapping>
+    <!-- Set inner and outer range to 0 to disable window snapping completely -->
+    <range inner="20" outer="20"/>
+    <cornerRange>50</cornerRange>
+    <overlay enabled="yes">
+      <delay inner="500" outer="500"/>
+    </overlay>
+    <topMaximize>yes</topMaximize>
+    <notifyClient>always</notifyClient>
+  </snapping>
+  <desktops>
+    <desktops number="6"/>
+    <popupTime>500</popupTime>
+    <prefix>ws</prefix>
+  </desktops>
+  <!--
+    Workspaces can be configured like this:
+    <desktops>
+      <popupTime>1000</popupTime>
+      <initial>Workspace 1</initial>
+      <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" />
+
+    Or like this:
+    <desktops>
+      <popupTime>500</popupTime>
+      <number>5</number>
+      <prefix>ws</prefix>
+    </desktops>
+
+    Or:
+    <desktops number="4" popupTime="500" prefix="ws" />
+
+    popupTime defaults to 1000 so could be left out.
+    Set to 0 to completely disable the workspace OSD.
+
+    prefix defaults to "Workspace" when using number instead of names.
+
+    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 not provided, the margin will be applied to all outputs.
+
+    <margin top="10" bottom="10" left="10" right="10" output="HDMI-A-1" />
+  -->
+  <!-- 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 is not set by default
+      <numlock>on|off</numlock>
+    -->
+    <layoutScope>global</layoutScope>
+    <repeatRate>25</repeatRate>
+    <repeatDelay>600</repeatDelay>
+    <keybind key="A-Tab">
+      <action name="NextWindow"/>
+    </keybind>
+    <keybind key="A-S-Tab">
+      <action name="PreviousWindow"/>
+    </keybind>
+    <keybind key="W-Return">
+      <action name="Execute" command="lab-sensible-terminal"/>
+    </keybind>
+    <keybind key="W-a">
+      <action name="Raise"/>
+    </keybind>
+    <keybind key="W-c">
+      <action name="Execute" command="qs -c noctalia-shell ipc call launcher clipboard"/>
+    </keybind>
+    <keybind key="W-d">
+      <action name="Execute" command="qs -c noctalia-shell ipc call launcher toggle"/>
+    </keybind>
+    <keybind key="W-e">
+      <action name="Execute" command="foot -a lf lf"/>
+    </keybind>
+    <keybind key="W-S-e">
+      <action name="Execute" command="env XDG_MENU_PREFIX=plasma- dolphin"/>
+    </keybind>
+    <keybind key="A-F4">
+      <action name="Close"/>
+    </keybind>
+    <keybind key="W-f">
+      <action name="ToggleMaximize"/>
+    </keybind>
+    <keybind key="W-i">
+      <action name="Iconify"/>
+    </keybind>
+    <keybind key="W-S-q">
+      <action name="Close"/>
+    </keybind>
+    <keybind key="W-S-f">
+      <action name="ToggleShowDesktop"/>
+    </keybind>
+    <keybind key="W-v">
+      <action name="ToggleAlwaysOnTop"/>
+    </keybind>
+    <keybind key="W-S-v">
+      <action name="ToggleAlwaysOnBottom"/>
+    </keybind>
+    <keybind key="W-w">
+      <action name="qs -c noctalia-shell ipc call toast dismiss"/>
+    </keybind>
+    <keybind key="W-S-w">
+      <action name="qs -c noctalia-shell ipc call bar toggle"/>
+    </keybind>
+    <keybind key="W-grave">
+      <action name="Execute" command="qs -c noctalia-shell ipc call launcher emoji"/>
+    </keybind>
+    <keybind key="W-Left">
+      <action name="SnapToEdge" direction="left" combine="yes"/>
+    </keybind>
+    <keybind key="W-Right">
+      <action name="SnapToEdge" direction="right" combine="yes"/>
+    </keybind>
+    <keybind key="W-Up">
+      <action name="SnapToEdge" direction="up" combine="yes"/>
+    </keybind>
+    <keybind key="W-Down">
+      <action name="SnapToEdge" direction="down" combine="yes"/>
+    </keybind>
+    <keybind key="A-Space">
+      <action name="ShowMenu" menu="client-menu" atCursor="no"/>
+    </keybind>
+    <keybind key="XF86AudioLowerVolume">
+      <action name="Execute" command="pactl set-sink-volume @DEFAULT_SINK@ -5%"/>
+    </keybind>
+    <keybind key="XF86AudioRaiseVolume">
+      <action name="Execute" command="pactl set-sink-volume @DEFAULT_SINK@ +5%"/>
+    </keybind>
+    <keybind key="XF86AudioMute">
+      <action name="Execute" command="pactl set-sink-mute @DEFAULT_SINK@ toggle"/>
+    </keybind>
+    <keybind key="XF86MonBrightnessUp">
+      <action name="Execute" command="brightnessctl set +10%"/>
+    </keybind>
+    <keybind key="XF86MonBrightnessDown">
+      <action name="Execute" command="brightnessctl set 10%-"/>
+    </keybind>
+    <keybind key="W-1">
+      <action name="GoToDesktop" to="1" wrap="no"/>
+    </keybind>
+    <keybind key="W-2">
+      <action name="GoToDesktop" to="2" wrap="no"/>
+    </keybind>
+    <keybind key="W-3">
+      <action name="GoToDesktop" to="3" wrap="no"/>
+    </keybind>
+    <keybind key="W-4">
+      <action name="GoToDesktop" to="4" wrap="no"/>
+    </keybind>
+    <keybind key="W-5">
+      <action name="GoToDesktop" to="5" wrap="no"/>
+    </keybind>
+    <keybind key="W-6">
+      <action name="GoToDesktop" to="6" wrap="no"/>
+    </keybind>
+    <keybind key="W-7">
+      <action name="GoToDesktop" to="7" wrap="no"/>
+    </keybind>
+    <keybind key="W-8">
+      <action name="GoToDesktop" to="8" wrap="no"/>
+    </keybind>
+    <keybind key="W-9">
+      <action name="GoToDesktop" to="9" wrap="no"/>
+    </keybind>
+    <keybind key="W-0">
+      <action name="GoToDesktop" to="10" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-1">
+      <action name="SendToDesktop" to="1" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-2">
+      <action name="SendToDesktop" to="2" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-3">
+      <action name="SendToDesktop" to="3" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-4">
+      <action name="SendToDesktop" to="4" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-5">
+      <action name="SendToDesktop" to="5" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-6">
+      <action name="SendToDesktop" to="6" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-7">
+      <action name="SendToDesktop" to="7" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-8">
+      <action name="SendToDesktop" to="8" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-9">
+      <action name="SendToDesktop" to="9" wrap="no"/>
+    </keybind>
+    <keybind key="W-S-0">
+      <action name="SendToDesktop" to="10" wrap="no"/>
+    </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>
+  -->
+    <!-- keybind for client-list-combined-menu - will center in middle of screen -->
+    <!--
+    <keybind key="W-Space">
+      <action name="ShowMenu" menu="client-list-combined-menu" />
+      <position>
+        <x>center</x>
+        <y>center</y>
+      </position>
+    </keybind>
+  -->
+  </keyboard>
+  <!--
+    Multiple <mousebind> can exist within one <context>
+    Multiple <actions> can exist within one <mousebind>
+
+    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>400</doubleClickTime>
+    <context name="Frame">
+      <mousebind button="W-Left" action="Press">
+        <action name="Focus"/>
+        <action name="Raise"/>
+      </mousebind>
+      <mousebind button="W-Left" action="Drag">
+        <action name="Move"/>
+      </mousebind>
+      <mousebind button="W-Right" action="Press">
+        <action name="Focus"/>
+        <action name="Raise"/>
+      </mousebind>
+      <mousebind button="W-Right" action="Drag">
+        <action name="Resize"/>
+      </mousebind>
+    </context>
+    <context name="Border">
+      <mousebind button="Left" action="Press">
+        <action name="Focus"/>
+        <action name="Raise"/>
+      </mousebind>
+      <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" atCursor="no"/>
+      </mousebind>
+      <mousebind button="Right" action="Click">
+        <action name="ShowMenu" menu="client-menu" atCursor="no"/>
+      </mousebind>
+    </context>
+    <context name="Icon">
+      <mousebind button="Left" action="Click">
+        <action name="ShowMenu" menu="client-menu" atCursor="no"/>
+      </mousebind>
+      <mousebind button="Right" action="Click">
+        <action name="ShowMenu" menu="client-menu" atCursor="no"/>
+      </mousebind>
+    </context>
+    <context name="Shade">
+      <mousebind button="Left" action="Click">
+        <action name="ToggleShade"/>
+      </mousebind>
+    </context>
+    <context name="AllDesktops">
+      <mousebind button="Left" action="Click">
+        <action name="ToggleOmnipresent"/>
+      </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"/>
+        <!-- openbox default, swap with above line to activate -->
+        <!-- <action name="ShowMenu" menu="client-list-combined-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>
+  <!--
+    A touch configuration can be bound to a specific device. If device
+    name is left empty, the touch configuration applies to all touch
+    devices or functions as a fallback. Multiple touch configurations
+    can exist.
+    See the libinput device section for obtaining the device names.
+
+    Direct cursor movement to a specified output. If the compositor is
+    running in nested mode, this does not take effect.
+
+    If mouseEmulation is enabled, all touch up/down/motion events are
+    translated to mouse button and motion events.
+  -->
+  <touch>
+    <!-- <deviceName>ELAN2514:00 04F3:2AF1<deviceName> -->
+    <!-- <mapToOutput>HDMI-A-1</mapToOutput> -->
+    <mouseEmulation>no</mouseEmulation>
+  </touch>
+  <!--
+    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.
+
+    The tablet can be forced to always use mouse emulation. This prevents
+    tablet specific restrictions, e.g. no support for drag&drop, but also
+    omits tablet specific features like reporting pen pressure.
+
+    Pen buttons emulate regular mouse buttons. The pen *button* can be any
+    of [Stylus|Stylus2|Stylus3] and can be mapped to mouse buttons
+    [Right|Middle|Side]. Tablet pad buttons [Pad|Pad2|Pad3|..|Pad9] also
+    emulate regular mouse buttons and can be mapped to any mouse button.
+    When using mouse emulation, the pen tip [tip] and the stylus buttons
+    can be set to any available mouse button [Left|Right|Middle|..|Task].
+  -->
+  <tablet rotate="0" mouseEmulation="no">
+    <!-- <mapToOutput>HDMI-A-1</mapToOutput> -->
+    <!-- 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>
+  <!--
+    All tablet tools, except of type mouse and lens, use absolute
+    positioning by default. The *motion* attribute allows to set tools
+    to relative motion instead. When using relative motion,
+    *relativeMotionSensitivity* controls the speed of the cursor. Using
+    a value lower than 1.0 decreases the speed, using a value greater than
+    1.0 increases the speed of the cursor.
+    The pressure range of a tablet tool can be controlled by adjusting
+    *minPressure* and *maxPressure*.
+  -->
+  <tabletTool motion="absolute" relativeMotionSensitivity="1.0" minPressure="0.0" maxPressure="1.0"/>
+  <!--
+    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* by 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]
+      - clickMethod [none|buttonAreas|clickfinger]
+      - scrollMethod [twoFinger|edge|onbutton|none]
+      - sendEventsMode [yes|no|disabledOnExternalMouse]
+      - calibrationMatrix [six float values split by space]
+      - scrollFactor [float]
+
+    The following <libinput>...</libinput> block may not be complete for
+    your requirements. Default values are device specific. Only set an option
+    if you require to override the default. Valid values must be inserted.
+
+  -->
+  <libinput>
+    <device category="default">
+      <!-- <naturalScroll>no</naturalScroll> -->
+      <!-- <leftHanded>no</leftHanded> -->
+      <!-- <pointerSpeed>0.0</pointerSpeed> -->
+      <!-- <accelProfile>adaptive</accelProfile> -->
+      <tap>yes</tap>
+      <!-- <tapButtonMap>lrm</tapButtonMap> -->
+      <!-- <tapAndDrag>yes</tapAndDrag> -->
+      <!-- <dragLock>yes</dragLock> -->
+      <!-- <threeFingerDrag>yes</threeFingerDrag> -->
+      <!-- <middleEmulation>no</middleEmulation> -->
+      <!-- <disableWhileTyping>yes</disableWhileTyping> -->
+      <!-- <clickMethod>buttonAreas</clickMethod> -->
+      <!-- <scrollMethod>twofinger</scrollMethod> -->
+      <!-- <scrollButton>274</scrollButton> -->
+      <!-- <sendEventsMode>yes</sendEventsMode> -->
+      <!-- <calibrationMatrix>1 0 0 0 1 0</calibrationMatrix> -->
+      <scrollFactor>1.0</scrollFactor>
+    </device>
+  </libinput>
+  <!--
+    # Window Rules
+    #   - Criteria can consist of 'identifier', 'title', 'sandboxEngine' or
+    #     'sandboxAppId'. AND logic is used when multiple options are specified.
+    #   - '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 is case-insensitive and is performed using shell wildcard
+    #     patterns (see glob(7)) so '\*' (not between brackets) matches any
+    #     string and '?' matches any single character.
+
+    <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" height="800" />
+        <action name="AutoPlace" />
+      </windowRule>
+    </windowRules>
+  -->
+  <menu>
+    <ignoreButtonReleasePeriod>250</ignoreButtonReleasePeriod>
+    <showIcons>yes</showIcons>
+  </menu>
+  <!--
+    Magnifier settings
+    'width' sets the width in pixels of the magnifier window.
+    'height' sets the height in pixels of the magnifier window.
+    'initScale' sets the initial magnification factor at boot.
+    'increment' sets the amount by which the magnification factor
+      changes when 'ZoomIn' or 'ZoomOut' are called.
+    'useFilter' sets whether to use a bilinear filter on the magnified
+      output or simply to take nearest pixel.
+  -->
+  <magnifier>
+    <width>400</width>
+    <height>400</height>
+    <initScale>2.0</initScale>
+    <increment>0.2</increment>
+    <useFilter>yes</useFilter>
+  </magnifier>
+</labwc_config>