<?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>no</adaptiveSync>
    <cycleViewPreview>no</cycleViewPreview>
  </core>

  <!--
    <font><theme> can be defined without an attribute to set all places
  -->
  <theme>
    <name></name>
    <cornerRadius>8</cornerRadius>
    <font place="ActiveWindow"><name>sans</name><size>10</size></font>
    <font place="MenuItem"><name>sans</name><size>10</size></font>
    <font place="OSD"><name>sans</name><size>10</size></font>
  </theme>

  <focus>
    <followMouse>no</followMouse>
    <raiseOnFocus>no</raiseOnFocus>
  </focus>

  <!--
    Set range to 0 to disable window snapping completely
  -->
  <snapping>
    <range>1</range>
    <topMaximize>yes</topMaximize>
  </snapping>

  <!--
    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.
  -->
  <keyboard>
    <repeatRate>25</repeatRate>
    <repeatDelay>600</repeatDelay>
    <keybind key="A-Escape">
      <action name="Exit" />
    </keybind>
    <keybind key="A-Tab">
      <action name="NextWindow" />
    </keybind>
    <keybind key="W-Return">
      <action name="Execute"><command>alacritty</command></action>
    </keybind>
    <keybind key="A-F3">
      <action name="Execute"><command>bemenu-run</command></action>
    </keybind>
    <keybind key="A-F4">
      <action name="Close" />
    </keybind>
    <keybind key="W-a">
      <action name="ToggleMaximize" />
    </keybind>
    <keybind key="A-Left">
      <action name="MoveToEdge"><direction>left</direction></action>
    </keybind>
    <keybind key="A-Right">
      <action name="MoveToEdge"><direction>right</direction></action>
    </keybind>
    <keybind key="A-Up">
      <action name="MoveToEdge"><direction>up</direction></action>
    </keybind>
    <keybind key="A-Down">
      <action name="MoveToEdge"><direction>down</direction></action>
    </keybind>
    <keybind key="W-Left">
      <action name="SnapToEdge"><direction>left</direction></action>
    </keybind>
    <keybind key="W-Right">
      <action name="SnapToEdge"><direction>right</direction></action>
    </keybind>
    <keybind key="W-Up">
      <action name="SnapToEdge"><direction>up</direction></action>
    </keybind>
    <keybind key="W-Down">
      <action name="SnapToEdge"><direction>down</direction></action>
    </keybind>
    <keybind key="A-Space">
      <action name="ShowMenu"><menu>client-menu</menu></action>
    </keybind>
    <keybind key="XF86_AudioLowerVolume">
      <action name="Execute"><command>amixer sset Master 5%-</command></action>
    </keybind>
    <keybind key="XF86_AudioRaiseVolume">
      <action name="Execute"><command>amixer sset Master 5%+</command></action>
    </keybind>
    <keybind key="XF86_AudioMute">
      <action name="Execute"><command>amixer sset Master toggle</command></action>
    </keybind>
    <keybind key="XF86_MonBrightnessUp">
      <action name="Execute"><command>brightnessctl set +10%</command></action>
    </keybind>
    <keybind key="XF86_MonBrightnessDown">
      <action name="Execute"><command>brightnessctl set 10%-</command></action>
    </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"
  -->
  <mouse>

    <!-- time is in ms -->
    <doubleClickTime>500</doubleClickTime>

    <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="Left" action="Drag">
        <action name="Move"/>
      </mousebind>
      <mousebind button="Right" action="Click">
        <action name="Focus" />
        <action name="Raise" />
        <action name="ShowMenu">
          <menu>client-menu</menu>
        </action>
      </mousebind>
      <mousebind button="Left" action="DoubleClick">
        <action name="Focus"/>
        <action name="Raise"/>
        <action name="ToggleMaximize"/>
      </mousebind>
    </context>

    <context name="Maximize">
      <mousebind button="Left" action="Click">
        <action name="Focus"/>
        <action name="Raise"/>
        <action name="ToggleMaximize"/>
      </mousebind>
    </context>

    <context name="WindowMenu">
      <mousebind button="Left" action="Click">
        <action name="ShowMenu">
          <menu>client-menu</menu>
        </action>
      </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</menu></action>
      </mousebind>
      <mousebind button="Right" action="Press">
        <action name="ShowMenu"><menu>root-menu</menu></action>
      </mousebind>
      <mousebind button="Middle" action="Press">
        <action name="ShowMenu"><menu>root-menu</menu></action>
      </mousebind>
    </context>

  </mouse>

  <!--
    The *category* element can be set to touch, 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="">
      <naturalScroll></naturalScroll>
      <leftHanded></leftHanded>
      <pointerSpeed></pointerSpeed>
      <accelProfile></accelProfile>
      <tap>yes</tap>
      <tapButtonMap></tapButtonMap>
      <middleEmulation></middleEmulation>
      <disableWhileTyping></disableWhileTyping>
    </device>
  </libinput>

  <!-- edge strength is in pixels -->
  <resistance>
    <screenEdgeStrength>20</screenEdgeStrength>
  </resistance>

</labwc_config>
