initial commit

This commit is contained in:
Daniel Napora 2024-12-25 21:38:12 +01:00
commit e74305ac15
18 changed files with 2108 additions and 0 deletions

3
README.md Normal file
View File

@ -0,0 +1,3 @@
## Mabox file for Labwc
Experimental

2
bin/mabox-labwc Normal file
View File

@ -0,0 +1,2 @@
#!/bin/bash
labwc -C $HOME/.config/mabox-labwc/

11
config/labwc/README Normal file
View File

@ -0,0 +1,11 @@
Config layout for ~/.config/labwc/
- autostart
- environment
- menu.xml
- rc.xml
- shutdown
- themerc-override
- xinitrc
See `man labwc-config and `man labwc-theme` for further details.

34
config/labwc/autostart Normal file
View File

@ -0,0 +1,34 @@
# Example autostart file
# Set background color.
swaybg -c '#113344' >/dev/null 2>&1 &
# Configure output directives such as mode, position, scale and transform.
# Use wlr-randr to get your output names
# Example ~/.config/kanshi/config below:
# profile {
# output HDMI-A-1 position 1366,0
# output eDP-1 position 0,0
# }
#kanshi >/dev/null 2>&1 &
# Launch a panel such as yambar or waybar.
waybar >/dev/null 2>&1 &
# Enable notifications. Typically GNOME/KDE application notifications go
# through the org.freedesktop.Notifications D-Bus API and require a client such
# as mako to function correctly. Thunderbird is an example of this.
mako >/dev/null 2>&1 &
# Lock screen after 5 minutes; turn off display after another 5 minutes.
#
# Note that in the context of idle system power management, it is *NOT* a good
# idea to turn off displays by 'disabling outputs' for example by
# `wlr-randr --output <whatever> --off` because this re-arranges views
# (since a837fef). Instead use a wlr-output-power-management client such as
# https://git.sr.ht/~leon_plickat/wlopm
swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'wlopm --off \*' \
resume 'wlopm --on \*' \
before-sleep 'swaylock -f -c 000000' >/dev/null 2>&1 &

77
config/labwc/environment Normal file
View File

@ -0,0 +1,77 @@
##
## Example ~/.config/labwc/environment file.
## Uncomment lines starting with one '#' to suit your needs.
##
##
## Use the XKB_DEFAULT_LAYOUT variable to set the keyboard layout. For example
## to start with Swedish keyboard layout set it to 'se'. If you are unsure what
## your country code is, refer to the layout section of:
## /usr/share/X11/xkb/rules/evdev.lst
##
## Multiple keyboard layouts can be set by comma-separating the country codes.
## If a variant layout is needed, the syntax is layout(variant)
## If multiple layouts are used, specify the toggle-keybind using
## XKB_DEFAULT_OPTIONS as show below.
##
## For further details, see xkeyboard-config(7)
##
# XKB_DEFAULT_LAYOUT=se
# XKB_DEFAULT_LAYOUT=se,us(intl)
# XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle
# XKB_DEFAULT_OPTIONS=grp:shift_caps_toggle
##
## Set cursor theme and size. Find system icons themes with:
## `find /usr/share/icons/ -type d -name "cursors"`
##
# XCURSOR_THEME=breeze_cursors
# XCURSOR_THEME=capitaine-cursors
# XCURSOR_SIZE=24
##
## Disable hardware cursors. Most users would not want to do this, but if you
## are experiencing issues with disappearing cursors, this might fix it.
##
# WLR_NO_HARDWARE_CURSORS=1
##
## In order for labwc to work out of the box, the environment variable below
## is set to "1" by default to avoid menus with incorrect offset and blank
## windows with Java applications such as JetBrains and Intellij Idea.
## See https://github.com/swaywm/sway/issues/595
## labwc will not override any already set environment variables, so if you for
## some reason do not want this, then just set it to "0" (not recommended, but
## mentioned here for completeness).
##
# _JAVA_AWT_WM_NONREPARENTING=0
##
## This allows xdg-desktop-portal-wlr to function (e.g. for screen-recording).
## It is automatically set to "labwc:wlroots" by labwc though, so it is only
## included here for completeness. Again, labwc will not over-write an
## already set environment variable, so if you need it set to something else,
## then uncomment and adjust.
##
# XDG_CURRENT_DESKTOP=labwc:wlroots
##
## This causes a virtual output to be created automatically whenever there
## are no outputs around. This helps for cases like wayvnc so there is always
## an output available to connect to. The name can be chosen freely but there
## must be no duplicate output names, for this reason using VIRTUAL-x or a
## physical connector name like HDMI-A-1 is not recommended as wlroots may
## want to create outputs with those names later on which would then fail.
##
## Using an output name that starts with NOOP- has the additional benefit
## that wayvnc will detect it being a virtual output and allow clients to
## resize the output to match the client resolution.
##
# LABWC_FALLBACK_OUTPUT=NOOP-fallback

96
config/labwc/menu.xml Normal file
View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<openbox_menu>
<!-- Note: for localization support of menu items "client-menu" has to be removed here -->
<menu id="client-menu">
<item label="Minimize">
<action name="Iconify" />
</item>
<item label="Maximize">
<action name="ToggleMaximize" />
</item>
<item label="Fullscreen">
<action name="ToggleFullscreen" />
</item>
<item label="Roll Up/Down">
<action name="ToggleShade" />
</item>
<item label="Decorations">
<action name="ToggleDecorations" />
</item>
<item label="Always on Top">
<action name="ToggleAlwaysOnTop" />
</item>
<!--
Any menu with the id "workspaces" will be hidden
if there is only a single workspace available.
-->
<menu id="workspaces" label="Workspace">
<item label="Move Left">
<action name="SendToDesktop" to="left" />
</item>
<item label="Move Right">
<action name="SendToDesktop" to="right" />
</item>
<separator />
<item label="Always on Visible Workspace">
<action name="ToggleOmnipresent" />
</item>
</menu>
<!--
openbox default workspace selector
to use replace above workspace menu with the example below
the label is required, but you can change the text.
<menu id="client-send-to-menu" label="Send to..." />
-->
<item label="Close">
<action name="Close" />
</item>
</menu>
<menu id="root-menu">
<!-- Make client-list-combined-menu a submenu of root-menu
You must supply a label or it will not appear in root-menu -->
<!--
<menu id="client-list-combined-menu" label="Running..." />
-->
<item label="File Manager">
<action name="Execute" command="pcmanfm" />
</item>
<item label="Web browser">
<action name="Execute" command="firefox" />
</item>
<item label="Terminal">
<action name="Execute" command="foot" />
</item>
<item label="Labwc Tweaks">
<action name="Execute" command="labwc-tweaks" />
</item>
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<item label="Exit">
<action name="Exit" />
</item>
<item label="Poweroff">
<action name="Execute" command="systemctl -i poweroff" />
</item>
</menu>
<menu id="some-custom-menu">
<!--
Creates menu title.
To create an empty header with no text,
set label=" ", not label=""
-->
<separator label="custom menu" />
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<item label="Exit">
<action name="Exit" />
</item>
</menu>
</openbox_menu>

41
config/labwc/rc.xml Normal file
View File

@ -0,0 +1,41 @@
<?xml version="1.0"?>
<!--
This is a very simple config file with many options missing. For a complete
set of options with comments, see docs/rc.xml.all
-->
<labwc_config>
<theme>
<name></name>
<cornerRadius>8</cornerRadius>
<font name="sans" size="10" />
</theme>
<keyboard>
<default />
<!-- Use a different terminal emulator -->
<keybind key="W-Return">
<action name="Execute" command="foot" />
</keybind>
<!--
Remove a previously defined keybind
A shorter alternative is <keybind key="W-F4" />
-->
<keybind key="W-F4">
<action name="None" />
</keybind>
</keyboard>
<mouse>
<default />
<!-- Show a custom menu on desktop right click -->
<context name="Root">
<mousebind button="Right" action="Press">
<action name="ShowMenu" menu="some-custom-menu" />
</mousebind>
</context>
</mouse>
</labwc_config>

691
config/labwc/rc.xml.all Normal file
View File

@ -0,0 +1,691 @@
<?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>
<allowTearing>no</allowTearing>
<reuseOutputMode>no</reuseOutputMode>
<xwaylandPersistence>yes</xwaylandPersistence>
</core>
<placement>
<policy>cascade</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></name>
<icon></icon>
<titlebar>
<layout>icon:iconify,max,close</layout>
<showTitle>yes</showTitle>
</titlebar>
<cornerRadius>8</cornerRadius>
<keepBorder>yes</keepBorder>
<dropShadows>no</dropShadows>
<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="MenuHeader">
<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" allWorkspaces="no">
<fields>
<field content="type" width="25%" />
<field content="trimmed_identifier" width="25%" />
<!-- <field content="identifier" width="25%" /> -->
<field content="title" width="50%" />
</fields>
</windowSwitcher>
<!--
When using all workspaces option of window switcher, there are extra fields
that can be used, workspace (variable length), state (single space),
type_short (3 spaces), output (variable length), and can be set up
like this. Note: output only shows if more than one output available.
<windowSwitcher show="yes" preview="no" outlines="no" allWorkspaces="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, "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.
Uses 100% of OSD window width.
<windowSwitcher show="yes" preview="no" outlines="no" allWorkspaces="yes">
<fields>
<field content="custom" format="foobar %b %3s %-10o %-20W %-10i %t" width="100%" />
</fields>
</windowSwitcher>
-->
<!-- edge strength is in pixels -->
<resistance>
<screenEdgeStrength>20</screenEdgeStrength>
<windowEdgeStrength>20</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>Never</popupShow>
<!-- Let client redraw its contents while resizing -->
<drawContents>yes</drawContents>
</resize>
<focus>
<followMouse>no</followMouse>
<followMouseRequiresMovement>yes</followMouseRequiresMovement>
<raiseOnFocus>no</raiseOnFocus>
</focus>
<snapping>
<!-- Set range to 0 to disable window snapping completely -->
<range>1</range>
<overlay enabled="yes">
<delay inner="500" outer="500" />
</overlay>
<topMaximize>yes</topMaximize>
<notifyClient>always</notifyClient>
</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" />
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 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>25</repeatRate>
<repeatDelay>600</repeatDelay>
<keybind key="A-Tab">
<action name="NextWindow" />
</keybind>
<keybind key="W-Return">
<action name="Execute" command="foot" />
</keybind>
<keybind key="A-F3">
<action name="Execute" command="bemenu-run" />
</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" />
</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" atCursor="no" />
</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>
-->
<!-- 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>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="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="" mapToOutput="" mouseEmulation="no"/>
<!--
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 mapToOutput="" rotate="0" mouseEmulation="no">
<!-- 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.
-->
<tabletTool motion="absolute" relativeMotionSensitivity="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]
- sendEventsMode [yes|no|disabledOnExternalMouse]
- calibrationMatrix [six float values split by space]
- scrollFactor [float]
-->
<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>
<clickMethod></clickMethod>
<sendEventsMode></sendEventsMode>
<calibrationMatrix></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>
</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>true</useFilter>
</magnifier>
</labwc_config>

4
config/labwc/shutdown Normal file
View File

@ -0,0 +1,4 @@
# Example shutdown file
# This file is executed as a shell script when labwc is preparing to terminate itself.
# For further details see labwc-config(5).

115
config/labwc/themerc Normal file
View File

@ -0,0 +1,115 @@
# This file contains all themerc options with default values
#
# System-wide and local themes can be overridden by creating a copy of this
# file and renaming it to $HOME/.config/labwc/themerc-override. Be careful
# though - if you only want to override a small number of specific options,
# make sure all other lines are commented out or deleted.
# general
border.width: 1
#
# The global padding.{width,height} of openbox are not supported because
# the default labwc button geometry deviates from that of openbox
#
window.titlebar.padding.width: 0
window.titlebar.padding.height: 0
# window border
window.active.border.color: #aaaaaa
window.inactive.border.color: #aaaaaa
# ToggleKeybinds status indicator
window.active.indicator.toggled-keybind.color: #ff0000
# window titlebar background
window.active.title.bg.color: #e1dedb
window.inactive.title.bg.color: #f6f5f4
# window titlebar text
window.active.label.text.color: #000000
window.inactive.label.text.color: #000000
window.label.text.justify: center
# window button width and spacing
window.button.width: 26
window.button.height: 26
window.button.spacing: 0
# window button hover effect
window.button.hover.bg.corner-radius: 0
# window buttons
window.active.button.unpressed.image.color: #000000
window.inactive.button.unpressed.image.color: #000000
# window drop-shadows
window.active.shadow.size: 60
window.inactive.shadow.size: 40
window.active.shadow.color: #00000060
window.inactive.shadow.color: #00000040
# Note that "menu", "iconify", "max", "close" buttons colors can be defined
# individually by inserting the type after the button node, for example:
#
# window.active.button.iconify.unpressed.image.color: #333333
# menu
menu.overlap.x: 0
menu.overlap.y: 0
menu.width.min: 20
menu.width.max: 200
menu.border.width: 1
menu.border.color: #aaaaaa
menu.items.bg.color: #fcfbfa
menu.items.text.color: #000000
menu.items.active.bg.color: #e1dedb
menu.items.active.text.color: #000000
menu.items.padding.x: 7
menu.items.padding.y: 4
menu.separator.width: 1
menu.separator.padding.width: 6
menu.separator.padding.height: 3
menu.separator.color: #888888
menu.title.bg.color: #589bda
menu.title.text.color: #ffffff
menu.title.text.justify: Center
# on screen display (window-cycle dialog)
osd.bg.color: #e1dedb
osd.border.color: #000000
osd.border.width: 1
osd.label.text.color: #000000
# width can be set as percent (of screen width)
# example 50% or 75% instead of 600, max 100%
osd.window-switcher.width: 600
osd.window-switcher.padding: 4
osd.window-switcher.item.padding.x: 10
osd.window-switcher.item.padding.y: 1
osd.window-switcher.item.active.border.width: 2
osd.window-switcher.preview.border.width: 1
osd.window-switcher.preview.border.color: #dddda6,#000000,#dddda6
osd.workspace-switcher.boxes.width: 20
osd.workspace-switcher.boxes.height: 20
# Default values for following options change depending on the rendering
# backend. For software-based renderers, *.bg.enabled is "no" and
# *.border.enabled is "yes" if not set. For hardware-based renderers,
# *.bg.enabled is "yes" and *.border.enabled is "no" if not set.
# Setting *.bg.enabled to "yes" for software-based renderer with translucent
# background color may severely impact performance.
#
# snapping.overlay.region.bg.enabled:
# snapping.overlay.edge.bg.enabled:
# snapping.overlay.region.border.enabled:
# snapping.overlay.edge.border.enabled:
snapping.overlay.region.bg.color: #8080b380
snapping.overlay.edge.bg.color: #8080b380
snapping.overlay.region.border.width: 1
snapping.overlay.edge.border.width: 1
snapping.overlay.region.border.color: #dddda6,#000000,#dddda6
snapping.overlay.edge.border.color: #dddda6,#000000,#dddda6

11
config/mabox-labwc/README Normal file
View File

@ -0,0 +1,11 @@
Config layout for ~/.config/labwc/
- autostart
- environment
- menu.xml
- rc.xml
- shutdown
- themerc-override
- xinitrc
See `man labwc-config and `man labwc-theme` for further details.

View File

@ -0,0 +1,34 @@
# Example autostart file
# Set background color.
swaybg -c '#113344' >/dev/null 2>&1 &
# Configure output directives such as mode, position, scale and transform.
# Use wlr-randr to get your output names
# Example ~/.config/kanshi/config below:
# profile {
# output HDMI-A-1 position 1366,0
# output eDP-1 position 0,0
# }
#kanshi >/dev/null 2>&1 &
# Launch a panel such as yambar or waybar.
waybar >/dev/null 2>&1 &
# Enable notifications. Typically GNOME/KDE application notifications go
# through the org.freedesktop.Notifications D-Bus API and require a client such
# as mako to function correctly. Thunderbird is an example of this.
mako >/dev/null 2>&1 &
# Lock screen after 5 minutes; turn off display after another 5 minutes.
#
# Note that in the context of idle system power management, it is *NOT* a good
# idea to turn off displays by 'disabling outputs' for example by
# `wlr-randr --output <whatever> --off` because this re-arranges views
# (since a837fef). Instead use a wlr-output-power-management client such as
# https://git.sr.ht/~leon_plickat/wlopm
swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'wlopm --off \*' \
resume 'wlopm --on \*' \
before-sleep 'swaylock -f -c 000000' >/dev/null 2>&1 &

View File

@ -0,0 +1,77 @@
##
## Example ~/.config/labwc/environment file.
## Uncomment lines starting with one '#' to suit your needs.
##
##
## Use the XKB_DEFAULT_LAYOUT variable to set the keyboard layout. For example
## to start with Swedish keyboard layout set it to 'se'. If you are unsure what
## your country code is, refer to the layout section of:
## /usr/share/X11/xkb/rules/evdev.lst
##
## Multiple keyboard layouts can be set by comma-separating the country codes.
## If a variant layout is needed, the syntax is layout(variant)
## If multiple layouts are used, specify the toggle-keybind using
## XKB_DEFAULT_OPTIONS as show below.
##
## For further details, see xkeyboard-config(7)
##
# XKB_DEFAULT_LAYOUT=se
# XKB_DEFAULT_LAYOUT=se,us(intl)
# XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle
# XKB_DEFAULT_OPTIONS=grp:shift_caps_toggle
##
## Set cursor theme and size. Find system icons themes with:
## `find /usr/share/icons/ -type d -name "cursors"`
##
# XCURSOR_THEME=breeze_cursors
# XCURSOR_THEME=capitaine-cursors
# XCURSOR_SIZE=24
##
## Disable hardware cursors. Most users would not want to do this, but if you
## are experiencing issues with disappearing cursors, this might fix it.
##
# WLR_NO_HARDWARE_CURSORS=1
##
## In order for labwc to work out of the box, the environment variable below
## is set to "1" by default to avoid menus with incorrect offset and blank
## windows with Java applications such as JetBrains and Intellij Idea.
## See https://github.com/swaywm/sway/issues/595
## labwc will not override any already set environment variables, so if you for
## some reason do not want this, then just set it to "0" (not recommended, but
## mentioned here for completeness).
##
# _JAVA_AWT_WM_NONREPARENTING=0
##
## This allows xdg-desktop-portal-wlr to function (e.g. for screen-recording).
## It is automatically set to "labwc:wlroots" by labwc though, so it is only
## included here for completeness. Again, labwc will not over-write an
## already set environment variable, so if you need it set to something else,
## then uncomment and adjust.
##
# XDG_CURRENT_DESKTOP=labwc:wlroots
##
## This causes a virtual output to be created automatically whenever there
## are no outputs around. This helps for cases like wayvnc so there is always
## an output available to connect to. The name can be chosen freely but there
## must be no duplicate output names, for this reason using VIRTUAL-x or a
## physical connector name like HDMI-A-1 is not recommended as wlroots may
## want to create outputs with those names later on which would then fail.
##
## Using an output name that starts with NOOP- has the additional benefit
## that wayvnc will detect it being a virtual output and allow clients to
## resize the output to match the client resolution.
##
# LABWC_FALLBACK_OUTPUT=NOOP-fallback

View File

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<openbox_menu>
<!-- Note: for localization support of menu items "client-menu" has to be removed here -->
<menu id="client-menu">
<item label="Minimize">
<action name="Iconify" />
</item>
<item label="Maximize">
<action name="ToggleMaximize" />
</item>
<item label="Fullscreen">
<action name="ToggleFullscreen" />
</item>
<item label="Roll Up/Down">
<action name="ToggleShade" />
</item>
<item label="Decorations">
<action name="ToggleDecorations" />
</item>
<item label="Always on Top">
<action name="ToggleAlwaysOnTop" />
</item>
<!--
Any menu with the id "workspaces" will be hidden
if there is only a single workspace available.
-->
<menu id="workspaces" label="Workspace">
<item label="Move Left">
<action name="SendToDesktop" to="left" />
</item>
<item label="Move Right">
<action name="SendToDesktop" to="right" />
</item>
<separator />
<item label="Always on Visible Workspace">
<action name="ToggleOmnipresent" />
</item>
</menu>
<!--
openbox default workspace selector
to use replace above workspace menu with the example below
the label is required, but you can change the text.
<menu id="client-send-to-menu" label="Send to..." />
-->
<item label="Close">
<action name="Close" />
</item>
</menu>
<menu id="root-menu">
<!-- Make client-list-combined-menu a submenu of root-menu
You must supply a label or it will not appear in root-menu -->
<!--
<menu id="client-list-combined-menu" label="Running..." />
-->
<item label="File Manager">
<action name="Execute" command="pcmanfm" />
</item>
<item label="Web browser">
<action name="Execute" command="firefox" />
</item>
<item label="Terminal">
<action name="Execute" command="foot" />
</item>
<item label="Labwc Tweaks">
<action name="Execute" command="labwc-tweaks" />
</item>
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<item label="Exit">
<action name="Exit" />
</item>
<item label="Poweroff">
<action name="Execute" command="systemctl -i poweroff" />
</item>
</menu>
<menu id="some-custom-menu">
<!--
Creates menu title.
To create an empty header with no text,
set label=" ", not label=""
-->
<separator label="custom menu" />
<item label="Reconfigure">
<action name="Reconfigure" />
</item>
<item label="Exit">
<action name="Exit" />
</item>
</menu>
</openbox_menu>

689
config/mabox-labwc/rc.xml Normal file
View File

@ -0,0 +1,689 @@
<?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>
<allowTearing>no</allowTearing>
<reuseOutputMode>no</reuseOutputMode>
<xwaylandPersistence>yes</xwaylandPersistence>
</core>
<placement>
<policy>cascade</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></name>
<icon></icon>
<titlebar>
<layout>icon:iconify,max,close</layout>
<showTitle>yes</showTitle>
</titlebar>
<cornerRadius>8</cornerRadius>
<keepBorder>yes</keepBorder>
<dropShadows>no</dropShadows>
<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="MenuHeader">
<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" allWorkspaces="no">
<fields>
<field content="type" width="25%" />
<field content="trimmed_identifier" width="25%" />
<!-- <field content="identifier" width="25%" /> -->
<field content="title" width="50%" />
</fields>
</windowSwitcher>
<!--
When using all workspaces option of window switcher, there are extra fields
that can be used, workspace (variable length), state (single space),
type_short (3 spaces), output (variable length), and can be set up
like this. Note: output only shows if more than one output available.
<windowSwitcher show="yes" preview="no" outlines="no" allWorkspaces="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, "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.
Uses 100% of OSD window width.
<windowSwitcher show="yes" preview="no" outlines="no" allWorkspaces="yes">
<fields>
<field content="custom" format="foobar %b %3s %-10o %-20W %-10i %t" width="100%" />
</fields>
</windowSwitcher>
-->
<!-- edge strength is in pixels -->
<resistance>
<screenEdgeStrength>20</screenEdgeStrength>
<windowEdgeStrength>20</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>Never</popupShow>
<!-- Let client redraw its contents while resizing -->
<drawContents>yes</drawContents>
</resize>
<focus>
<followMouse>no</followMouse>
<followMouseRequiresMovement>yes</followMouseRequiresMovement>
<raiseOnFocus>no</raiseOnFocus>
</focus>
<snapping>
<!-- Set range to 0 to disable window snapping completely -->
<range>1</range>
<overlay enabled="yes">
<delay inner="500" outer="500" />
</overlay>
<topMaximize>yes</topMaximize>
<notifyClient>always</notifyClient>
</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" />
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 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>25</repeatRate>
<repeatDelay>600</repeatDelay>
<keybind key="A-Tab">
<action name="NextWindow" />
</keybind>
<keybind key="W-Return">
<action name="Execute" command="foot" />
</keybind>
<keybind key="A-F3">
<action name="Execute" command="bemenu-run" />
</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" />
</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" atCursor="no" />
</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>
<!-- 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>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="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="" mapToOutput="" mouseEmulation="no"/>
<!--
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 mapToOutput="" rotate="0" mouseEmulation="no">
<!-- 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.
-->
<tabletTool motion="absolute" relativeMotionSensitivity="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]
- sendEventsMode [yes|no|disabledOnExternalMouse]
- calibrationMatrix [six float values split by space]
- scrollFactor [float]
-->
<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>
<clickMethod></clickMethod>
<sendEventsMode></sendEventsMode>
<calibrationMatrix></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>
</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>true</useFilter>
</magnifier>
</labwc_config>

View File

@ -0,0 +1,4 @@
# Example shutdown file
# This file is executed as a shell script when labwc is preparing to terminate itself.
# For further details see labwc-config(5).

115
config/mabox-labwc/themerc Normal file
View File

@ -0,0 +1,115 @@
# This file contains all themerc options with default values
#
# System-wide and local themes can be overridden by creating a copy of this
# file and renaming it to $HOME/.config/labwc/themerc-override. Be careful
# though - if you only want to override a small number of specific options,
# make sure all other lines are commented out or deleted.
# general
border.width: 1
#
# The global padding.{width,height} of openbox are not supported because
# the default labwc button geometry deviates from that of openbox
#
window.titlebar.padding.width: 0
window.titlebar.padding.height: 0
# window border
window.active.border.color: #aaaaaa
window.inactive.border.color: #aaaaaa
# ToggleKeybinds status indicator
window.active.indicator.toggled-keybind.color: #ff0000
# window titlebar background
window.active.title.bg.color: #e1dedb
window.inactive.title.bg.color: #f6f5f4
# window titlebar text
window.active.label.text.color: #000000
window.inactive.label.text.color: #000000
window.label.text.justify: center
# window button width and spacing
window.button.width: 26
window.button.height: 26
window.button.spacing: 0
# window button hover effect
window.button.hover.bg.corner-radius: 0
# window buttons
window.active.button.unpressed.image.color: #000000
window.inactive.button.unpressed.image.color: #000000
# window drop-shadows
window.active.shadow.size: 60
window.inactive.shadow.size: 40
window.active.shadow.color: #00000060
window.inactive.shadow.color: #00000040
# Note that "menu", "iconify", "max", "close" buttons colors can be defined
# individually by inserting the type after the button node, for example:
#
# window.active.button.iconify.unpressed.image.color: #333333
# menu
menu.overlap.x: 0
menu.overlap.y: 0
menu.width.min: 20
menu.width.max: 200
menu.border.width: 1
menu.border.color: #aaaaaa
menu.items.bg.color: #fcfbfa
menu.items.text.color: #000000
menu.items.active.bg.color: #e1dedb
menu.items.active.text.color: #000000
menu.items.padding.x: 7
menu.items.padding.y: 4
menu.separator.width: 1
menu.separator.padding.width: 6
menu.separator.padding.height: 3
menu.separator.color: #888888
menu.title.bg.color: #589bda
menu.title.text.color: #ffffff
menu.title.text.justify: Center
# on screen display (window-cycle dialog)
osd.bg.color: #e1dedb
osd.border.color: #000000
osd.border.width: 1
osd.label.text.color: #000000
# width can be set as percent (of screen width)
# example 50% or 75% instead of 600, max 100%
osd.window-switcher.width: 600
osd.window-switcher.padding: 4
osd.window-switcher.item.padding.x: 10
osd.window-switcher.item.padding.y: 1
osd.window-switcher.item.active.border.width: 2
osd.window-switcher.preview.border.width: 1
osd.window-switcher.preview.border.color: #dddda6,#000000,#dddda6
osd.workspace-switcher.boxes.width: 20
osd.workspace-switcher.boxes.height: 20
# Default values for following options change depending on the rendering
# backend. For software-based renderers, *.bg.enabled is "no" and
# *.border.enabled is "yes" if not set. For hardware-based renderers,
# *.bg.enabled is "yes" and *.border.enabled is "no" if not set.
# Setting *.bg.enabled to "yes" for software-based renderer with translucent
# background color may severely impact performance.
#
# snapping.overlay.region.bg.enabled:
# snapping.overlay.edge.bg.enabled:
# snapping.overlay.region.border.enabled:
# snapping.overlay.edge.border.enabled:
snapping.overlay.region.bg.color: #8080b380
snapping.overlay.edge.bg.color: #8080b380
snapping.overlay.region.border.width: 1
snapping.overlay.edge.border.width: 1
snapping.overlay.region.border.color: #dddda6,#000000,#dddda6
snapping.overlay.edge.border.color: #dddda6,#000000,#dddda6

View File

@ -0,0 +1,8 @@
[Desktop Entry]
Name=Mabox LabWC
Comment=A wayland stacking compositor
#Exec=sh -c "labwc -C $HOME/.config/mabox-labwc/"
Exec=mabox-labwc
Icon=labwc
Type=Application
DesktopNames=labwc;wlroots