Omarchy keybindings
228 default bindings in v4.0.4. Super is the Windows or Command key. Filter by a key ("shift", "return") or by what it does ("terminal", "float").
applications
| Keys | Does | Action |
|---|---|---|
| Super+Enter | Terminal | { omarchy = "terminal" } |
| Super+Shift+Enter | Browser | { omarchy = "browser" } |
| Super+Shift+F | File manager | { omarchy = "nautilus" } |
| Super+Alt+Shift+F | File manager (cwd) | { omarchy = "nautilus-cwd" } |
| Super+Shift+B | Browser | { omarchy = "browser" } |
| Super+Shift+Alt+B | Browser (private) | { omarchy = "browser --private" } |
| Super+Shift+N | Editor | { omarchy = "editor" } |
| Super+Alt+Enter | Tmux | { omarchy = "terminal-tmux" } |
| Super+Ctrl+Enter | Herdr | { omarchy = "terminal-herdr" } |
| Super+Shift+M | Music | { omarchy = "spotify" } |
| Super+Shift+Alt+M | Music TUI | { tui = "cliamp", focus = true } |
| Super+Shift+D | Docker | { tui = "omarchy-launch-docker-tui" } |
| Super+Shift+G | Signal | { omarchy = "signal" } |
| Super+Shift+O | Obsidian | { launch = "obsidian", focus = "^obsidian$" } |
| Super+Shift+W | Omawrite | { launch = "omawrite" } |
| Super+Shift+/ | Passwords | { omarchy = "1password" } |
| Super+Shift+A | ChatGPT | { webapp = "https://chatgpt.com" } |
| Super+Shift+Alt+A | Grok | { webapp = "https://grok.com" } |
| Super+Shift+C | Calendar | { webapp = "https://app.hey.com/calendar/weeks/" } |
| Super+Shift+E | { webapp = "https://app.hey.com" } | |
| Super+Shift+Alt+E | New email | { webapp = "https://app.hey.com/messages/new?display=standalone&new_window=true" } |
| Super+Shift+Y | YouTube | { webapp = "https://youtube.com/" } |
| Super+Shift+Alt+G | { webapp = "https://web.whatsapp.com/", focus = true } | |
| Super+Shift+Ctrl+G | Google Messages | { webapp = "https://messages.google.com/web/conversations", focus = true } |
| Super+Shift+P | Google Photos | { webapp = "https://photos.google.com/", focus = true } |
| Super+Shift+S | Google Maps | { webapp = "https://maps.google.com/", focus = true } |
| Super+Shift+X | X | { webapp = "https://x.com/" } |
| Super+Shift+Alt+X | X Post | { webapp = "https://x.com/compose/post" } |
clipboard
| Keys | Does | Action |
|---|---|---|
| Super+C | Universal copy | universal_clipboard_shortcut("CTRL", "C", "CTRL", "Insert") |
| Super+V | Universal paste | universal_clipboard_shortcut("CTRL", "V", "SHIFT", "Insert") |
| Super+X | Universal cut | send_shortcut_once("CTRL", "X") |
| Super+Ctrl+V | Clipboard manager | omarchy-shell shell toggle omarchy.clipboard |
media
| Keys | Does | Action |
|---|---|---|
| XF86AudioRaiseVolume | Volume up | omarchy-audio-output-volume raise |
| XF86AudioLowerVolume | Volume down | omarchy-audio-output-volume lower |
| XF86AudioMute | Mute | omarchy-audio-output-volume mute-toggle |
| XF86AudioMicMute | Mute microphone | omarchy-audio-input-mute |
| XF86MonBrightnessUp | Brightness up | omarchy-brightness-display +5% |
| XF86MonBrightnessDown | Brightness down | omarchy-brightness-display 5%- |
| Shift+XF86MonBrightnessUp | Brightness maximum | omarchy-brightness-display 100% |
| Shift+XF86MonBrightnessDown | Brightness minimum | omarchy-brightness-display 1% |
| XF86KbdBrightnessUp | Keyboard brightness up | omarchy-brightness-keyboard up |
| XF86KbdBrightnessDown | Keyboard brightness down | omarchy-brightness-keyboard down |
| XF86KbdLightOnOff | Keyboard backlight cycle | omarchy-brightness-keyboard cycle |
| XF86TouchpadToggle | Toggle touchpad | touchpad |
| XF86TouchpadOn | Enable touchpad | omarchy-toggle-touchpad on |
| XF86TouchpadOff | Disable touchpad | omarchy-toggle-touchpad off |
| Alt+XF86AudioRaiseVolume | Volume up precise | omarchy-audio-output-volume +1 |
| Alt+XF86AudioLowerVolume | Volume down precise | omarchy-audio-output-volume -1 |
| Alt+XF86MonBrightnessUp | Brightness up precise | omarchy-brightness-display +1% |
| Alt+XF86MonBrightnessDown | Brightness down precise | omarchy-brightness-display 1%- |
| XF86AudioNext | Next track | omarchy-shell media next |
| Alt+XF86AudioPlay | Next track | omarchy-shell media next |
| XF86AudioPause | Pause | omarchy-shell media playPause |
| XF86AudioPlay | Play | omarchy-shell media playPause |
| XF86AudioPrev | Previous track | omarchy-shell media previous |
| Alt+Shift+XF86AudioPlay | Previous track | omarchy-shell media previous |
| XF86Eject | Eject media | eject |
| Shift+XF86AudioMute | Switch audio output | omarchy-audio-output-switch |
| Shift+XF86AudioPause | Switch media source | omarchy-audio-source-switch |
| Shift+XF86AudioPlay | Switch media source | omarchy-audio-source-switch |
tiling
| Keys | Does | Action |
|---|---|---|
| Super+W | Close window | hl.dsp.window.close() |
| Ctrl+Alt+DELETE | Close all windows | omarchy-hyprland-window-close-all |
| Super+J | Toggle window split | hl.dsp.layout("togglesplit") |
| Super+P | Pseudo window | hl.dsp.window.pseudo() |
| Super+T | Toggle window floating/tiling | hl.dsp.window.float({ action = "toggle" }) |
| Super+F | Full screen | hl.dsp.window.fullscreen({ mode = "fullscreen" }) |
| Super+Ctrl+F | Tiled full screen | omarchy-hyprland-window-tiled-fullscreen-toggle |
| Super+Alt+F | Full width | hl.dsp.window.fullscreen({ mode = "maximized" }) |
| Super+O | Pop window out (float & pin) | omarchy-hyprland-window-pop |
| Super+Alt+Home | Save window width | omarchy-hyprland-window-width save |
| Super+Home | Restore window width | omarchy-hyprland-window-width restore |
| Super+L | Toggle workspace layout | omarchy-hyprland-workspace-layout-toggle |
| Super+← | Focus on left window | hl.dsp.focus({ direction = "l" }) |
| Super+→ | Focus on right window | hl.dsp.focus({ direction = "r" }) |
| Super+↑ | Focus on above window | hl.dsp.focus({ direction = "u" }) |
| Super+↓ | Focus on below window | hl.dsp.focus({ direction = "d" }) |
| Super+code:10 | Switch to workspace 1 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:11 | Switch to workspace 2 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:12 | Switch to workspace 3 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:13 | Switch to workspace 4 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:14 | Switch to workspace 5 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:15 | Switch to workspace 6 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:16 | Switch to workspace 7 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:17 | Switch to workspace 8 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:18 | Switch to workspace 9 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+code:19 | Switch to workspace 10 (generated: workspace = 1-10) | hl.dsp.focus({ workspace = tostring(workspace) }) |
| Super+Shift+code:10 | Move window to workspace 1 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:11 | Move window to workspace 2 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:12 | Move window to workspace 3 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:13 | Move window to workspace 4 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:14 | Move window to workspace 5 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:15 | Move window to workspace 6 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:16 | Move window to workspace 7 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:17 | Move window to workspace 8 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:18 | Move window to workspace 9 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+code:19 | Move window to workspace 10 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace) }) |
| Super+Shift+Alt+code:10 | Move window silently to workspace 1 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:11 | Move window silently to workspace 2 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:12 | Move window silently to workspace 3 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:13 | Move window silently to workspace 4 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:14 | Move window silently to workspace 5 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:15 | Move window silently to workspace 6 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:16 | Move window silently to workspace 7 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:17 | Move window silently to workspace 8 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:18 | Move window silently to workspace 9 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+Shift+Alt+code:19 | Move window silently to workspace 10 (generated: workspace = 1-10) | hl.dsp.window.move({ workspace = tostring(workspace), follow = false }) |
| Super+S | Toggle scratchpad | hl.dsp.workspace.toggle_special("scratchpad") |
| Super+Alt+S | Move window to scratchpad | hl.dsp.window.move({ workspace = "special:scratchpad", follow = false }) |
| Super+Tab | Next workspace | hl.dsp.focus({ workspace = "e+1" }) |
| Super+Shift+Tab | Previous workspace | hl.dsp.focus({ workspace = "e-1" }) |
| Super+Ctrl+Tab | Former workspace | hl.dsp.focus({ workspace = "previous" }) |
| Super+Shift+Alt+← | Move workspace to left monitor | hl.dsp.workspace.move({ monitor = "l" }) |
| Super+Shift+Alt+→ | Move workspace to right monitor | hl.dsp.workspace.move({ monitor = "r" }) |
| Super+Shift+Alt+↑ | Move workspace to up monitor | hl.dsp.workspace.move({ monitor = "u" }) |
| Super+Shift+Alt+↓ | Move workspace to down monitor | hl.dsp.workspace.move({ monitor = "d" }) |
| Super+Shift+← | Swap window to the left | hl.dsp.window.swap({ direction = "l" }) |
| Super+Shift+→ | Swap window to the right | hl.dsp.window.swap({ direction = "r" }) |
| Super+Shift+↑ | Swap window up | hl.dsp.window.swap({ direction = "u" }) |
| Super+Shift+↓ | Swap window down | hl.dsp.window.swap({ direction = "d" }) |
| Alt+Tab | Focus on next window | hl.dsp.window.cycle_next() |
| Alt+Shift+Tab | Focus on previous window | hl.dsp.window.cycle_next({ next = false }) |
| Alt+Tab | Reveal active window on top | hl.dsp.window.bring_to_top() |
| Alt+Shift+Tab | Reveal active window on top | hl.dsp.window.bring_to_top() |
| Ctrl+Alt+Tab | Focus on next monitor | hl.dsp.focus({ monitor = "+1" }) |
| Ctrl+Alt+Shift+Tab | Focus on previous monitor | hl.dsp.focus({ monitor = "-1" }) |
| Super+code:20 | Expand window left | hl.dsp.window.resize({ x = -100, y = 0, relative = true }) |
| Super+code:21 | Shrink window left | hl.dsp.window.resize({ x = 100, y = 0, relative = true }) |
| Super+Shift+code:20 | Shrink window up | hl.dsp.window.resize({ x = 0, y = -100, relative = true }) |
| Super+Shift+code:21 | Expand window down | hl.dsp.window.resize({ x = 0, y = 100, relative = true }) |
| Super+Alt+code:20 | Expand window left a little | hl.dsp.window.resize({ x = -25, y = 0, relative = true }) |
| Super+Alt+code:21 | Shrink window left a little | hl.dsp.window.resize({ x = 25, y = 0, relative = true }) |
| Super+Shift+Alt+code:20 | Shrink window up a little | hl.dsp.window.resize({ x = 0, y = -25, relative = true }) |
| Super+Shift+Alt+code:21 | Expand window down a little | hl.dsp.window.resize({ x = 0, y = 25, relative = true }) |
| Super+Ctrl+code:20 | Expand window left a lot | hl.dsp.window.resize({ x = -300, y = 0, relative = true }) |
| Super+Ctrl+code:21 | Shrink window left a lot | hl.dsp.window.resize({ x = 300, y = 0, relative = true }) |
| Super+Ctrl+Shift+code:20 | Shrink window up a lot | hl.dsp.window.resize({ x = 0, y = -300, relative = true }) |
| Super+Ctrl+Shift+code:21 | Expand window down a lot | hl.dsp.window.resize({ x = 0, y = 300, relative = true }) |
| Super+mouse_down | Scroll active workspace forward | hl.dsp.focus({ workspace = "e+1" }) |
| Super+mouse_up | Scroll active workspace backward | hl.dsp.focus({ workspace = "e-1" }) |
| Super+mouse:272 | Move window | hl.dsp.window.drag() |
| Super+mouse:273 | Resize window | hl.dsp.window.resize() |
| Super+G | Toggle window grouping | hl.dsp.group.toggle() |
| Super+Alt+G | Move active window out of group | hl.dsp.window.move({ out_of_group = true }) |
| Super+Alt+← | Move window to group on left | hl.dsp.window.move({ into_group = "l" }) |
| Super+Alt+→ | Move window to group on right | hl.dsp.window.move({ into_group = "r" }) |
| Super+Alt+↑ | Move window to group on top | hl.dsp.window.move({ into_group = "u" }) |
| Super+Alt+↓ | Move window to group on bottom | hl.dsp.window.move({ into_group = "d" }) |
| Super+Alt+Tab | Next window in group | hl.dsp.group.next() |
| Super+Alt+Shift+Tab | Previous window in group | hl.dsp.group.prev() |
| Super+Ctrl+← | Move grouped window focus left | hl.dsp.group.prev() |
| Super+Ctrl+→ | Move grouped window focus right | hl.dsp.group.next() |
| Super+Alt+mouse_down | Next window in group | hl.dsp.group.next() |
| Super+Alt+mouse_up | Previous window in group | hl.dsp.group.prev() |
| Super+Alt+code:10 | Switch to group window 1 (generated: index = 1-5) | hl.dsp.group.active({ index = index }) |
| Super+Alt+code:11 | Switch to group window 2 (generated: index = 1-5) | hl.dsp.group.active({ index = index }) |
| Super+Alt+code:12 | Switch to group window 3 (generated: index = 1-5) | hl.dsp.group.active({ index = index }) |
| Super+Alt+code:13 | Switch to group window 4 (generated: index = 1-5) | hl.dsp.group.active({ index = index }) |
| Super+Alt+code:14 | Switch to group window 5 (generated: index = 1-5) | hl.dsp.group.active({ index = index }) |
| Super+/ | Monitor scaling up | omarchy-hyprland-monitor-scaling up |
| Super+Alt+/ | Monitor scaling down | omarchy-hyprland-monitor-scaling down |
utilities
| Keys | Does | Action |
|---|---|---|
| Super+Space | Omarchy menu | omarchy-menu toggle |
| Super+Alt+Space | Apps menu | omarchy-menu toggle apps |
| Super+Ctrl+E | Emojis | omarchy-shell shell toggle omarchy.emojis |
| Super+Ctrl+C | Capture menu | omarchy-menu toggle capture |
| Super+Ctrl+O | Toggle menu | omarchy-menu toggle toggle |
| Super+Ctrl+H | Hardware menu | omarchy-menu toggle hardware |
| Super+Shift+code:201 | Omarchy menu | omarchy-menu toggle root |
| Super+Esc | System menu | omarchy-menu toggle system |
| XF86PowerOff | Power menu | omarchy-menu toggle system |
| Super+K | Keybindings | omarchy-menu-keybindings |
| Super+Alt+K | Tmux keybindings | omarchy-menu-tmux-keybindings |
| Super+Ctrl+K | Herdr keybindings | omarchy-menu-herdr-keybindings |
| Super+Ctrl+Q | Calculator | omacalc |
| XF86Calculator | Calculator | omacalc |
| Super+Shift+Space | Toggle top bar | bar |
| Super+Ctrl+Space | Background switcher | omarchy-menu toggle background |
| Super+Shift+Ctrl+Space | Theme menu | omarchy-menu toggle theme |
| Super+Backspace | Toggle window transparency | omarchy-hyprland-window-transparency-toggle |
| Super+Shift+Backspace | Toggle window gaps | omarchy-hyprland-window-gaps-toggle |
| Super+Ctrl+Backspace | Toggle single-window square aspect | omarchy-hyprland-window-single-square-aspect-toggle |
| Super+, | Dismiss last notification | omarchy-shell notifications dismissOne |
| Super+Shift+, | Dismiss all notifications | omarchy-shell notifications dismissAll |
| Super+Ctrl+, | Toggle silencing notifications | notification-silencing |
| Super+Alt+, | Invoke last notification | omarchy-shell notifications invokeLast |
| Super+Shift+Alt+, | Open notification history | omarchy-shell notifications showHistory |
| Super+Ctrl+I | Toggle locking on idle | idle |
| Super+Ctrl+N | Toggle nightlight | nightlight |
| Super+Ctrl+Delete | Toggle laptop display | omarchy-hyprland-monitor-internal toggle |
| Super+Ctrl+Alt+Delete | Toggle laptop display mirroring | omarchy-hyprland-monitor-internal-mirror toggle |
| switch:on:Lid Switch | omarchy-system-lid-close | |
| switch:off:Lid Switch | omarchy-hyprland-monitor-clamshell | |
| PrtSc | Screenshot | omarchy-capture-screenshot |
| Alt+PrtSc | Screenrecording | omarchy-capture-screenrecording --stop-recording || omarchy-menu toggle trigger.capture.screenrecord |
| Super+Alt+code:34 | Make webcam overlay smaller | omarchy-capture-webcam-resize smaller |
| Super+Alt+code:35 | Make webcam overlay larger | omarchy-capture-webcam-resize larger |
| Super+PrtSc | Color picker | pkill hyprpicker || hyprpicker -a |
| Super+Ctrl+PrtSc | Extract text (OCR) from screenshot | omarchy-capture-text |
| Super+Ctrl+S | Share | omarchy-menu toggle share |
| Super+Ctrl+. | Transcode | omarchy-transcode |
| Super+Ctrl+R | Set reminder | omarchy-menu toggle reminder-set |
| Super+Ctrl+Alt+R | Show reminders | omarchy-reminder show |
| Super+Shift+Ctrl+R | Clear reminders | omarchy-reminder clear |
| Super+Ctrl+Alt+T | Show time | omarchy-notification-time |
| Super+Ctrl+Alt+B | Show battery remaining | omarchy-notification-battery |
| Super+Ctrl+Alt+W | Toggle weather | omarchy-notification-weather |
| Super+Shift+Ctrl+A | Agent | omarchy-agent --pick |
| Super+Ctrl+A | Audio | omarchy-shell shell toggle omarchy.audio |
| Super+Ctrl+B | Bluetooth | omarchy-shell shell toggle omarchy.bluetooth |
| Super+Ctrl+D | Display | omarchy-shell shell toggle omarchy.monitor |
| Super+Ctrl+Alt+D | Calendar | omarchy-shell shell toggle omarchy.clock |
| Super+Ctrl+W | Network | omarchy-shell shell toggle omarchy.network |
| Super+Ctrl+P | Power | omarchy-shell shell toggle omarchy.power |
| Super+Ctrl+T | Activity | { tui = "btop" } |
| Super+Ctrl+code:10 | Bar panel 1 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 1 |
| Super+Ctrl+code:11 | Bar panel 2 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 2 |
| Super+Ctrl+code:12 | Bar panel 3 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 3 |
| Super+Ctrl+code:13 | Bar panel 4 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 4 |
| Super+Ctrl+code:14 | Bar panel 5 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 5 |
| Super+Ctrl+code:15 | Bar panel 6 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 6 |
| Super+Ctrl+code:16 | Bar panel 7 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 7 |
| Super+Ctrl+code:17 | Bar panel 8 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 8 |
| Super+Ctrl+code:18 | Bar panel 9 (generated: panel = 1-9) | omarchy-shell -q shell togglePanelAt right 9 |
| Super+Ctrl+Z | Zoom in | function() local zoom = hl.get_config("cursor.zoom_factor") or 1 hl.config({ cursor = { zoom_factor = zoom + 1 } }) end |
| Super+Ctrl+Alt+Z | Reset zoom | function() hl.config({ cursor = { zoom_factor = 1 } }) end |
| Super+Ctrl+L | Lock system | omarchy-system-lock |
voxtype
| Keys | Does | Action |
|---|---|---|
| Super+Ctrl+X | Toggle dictation | voxtype record toggle |
| F9 | Start dictation (push-to-talk) | voxtype record start |
| F9 | Stop dictation (push-to-talk) | voxtype record stop |
Questions people ask
- How do I see all Omarchy keybindings on my machine?
- Press Super + K on Omarchy 4 to open the keybindings viewer, or read ~/.config/hypr/bindings.lua and the defaults under /usr/share/omarchy/default/hypr/bindings/.
- How do I change a keybinding in Omarchy 4?
- Add or override bindings in ~/.config/hypr/bindings.lua using o.bind("SUPER + K", "Label", action) or o.rebind for an existing chord. In 3.x this lived in bindings.conf, which Omarchy 4 no longer loads.
- Which Omarchy version do these keybindings describe?
- These are the defaults shipped in v4.0.4, extracted from default/hypr/bindings/*.lua in the source. Older tags are listed on the version diff pages.
Source: default/hypr/bindings/*.lua at v4.0.4. Loop-generated workspace bindings (Super + 1…9) are summarized in one row. See migrating a 3.x bindings.conf.