Files
omarchy/manual/07-hotkeys.md
T
1498718969 Add a floating mode with titlebars to the workspace layout cycle (#14482)
* Let the workspace layout test's Lua assertions fail the suite

Lua 5.5's standalone interpreter exits 0 when the script that raised the error came in on stdin, and exits 1 for the same error in a script file. The block here was piped in through a heredoc, so every assertion in it reported as passing however wrong the value was: changing the expected layout to one the toggle never writes still left the file green.

* Add a floating mode to the workspace layout cycle

Super + L cycled a workspace between dwindle and scrolling. It now carries on into floating, where every window on the workspace floats.

Floating cannot be a third `layout` on the workspace rule. Hyprland has no layout by that name and accepts one anyway: `hl.workspace_rule({ layout = "floating" })` returns ok and silently leaves the workspace on dwindle, exactly as a misspelt name does. So the mode floats the windows themselves, through the same `float` dispatcher SUPER + T uses.

Ending the mode has to tile the windows the mode floated and only those, so each one is tagged with `omarchy-mode-floated`. A window already floating when the mode reaches it -- an app with a float rule of its own, a dialog, one popped out with SUPER + T -- is left unclaimed and is still floating when the mode ends. The tag lives on the window rather than in a table here: it dies with the window, follows it between workspaces, and survives the config reload that plugging in a monitor performs, none of which a table on this side would do. A pinned window is left alone entirely, because tiling one unpins it as well.

Windows arrive on a workspace three ways and a window rule only covers one of them, so the mode watches events: window.open for what opens there, window.move_to_workspace for what is carried in, and the same event for what is carried back out, which gives up the floating the mode gave it rather than staying floating on a workspace that tiles. Every tiled window is claimed before any of them is floated, because floating one member of a group floats the rest, and claiming as it went would find those already floating and leave them stranded.

The mode is read back from the saved file rather than from the compositor. Hyprland reports a workspace's tiled layout and floating is not one, so a floating workspace still answers dwindle or scrolling; trusting that answer would skip a step of the cycle. A file saved before floating existed names a layout rather than a mode and falls through to what Hyprland reports, so the cycle keeps working and the next press rewrites it.

Two faults in the old script had to go first, because saving the mode makes both persistent. Named workspaces report a negative id, which passed the `^-?[0-9]+$` guard, and Hyprland reads a leading "-" as a selector relative to the current workspace: pressing Super + L on a named workspace reconfigured workspace 1 instead, and would now save a file that did it again at every login. And the saved state was written under $HOME/.local/state while the Hyprland side reads XDG_STATE_HOME, which also had to reach package.path: the loader lists that directory but loads the files by module name, so a state home anywhere else listed the saved layouts and then loaded same-named ones from the home directory.

Saving is checked too. The mode reaching the compositor and the mode reaching disk are separate things that can fail separately, and a save that failed silently would leave the next press reading a file that never got written, cycling between two modes and never reaching the third.

The guard against named workspaces stops new files being written, but an earlier version already wrote them, and they go on being loaded at every login. A migration removes the saved layouts named for a negative id.

The keyword fallback is gone. `hyprctl keyword` refuses a Lua configuration outright -- "keyword can't work with non-legacy parsers. Use eval." -- and exits 0 while doing so, so as a fallback it neither worked nor reported that it had not. A failed apply now says so and saves nothing, rather than announcing a layout the screen does not show and restoring it at the next login.

Co-Authored-By: Codex XHigh <noreply@openai.com>

* Add titlebars, edge snapping, and a window Shelf to floating workspaces

Floating workspaces become a traditional desktop that works with every
theme. Windows get themed titlebars from the omarchy-hyprland-titlebars
plugin, which is loaded only while something floats. Dragging a titlebar
to the left or right edge snaps the window to that half, and dragging it
to the top or double-clicking maximizes it. The window floating mode
places is sized, centered, and cascaded, and floating workspaces focus
on click.

Super + M, or the minus button, sets a window aside on the Shelf, which
works from any workspace and restores the window onto the current one
in that workspace's layout. Float All Workspaces makes floating the
default while Super + L still sets a single workspace's layout.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Bring resize on border to tiling too

* Fix floating mode cleanup, fullscreen windows, and failed Shelf notes

Turning Float All Workspaces off with no workspace layouts left behind
started nothing to give the floated windows back. A window fullscreen
when its workspace began floating now floats once it leaves fullscreen.
A window whose Shelf note cannot be saved stays where it is, and the
titlebars read the theme from where omarchy-theme-set writes it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Place the Shelf on the bar once, instead of on every minimize

Putting it back on each minimize kept a Shelf the user moved where they
put it, but re-added one they had removed. A migration places it once for
existing bars; Super + Alt + M opens the Shelf either way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Raise titlebars off the window background

A titlebar in the theme's background color ran into the window under it.
It takes the theme's lighter background, the raised surface every theme
defines, and the selection color on themes that make the two the same.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Drop minimizing and edge snapping from floating workspaces

A floating workspace is now titlebars with maximize and close, and nothing
else. The Shelf (its bar widget, panel, commands, notes, Super + M and
Super + Alt + M) goes with the minimize button, and the titlebar plugin's
edge snapping is left off, along with the shell's snap preview.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Stop describing the titlebar package as snapping

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Name web app windows in their launchers

Chromium names a web app window after its URL, and titles it with the page
title or just the domain. StartupWMClass ties the window to its launcher,
so the titlebar plugin can show the launcher's Name instead: WhatsApp
rather than web.whatsapp.com. New web apps, the shipped ones, and existing
launchers (through a migration) all carry it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Drop the titlebar package comment from the base list

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Show the workspace layout in the bar and cycle it on click

The focused workspace's mark is a square for dwindle, a triangle for
scrolling, and a circle for floating, and clicking it cycles the layout
as Super + L does. Both layout toggles ask the bar to read the new mode.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Show scrolling as a circle and floating as a triangle

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Move the look of the desktop to Trigger > Appearance

Menu Bar, Battery Percentage, Workspace Layout, Window Gaps, Animations,
and 1-Window Ratio change how the desktop looks rather than switching a
behavior, so they leave Trigger > Toggle for their own menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Choose a default workspace layout instead of floating everything

Trigger > Appearance > Workspace Layout sets the layout of every workspace
without one of its own: Tiling, Scrolling, or Floating. A tiled default
is Hyprland's own layout, and a floating one is the floating mode. It
replaces Float All Workspaces, which also overrode and set aside the
layouts workspaces had been given with Super + L.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Title the workspace layout menu Default Workspace Layout

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Use the animation icon for Appearance > Animations

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Open clipboard history from Trigger

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Leave edge resizing to looknfeel on floating workspaces

looknfeel now resizes from borders everywhere, so floating workspaces
only need to switch pointer focus to click.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Convert saved workspace layout rules to modes

Released versions saved a workspace's layout as a plain workspace rule,
which names no mode, so a floating default would override a workspace
set to scrolling, and the bar and Super + L would misread it. A migration
rewrites those files as modes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Cycle workspace layouts backwards with Super + Alt + L

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Test the Trigger > Appearance split and Clipboard History placement

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Decode escaped web app URLs before naming their windows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Describe the workspace widget's layout mark and click

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Let a workspace cycled onto the default follow it again

Once Super + L gave a workspace a layout of its own, it kept it for good,
so a later change of the default never reached it. Cycling onto the
default layout now forgets the workspace's own instead of saving it.
Without a saved default, the default is Hyprland's own layout, which
the user's looknfeel may have set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: David Heinemeier Hansson <david@hey.com>
Co-authored-by: Codex XHigh <noreply@openai.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-11 08:20:45 +02:00

17 KiB

Hotkeys

You can see all the main keyboard bindings with Super + K (Tmux bindings with Super + Alt + K and Herdr bindings with Super + Ctrl + K).

Navigating

Hotkey Function
Super + Space Omarchy menu (apps and everything else)
Super + Alt + Space Apps menu
Super + Escape System menu (suspend, restart, etc)
Super + Ctrl + L Lock computer
Super + W or Super + Q Close window
Ctrl + Alt + Del Close all windows
Super + T Toggle window between tiling/floating
Super + J Toggle window position (horizontal/vertical)
Super + O Toggle popping window into sticky'n'floating
Super + L Cycle through the dwindle, scrolling, and floating layouts
Super + Alt + L Cycle through the layouts in reverse
Super + P Toggle pseudo window style (natural v stretch)
Super + F Go full screen
Super + Alt + F Go full width
Super + Ctrl + F Go full screen inside window
Super + 1/2/3/4 Jump to specific workspace
Super + Tab Jump to next workspace
Super + Shift + Tab Jump to previous workspace
Super + Ctrl + Tab Jump to former workspace
Super + Shift + 1/2/3/4 Move window to workspace
Super + Shift + Alt + 1/2/3/4 Move window to workspace without following
Super + S / Super + Grave Toggle scratchpad
Super + Alt + S / Super + Shift + Grave Move window to scratchpad
Super + Shift + Alt + Arrows Move workspaces to directional monitor
Super + Arrow Move focus to window in direction of arrow
Super + Shift + Arrow Swap window with another in direction of arrow
Super + Minus Expand window left
Super + Equal Shrink window left
Super + Shift + Minus Shrink window up
Super + Shift + Equal Expand window down
Super + Alt + Minus/Equal Same resizing in smaller steps
Super + Ctrl + Minus/Equal Same resizing in bigger steps
Super + Alt + Home Save window width
Super + Home Restore saved window width
Super + Left Mouse Drag window around
Super + Right Mouse Resize window
Super + Scroll Wheel Scroll through workspaces
Super + G Toggle window grouping
Super + Alt + G Move window out of grouping
Super + Alt + Tab Cycle between windows in grouping
Super + Alt + Shift + Tab Cycle backward between windows in grouping
Super + Alt + 1/2/3/4/5 Jump to specific window in grouping
Super + Alt + Arrow Move window into grouping in direction of arrow
Super + Ctrl + Left/Right Move between windows inside a tiling group
Super + Ctrl + Z Zoom in on screen (repeat for more zoom)
Super + Ctrl + Alt + Z Zoom fully out from screen
Super + / Step forward through monitor scaling options
Super + Alt + / Step backward through monitor scaling options
Alt + Tab Cycle forward through windows on the active workspace
Alt + Shift + Tab Cycle backward through windows on the active workspace
Ctrl + Alt + Tab Cycle focus forward through monitors
Ctrl + Alt + Shift + Tab Cycle focus backwards through monitors

System controls

Hotkey Function
Super + Ctrl + A Audio panel
Super + Ctrl + B Bluetooth panel
Super + Ctrl + W Wifi/network panel
Super + Ctrl + D Display panel
Super + Ctrl + P Power panel
Super + Ctrl + Alt + D Calendar panel
Super + Ctrl + Alt + E World clock panel
Super + Ctrl + 1-9 Toggle bar panel by position
Super + Ctrl + S Share menu (via LocalSend)
Super + Ctrl + T Activity (btop)
Super + Ctrl + C Capture controls (screenshot/-recording/picker)
Super + Ctrl + O Toggle menu
Super + Ctrl + H Hardware menu
Super + Ctrl + Q Calculator
Super + Ctrl + E Emoji picker
Super + Ctrl + . Transcode media
Super + Shift + Ctrl + A Pick an AI agent

Adjustments

Hotkey Function
Shift + Brightness Up Maximum screen brightness
Shift + Brightness Down Minimum screen brightness
Alt + Brightness Up/Down Precise 1% brightness changes
Alt + Volume Up/Down Precise 1% volume changes
Keyboard Brightness Up/Down Keyboard backlight brighter/dimmer
Keyboard Backlight Cycle the keyboard backlight levels
Alt + Play Next track
Alt + Shift + Play Previous track

Launching apps

Hotkey Function
Super + Return Terminal
Super + Alt + Return Tmux terminal
Super + Ctrl + Return Herdr (agent manager)
Super + Shift + Return Browser
Super + Shift + Alt + B Browser (private/incognito)
Super + Shift + F File manager
Super + Shift + Alt + F File manager in cwd of terminal
Super + Shift + M Music (Spotify)
Super + Shift + Alt + M Music (cliamp)
Super + Shift + / Password manager (1password)
Super + Shift + N Editor (Neovim)
Super + Shift + C Calendar (HEY)
Super + Shift + E Email (HEY)
Super + Shift + Alt + E New email (HEY)
Super + Shift + A AI (ChatGPT)
Super + Shift + Alt + A AI (Grok)
Super + Shift + G Messenger (Signal)
Super + Shift + P Google Photos
Super + Shift + S Google Maps
Super + Shift + Alt + G Messenger (WhatsApp)
Super + Shift + Ctrl + G Messenger (Google)
Super + Shift + O Obsidian
Super + Shift + W Writing (Omawrite)
Super + Shift + X X
Super + Shift + Alt + X X Compose
Super + Shift + Y YouTube

Change/add bindings in ~/.config/hypr/bindings.lua.

Universal clipboard

Hotkey Function
Super + C Copy
Super + X Cut (not in terminal)
Super + V Paste
Super + Ctrl + V Clipboard manager

Usually on Linux, you need Ctrl + Shift + C/V to copy'n'paste in the terminal and Ctrl + C/V to do it everywhere else. These Omarchy unified clipboard hotkeys work everywhere.

Capture

Hotkey Function
Super + Ctrl + C Capture menu (for keyboards w/o PrintScr button)
Print Screen Screenshot
Alt + Print Screen Screenrecord
Super + Print Screen Color picker
Super + Ctrl + Print Screen Text extraction to clipboard
Super + Alt + [ Make webcam overlay smaller while recording
Super + Alt + ] Make webcam overlay larger while recording
Alt + Shift + L Copy current URL from webapp or Chromium
Alt + Shift + D Download the video on the current page to ~/Videos
Super + Ctrl + X Start/stop dictation (requires Setup > Defaults > Dictation)
Right Alt / F9 Push-to-talk dictation (requires Voxtype or Superwhisper)

With screenrecordings, the hotkey first asks which audio you want, then starts recording. Hit it again to stop. See screenshots and recording for the details.

All capture options are also accessible under Trigger > Capture in the Omarchy menu (Super + Space).

Notifications

Hotkey Function
Super + , Dismiss latest notification
Super + Shift + , Dismiss all notifications
Super + Ctrl + , Toggle silencing notifications
Super + Alt + , Invoke most recent notification
Super + Shift + Alt + , Open notification history

Style

Hotkey Function
Super + Ctrl + Shift + Space Pick a new theme
Super + Ctrl + Space Pick theme background
Super + Backspace Toggle transparency on a window
Super + Ctrl + Backspace Toggle single-window square aspect

Extra background images live in ~/.config/omarchy/backgrounds/<theme name>. Also available via Install > Style > Background in the Omarchy menu.

All style options are also accessible under Style in the Omarchy menu (Super + Space).

Toggles

Hotkey Function
Super + Ctrl + I Toggle locking on idle
Super + Ctrl + N Toggle nightlight display temperature
Super + Ctrl + Delete Toggle laptop display on/off
Super + Ctrl + Alt + Delete Toggle laptop display mirroring
Super + Shift + Space Toggle the top bar
Shift + Mute Switch to next audio output
Shift + Play Switch to next media source
Super + Shift + Backspace Toggle window gaps
Super + Ctrl + Alt + F Toggle full screen desktop (top bar + window gaps)

Reminders

Hotkey Function
Super + Ctrl + R Set a reminder
Super + Ctrl + Alt + R See all reminders
Super + Ctrl + Shift + R Clear all reminders

Notices

Hotkey Function
Super + Ctrl + Alt + T Show time as notification
Super + Ctrl + Alt + B Show battery as notification
Super + Ctrl + Alt + W Toggle weather as notification

Tmux

The prefix key is Ctrl + Space (Ctrl + B also works). You can change these bindings in ~/.config/tmux/tmux.conf.

Panes

Hotkey Function
Prefix + v Split pane beside (vertical)
Prefix + h Split pane below (horizontal)
Prefix + x Kill pane
Prefix + z Toggle pane zoom (fullscreen)
Alt + Enter Split pane below (no prefix)
Alt + Shift + Enter Split pane beside (no prefix)
Alt + Escape Kill pane (no prefix)
Ctrl + Alt + Arrows Move between panes
Ctrl + Alt + Shift + Arrows Resize panes

Windows

Hotkey Function
Prefix + c New window
Prefix + k Kill window
Prefix + r Rename window
Alt + 1-9 Go to specific window
Alt + Arrow Left/Right Move between windows
Alt + Shift + Arrow Left/Right Move window left/right

Sessions

Hotkey Function
Prefix + C New session
Prefix + K Kill session
Prefix + R Rename session
Prefix + N Next session
Prefix + P Previous session
Alt + Arrow Up/Down Move between sessions
Prefix + s List sessions
Prefix + d Detach from session

Copy mode (vi-style)

Hotkey Function
Prefix + [ Enter copy mode
v Begin selection (in copy mode)
y Copy selection (in copy mode)

General

Hotkey Function
Prefix + q Reload config
Prefix + ? Show Tmux keybindings
Prefix + : Command prompt

Tmux layout functions

These functions must be run inside a Tmux session.

Command Function
tdl <ai> [<second_ai>] Create dev layout with editor, AI, and terminal
tdlm <ai> [<second_ai>] Create dev layout per subdirectory
tsl <count> <command> Create multi-pane swarm layout

Ghostty Terminal

Ghostty terminal is installed using Install > Terminal via the Omarchy menu.

Hotkey Function
Ctrl + Shift + E New split below
Ctrl + Shift + O New split besides
Ctrl + Alt + Arrows Move between splits
Super + Ctrl + Shift + Arrows Resize split by 10 lines
Super + Ctrl + Shift + Alt + Arrows Resize split by 100 lines
Ctrl + Shift + T New tab
Ctrl + Shift + Arrows Move between tabs
Alt + Numbers Go to specific tab
Shift + Pg Up/Down Scroll the history
Ctrl + Left mouse Open link in browser

File Manager

Hotkey Function
Ctrl + L Go to path
Space Preview file (arrows navigate)
Backspace Go back one folder

Neovim (w/ lazyvim)

Navigation

Hotkey Function
Space Show command options
Space Space Open file via fuzzy search
Space E Toggle sidebar
Space G G Show git controls
Space S G Search file content
Ctrl + W W Jump between sidebar and editor
Ctrl + Left/right arrow Change size of sidebar
Shift + H Go to left file tab
Shift + L Go to right file tab
Space B D Close file tab

While in sidebar

Hotkey Function
A Add new file in parent dir
Shift + A Add new subdir in parent dir
D Delete highlighted file/dir
M Move highlighted file/dir
R Rename highlighted file/dir
? Show help for all commands

See all the Neovim hotkeys configured by LazyVim.

Quick Emojis

You can use Super + Ctrl + E to show a complete emoji picker that'll put the selection on the clipboard or you can use these quick access options.

Hotkey EM Clue
Shift + CapsLock M S 😄 smile
Shift + CapsLock M C 😂 cry
Shift + CapsLock M L 😍 love
Shift + CapsLock M V ✌️ victory
Shift + CapsLock M H ❤️ heart
Shift + CapsLock M Y 👍 yes
Shift + CapsLock M N 👎 no
Shift + CapsLock M F 🖕 fuck
Shift + CapsLock M W 🤞 wish
Shift + CapsLock M R 🤘 rock
Shift + CapsLock M K 😘 kiss
Shift + CapsLock M E 🙄 eyeroll
Shift + CapsLock M I 😉 wink
Shift + CapsLock M P 🙏 pray
Shift + CapsLock M D 🤤 drool
Shift + CapsLock M M 💰 money
Shift + CapsLock M X 🎉 xellebrate
Shift + CapsLock M 1 💯 100%
Shift + CapsLock M T 🥂 toast
Shift + CapsLock M O 👌 ok
Shift + CapsLock M G 👋 greeting
Shift + CapsLock M A 💪 arm
Shift + CapsLock M B 🤯 blowing

Quick Completions

Hotkey Completion
Shift + CapsLock Space Space — (mdash)
Shift + CapsLock Space N Your name (as entered on setup)
Shift + CapsLock Space E Your email (as entered on setup)

You can add more of your own by editing ~/.XCompose, then running omarchy-restart-xcompose in the terminal to get the changes picked up.