mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-03-15 05:34:17 -04:00
feat: add docs and sync with wiki & website
This commit is contained in:
parent
1fc89d01eb
commit
5906d9621e
28 changed files with 2594 additions and 0 deletions
204
docs/bindings/keys.md
Normal file
204
docs/bindings/keys.md
Normal file
|
|
@ -0,0 +1,204 @@
|
|||
---
|
||||
title: Key Bindings
|
||||
description: Define keyboard shortcuts and modes.
|
||||
---
|
||||
|
||||
## Syntax
|
||||
|
||||
Key bindings follow this format:
|
||||
|
||||
```ini
|
||||
bind[flags]=MODIFIERS,KEY,COMMAND,PARAMETERS
|
||||
```
|
||||
|
||||
- **Modifiers**: `SUPER`, `CTRL`, `ALT`, `SHIFT`, `NONE` (combine with `+`, e.g. `SUPER+CTRL+ALT`).
|
||||
- **Key**: Key name (from `xev` or `wev`) or keycode (e.g., `code:24` for `q`).
|
||||
|
||||
> **Info:** `bind` automatically converts keysym to keycode for comparison. This makes it compatible with all keyboard layouts, but the matching may not always be precise. If a key combination doesn't work on your keyboard layout, use a keycode instead (e.g., `code:24` instead of `q`).
|
||||
|
||||
### Flags
|
||||
|
||||
- `l`: Works even when screen is locked.
|
||||
- `s`: Uses keysym instead of keycode to bind.
|
||||
- `r`: Triggers on key release instead of press.
|
||||
- `p`: Pass key event to client.
|
||||
|
||||
**Examples:**
|
||||
|
||||
```ini
|
||||
bind=SUPER,Q,killclient
|
||||
bindl=SUPER,L,spawn,swaylock
|
||||
|
||||
# Using keycode instead of key name
|
||||
bind=ALT,code:24,killclient
|
||||
|
||||
# Combining keycodes for modifiers and keys
|
||||
bind=code:64,code:24,killclient
|
||||
bind=code:64+code:133,code:24,killclient
|
||||
|
||||
# Bind with no modifier
|
||||
bind=NONE,XF86MonBrightnessUp,spawn,brightnessctl set +5%
|
||||
|
||||
# Bind a modifier key itself as the trigger key
|
||||
bind=alt,shift_l,switch_keyboard_layout
|
||||
```
|
||||
|
||||
## Key Modes (Submaps)
|
||||
|
||||
You can divide key bindings into named modes. Rules:
|
||||
|
||||
1. Set `keymode=<name>` before a group of `bind` lines — those binds only apply in that mode.
|
||||
2. If no `keymode` is set before a bind, it belongs to the `default` mode.
|
||||
3. The special `common` keymode applies its binds **across all modes**.
|
||||
|
||||
Use `setkeymode` to switch modes, and `mmsg -b` to query the current mode.
|
||||
|
||||
```ini
|
||||
# Binds in 'common' apply in every mode
|
||||
keymode=common
|
||||
bind=SUPER,r,reload_config
|
||||
|
||||
# Default mode bindings
|
||||
keymode=default
|
||||
bind=ALT,Return,spawn,foot
|
||||
bind=SUPER,F,setkeymode,resize
|
||||
|
||||
# 'resize' mode bindings
|
||||
keymode=resize
|
||||
bind=NONE,Left,resizewin,-10,0
|
||||
bind=NONE,Right,resizewin,+10,0
|
||||
bind=NONE,Escape,setkeymode,default
|
||||
```
|
||||
|
||||
### Single Modifier Key Binding
|
||||
|
||||
When binding a modifier key itself, use `NONE` for press and the modifier name for release:
|
||||
|
||||
```ini
|
||||
# Trigger on press of Super key
|
||||
bind=none,Super_L,spawn,rofi -show run
|
||||
|
||||
# Trigger on release of Super key
|
||||
bindr=Super,Super_L,spawn,rofi -show run
|
||||
```
|
||||
|
||||
## Dispatchers List
|
||||
|
||||
### Window Management
|
||||
|
||||
| Command | Param | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| `killclient` | - | Close the focused window. |
|
||||
| `togglefloating` | - | Toggle floating state. |
|
||||
| `togglefullscreen` | - | Toggle fullscreen. |
|
||||
| `togglefakefullscreen` | - | Toggle "fake" fullscreen (remains constrained). |
|
||||
| `togglemaximizescreen` | - | Maximize window (keep decoration/bar). |
|
||||
| `toggleglobal` | - | Pin window to all tags. |
|
||||
| `toggle_render_border` | - | Toggle border rendering. |
|
||||
| `centerwin` | - | Center the floating window. |
|
||||
| `minimized` | - | Minimize window to scratchpad. |
|
||||
| `restore_minimized` | - | Restore window from scratchpad. |
|
||||
| `toggle_scratchpad` | - | Toggle scratchpad. |
|
||||
| `toggle_named_scratchpad` | `appid,title,cmd` | Toggle named scratchpad. Launches app if not running, otherwise shows/hides it. |
|
||||
|
||||
### Focus & Movement
|
||||
|
||||
| Command | Param | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| `focusdir` | `left/right/up/down` | Focus window in direction. |
|
||||
| `focusstack` | `next/prev` | Cycle focus within the stack. |
|
||||
| `focuslast` | - | Focus the previously active window. |
|
||||
| `exchange_client` | `left/right/up/down` | Swap window with neighbor in direction. |
|
||||
| `exchange_stack_client` | `next/prev` | Exchange window position in stack. |
|
||||
| `zoom` | - | Swap focused window with Master. |
|
||||
|
||||
### Tags & Monitors
|
||||
|
||||
| Command | Param | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| `view` | `-1/0/1-9` or `mask [,synctag]` | View tag. `-1` = previous tagset, `0` = all tags, `1-9` = specific tag, mask e.g. `1\|3\|5`. Optional `synctag` (0/1) syncs the action to all monitors. |
|
||||
| `viewtoleft` | `[synctag]` | View previous tag. Optional `synctag` (0/1) syncs to all monitors. |
|
||||
| `viewtoright` | `[synctag]` | View next tag. Optional `synctag` (0/1) syncs to all monitors. |
|
||||
| `viewtoleft_have_client` | `[synctag]` | View left tag and focus client if present. Optional `synctag` (0/1). |
|
||||
| `viewtoright_have_client` | `[synctag]` | View right tag and focus client if present. Optional `synctag` (0/1). |
|
||||
| `viewcrossmon` | `tag,monitor_spec` | View specified tag on specified monitor. |
|
||||
| `tag` | `1-9 [,synctag]` | Move window to tag. Optional `synctag` (0/1) syncs to all monitors. |
|
||||
| `tagsilent` | `1-9` | Move window to tag without focusing it. |
|
||||
| `tagtoleft` | `[synctag]` | Move window to left tag. Optional `synctag` (0/1). |
|
||||
| `tagtoright` | `[synctag]` | Move window to right tag. Optional `synctag` (0/1). |
|
||||
| `tagcrossmon` | `tag,monitor_spec` | Move window to specified tag on specified monitor. |
|
||||
| `toggletag` | `0-9` | Toggle tag on window (0 means all tags). |
|
||||
| `toggleview` | `1-9` | Toggle tag view. |
|
||||
| `comboview` | `1-9` | View multi tags pressed simultaneously. |
|
||||
| `focusmon` | `left/right/up/down/monitor_spec` | Focus monitor by direction or [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
|
||||
| `tagmon` | `left/right/up/down/monitor_spec,[keeptag]` | Move window to monitor by direction or [monitor spec](/docs/configuration/monitors#monitor-spec-format). `keeptag` is 0 or 1. |
|
||||
|
||||
### Layouts
|
||||
|
||||
| Command | Param | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| `setlayout` | `name` | Switch to layout (e.g., `scroller`, `tile`). |
|
||||
| `switch_layout` | - | Cycle through available layouts. |
|
||||
| `incnmaster` | `+1/-1` | Increase/Decrease number of master windows. |
|
||||
| `setmfact` | `+0.05` | Increase/Decrease master area size. |
|
||||
| `set_proportion` | `float` | Set scroller window proportion (0.0–1.0). |
|
||||
| `switch_proportion_preset` | - | Cycle proportion presets of scroller window. |
|
||||
| `scroller_stack` | `left/right/up/down` | Move window inside/outside scroller stack by direction. |
|
||||
| `incgaps` | `+/-value` | Adjust gap size. |
|
||||
| `togglegaps` | - | Toggle gaps. |
|
||||
|
||||
### System
|
||||
|
||||
| Command | Param | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| `spawn` | `cmd` | Execute a command. |
|
||||
| `spawn_shell` | `cmd` | Execute shell command (supports pipes `\|`). |
|
||||
| `spawn_on_empty` | `cmd,tagnumber` | Open command on empty tag. |
|
||||
| `reload_config` | - | Hot-reload configuration. |
|
||||
| `quit` | - | Exit mangowm. |
|
||||
| `toggleoverview` | - | Toggle overview mode. |
|
||||
| `create_virtual_output` | - | Create a headless monitor (for VNC/Sunshine). |
|
||||
| `destroy_all_virtual_output` | - | Destroy all virtual monitors. |
|
||||
| `toggleoverlay` | - | Toggle overlay state for the focused window. |
|
||||
| `toggle_trackpad_enable` | - | Toggle trackpad enable. |
|
||||
| `setkeymode` | `mode` | Set keymode. |
|
||||
| `switch_keyboard_layout` | `[index]` | Switch keyboard layout. Optional index (0, 1, 2...) to switch to specific layout. |
|
||||
| `setoption` | `key,value` | Set config option temporarily. |
|
||||
| `disable_monitor` | `monitor_spec` | Shutdown monitor. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
|
||||
| `enable_monitor` | `monitor_spec` | Power on monitor. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
|
||||
| `toggle_monitor` | `monitor_spec` | Toggle monitor power. Accepts a [monitor spec](/docs/configuration/monitors#monitor-spec-format). |
|
||||
|
||||
### Media Controls
|
||||
|
||||
> **Warning:** Some keyboards don't send standard media keys. Run `wev` and press your key to check the exact key name.
|
||||
|
||||
#### Brightness
|
||||
|
||||
Requires: `brightnessctl`
|
||||
|
||||
```ini
|
||||
bind=NONE,XF86MonBrightnessUp,spawn,brightnessctl s +2%
|
||||
bind=SHIFT,XF86MonBrightnessUp,spawn,brightnessctl s 100%
|
||||
bind=NONE,XF86MonBrightnessDown,spawn,brightnessctl s 2%-
|
||||
bind=SHIFT,XF86MonBrightnessDown,spawn,brightnessctl s 1%
|
||||
```
|
||||
|
||||
#### Volume
|
||||
|
||||
Requires: `wpctl` (WirePlumber)
|
||||
|
||||
```ini
|
||||
bind=NONE,XF86AudioRaiseVolume,spawn,wpctl set-volume @DEFAULT_SINK@ 5%+
|
||||
bind=NONE,XF86AudioLowerVolume,spawn,wpctl set-volume @DEFAULT_SINK@ 5%-
|
||||
bind=NONE,XF86AudioMute,spawn,wpctl set-mute @DEFAULT_SINK@ toggle
|
||||
bind=SHIFT,XF86AudioMute,spawn,wpctl set-mute @DEFAULT_SOURCE@ toggle
|
||||
```
|
||||
|
||||
### Floating Window Movement
|
||||
|
||||
| Command | Param | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| `smartmovewin` | `left/right/up/down` | Move floating window by snap distance. |
|
||||
| `smartresizewin` | `left/right/up/down` | Resize floating window by snap distance. |
|
||||
| `movewin` | `(x,y)` | Move floating window. |
|
||||
| `resizewin` | `(width,height)` | Resize window. |
|
||||
4
docs/bindings/meta.json
Normal file
4
docs/bindings/meta.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"title": "Bindings & Input",
|
||||
"pages": ["keys", "mouse-gestures"]
|
||||
}
|
||||
116
docs/bindings/mouse-gestures.md
Normal file
116
docs/bindings/mouse-gestures.md
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
---
|
||||
title: Mouse & Gestures
|
||||
description: Configure mouse buttons, scrolling, gestures, and lid switches.
|
||||
---
|
||||
|
||||
## Mouse Bindings
|
||||
|
||||
Assign actions to mouse button presses with optional modifier keys.
|
||||
|
||||
### Syntax
|
||||
|
||||
```ini
|
||||
mousebind=MODIFIERS,BUTTON,COMMAND,PARAMETERS
|
||||
```
|
||||
|
||||
- **Modifiers**: `SUPER`, `CTRL`, `ALT`, `SHIFT`, `NONE`. Combine with `+` (e.g., `SUPER+CTRL`)
|
||||
- **Buttons**: `btn_left`, `btn_right`, `btn_middle`, `btn_side`, `btn_extra`, `btn_forward`, `btn_back`, `btn_task`
|
||||
|
||||
> **Warning:** When modifiers are set to `NONE`, only `btn_middle` works in normal mode. `btn_left` and `btn_right` only work in overview mode.
|
||||
|
||||
### Examples
|
||||
|
||||
```ini
|
||||
# Window manipulation
|
||||
mousebind=SUPER,btn_left,moveresize,curmove
|
||||
mousebind=SUPER,btn_right,moveresize,curresize
|
||||
mousebind=SUPER+CTRL,btn_right,killclient
|
||||
|
||||
# Overview mode (requires NONE modifier)
|
||||
mousebind=NONE,btn_left,toggleoverview,-1
|
||||
mousebind=NONE,btn_right,killclient,0
|
||||
mousebind=NONE,btn_middle,togglemaximizescreen,0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Axis Bindings
|
||||
|
||||
Map scroll wheel movements to actions for workspace and window navigation.
|
||||
|
||||
### Syntax
|
||||
|
||||
```ini
|
||||
axisbind=MODIFIERS,DIRECTION,COMMAND,PARAMETERS
|
||||
```
|
||||
|
||||
- **Direction**: `UP`, `DOWN`, `LEFT`, `RIGHT`
|
||||
|
||||
### Examples
|
||||
|
||||
```ini
|
||||
axisbind=SUPER,UP,viewtoleft_have_client
|
||||
axisbind=SUPER,DOWN,viewtoright_have_client
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gesture Bindings
|
||||
|
||||
Enable touchpad swipe gestures for navigation and window management.
|
||||
|
||||
### Syntax
|
||||
|
||||
```ini
|
||||
gesturebind=MODIFIERS,DIRECTION,FINGERS,COMMAND,PARAMETERS
|
||||
```
|
||||
|
||||
- **Direction**: `up`, `down`, `left`, `right`
|
||||
- **Fingers**: `3` or `4`
|
||||
|
||||
> **Info:** Gestures require proper touchpad configuration. See [Input Devices](/docs/configuration/input) for touchpad settings like `tap_to_click` and `disable_while_typing`.
|
||||
|
||||
### Examples
|
||||
|
||||
```ini
|
||||
# 3-finger: Window focus
|
||||
gesturebind=none,left,3,focusdir,left
|
||||
gesturebind=none,right,3,focusdir,right
|
||||
gesturebind=none,up,3,focusdir,up
|
||||
gesturebind=none,down,3,focusdir,down
|
||||
|
||||
# 4-finger: Workspace navigation
|
||||
gesturebind=none,left,4,viewtoleft_have_client
|
||||
gesturebind=none,right,4,viewtoright_have_client
|
||||
gesturebind=none,up,4,toggleoverview
|
||||
gesturebind=none,down,4,toggleoverview
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Switch Bindings
|
||||
|
||||
Trigger actions on hardware events like laptop lid open/close.
|
||||
|
||||
### Syntax
|
||||
|
||||
```ini
|
||||
switchbind=FOLD_STATE,COMMAND,PARAMETERS
|
||||
```
|
||||
|
||||
- **Fold State**: `fold` (lid closed), `unfold` (lid opened)
|
||||
|
||||
> **Warning:** Disable system lid handling in `/etc/systemd/logind.conf`:
|
||||
>
|
||||
> ```ini
|
||||
> HandleLidSwitch=ignore
|
||||
> HandleLidSwitchExternalPower=ignore
|
||||
> HandleLidSwitchDocked=ignore
|
||||
> ```
|
||||
|
||||
### Examples
|
||||
|
||||
```ini
|
||||
switchbind=fold,spawn,swaylock -f -c 000000
|
||||
switchbind=unfold,spawn,wlr-dpms on
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue