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_layoutKey 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 -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,defaultSingle 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 runDispatchers List
Window Management
| Command | Param | Description |
|---|---|---|
killclient | - | Close the focused window. |
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 |
|---|---|---|
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. |
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
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@ togglePlayback
Requires: playerctl
bind=NONE,XF86AudioNext,spawn,playerctl next
bind=NONE,XF86AudioPrev,spawn,playerctl previous
bind=NONE,XF86AudioPlay,spawn,playerctl play-pauseFloating 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. |