mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-06-19 14:33:16 -04:00
Add a smartkillclient bind function that removes the focused client from the currently viewed tag(s) when it lives on more than one tag, and only falls back to closing it (killclient behaviour) when it is on a single tag, or when removing the viewed tag(s) would leave it on none.
9.2 KiB
9.2 KiB
| title | description |
|---|---|
| Key Bindings | Define keyboard shortcuts and modes. |
Syntax
Key bindings follow this format:
bind[flags]=MODIFIERS,KEY,COMMAND,PARAMETERS
- Modifiers:
SUPER,CTRL,ALT,SHIFT,NONE(combine with+, e.g.SUPER+CTRL+ALT). - Key: Key name (from
xevorwev) or keycode (e.g.,code:24forq).
Info:
bindautomatically 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:24instead ofq).
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:
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:
- Set
keymode=<name>before a group ofbindlines — those binds only apply in that mode. - If no
keymodeis set before a bind, it belongs to thedefaultmode. - The special
commonkeymode applies its binds across all modes.
Use setkeymode to switch modes, and mmsg get keymode to query the current mode.
# 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:
# 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 |
force |
Close the focused window. If force is specified, sends SIGKILL. |
smartkillclient |
- | Remove the focused window from the current tag(s) if it is on multiple tags; otherwise close it. |
togglefloating |
- | Toggle floating state. |
toggle_all_floating |
- | Toggle all visible clients 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 |
|---|---|---|
focusid |
- | Focus window (can target any window via IPC: mmsg dispatch focusid client,<id>) |
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. |
tagmon |
left/right/up/down/monitor_spec,[keeptag] |
Move window to monitor by direction or monitor spec. 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. |
dwindle_toggle_split_direction |
- | Toggle split direction in dwindle layout. |
dwindle_split_horizontal |
- | Set split window direction to horizontal in dwindle layout. |
dwindle_split_vertical |
- | Set split window direction to vertical in dwindle layout. |
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. |
togglejump |
- | Toggle overview with jump 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. |
enable_monitor |
monitor_spec |
Power on monitor. Accepts a monitor spec. |
toggle_monitor |
monitor_spec |
Toggle monitor power. Accepts a monitor spec. |
chvt |
1-9 |
Change virtual terminal (tty, equivalent to using ctrl+alt+Fkeys) |
Media Controls
Warning: Some keyboards don't send standard media keys. Run
wevand press your key to check the exact key name.
Brightness
Requires: brightnessctl
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)
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
Playback
Requires: playerctl
bind=NONE,XF86AudioNext,spawn,playerctl next
bind=NONE,XF86AudioPrev,spawn,playerctl previous
bind=NONE,XF86AudioPlay,spawn,playerctl play-pause
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. |