maomaowm/docs/bindings/keys.md
2026-03-12 10:31:29 +05:30

8.3 KiB
Raw Blame History

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 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:

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.

# 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 - 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.
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.01.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.
enable_monitor monitor_spec Power on monitor. Accepts a monitor spec.
toggle_monitor monitor_spec Toggle monitor power. Accepts a monitor spec.

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

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

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.