Quick Start β’ Features β’ Preview Tiles β’ Theming β’ Controls β’ Configuration β’ Keybindings β’ FAQ β’ Support
Omadock is built by thepathless, a medical student in India who codes between classes and clinics. It's free, and it always will be β but building it costs money I don't quite have: monthly AI coding tokens, and a laptop that's falling apart (dead WiFi, sticky keys, a trackpad with a mind of its own) β so I'm saving for a Dell XPS 13 (2026).
If Omadock earns a place on your desktop, sponsoring me keeps the AI lights on and the laptop fund growing. Every supporter is honored on the supporters wall π β with love, no tiers, no perks.
| Month | AI tokens | Laptop fund | Notes |
|---|---|---|---|
| β | β | β | Just launched β be the first! π |
(running total so far: ββΉ499 for my coding-agent subscription β borrowed from my mom π . Updated monthly; honesty is the least I can offer)
To everyone who donates β really, truly, thank you. π
Omadock (γͺγγγγ―) is a fluid, zero-CPU application dock for Omarchy β Arch, Hyprland, Quickshell.
Crafted in the spirit of Omakase (γγΎγγ): wave magnification, live window previews, app groups, multi-monitor docks. Beautiful, opinionated, and strictly 0.00% background CPU.
- π Wave magnification β cosine-falloff dock physics, or classic zoom. Zero coordinate jumping.
- πͺ Live window previews β minimized windows park on the dock as thumbnail cards.
- π 3-state window dots β active, visible, and minimized at a glance.
- π Folders & groups β folder stacks with recent files, smart app collections, drag-to-group.
- π₯οΈ Multi-monitor β one dock per monitor, each showing its own monitor's windows.
- πΎ Removable media β USB drives dock themselves; safe eject included.
- π Attention glow & chimes β bouncing alerts and audio pings.
- β¨οΈ Keybindings & IPC β wired for
~/.config/hypr/bindings.luaout of the box.
omarchy plugin add https://github.com/thepathless/omadock.git --enable --yesomarchy plugin update omadock --yesomarchy plugin remove omadock --yesEvery icon shows all its windows at a glance: β¬ active Β· β open Β· β minimized.
| Window Count | Indicator Visual | Behavior |
|---|---|---|
| 1β4 windows | [ β¬ ] [ β ] [ β ] [ β ] |
Dedicated indicator dot/bar for every individual window. |
| 5 windows | [ β¬ ] [ β ] [ β ] [ β ] [ β ] |
Micro-dot scaling ( |
| 6+ windows | [ β¬ ] [ β ] [ β ] [ β ] [ +N ] |
First 4 instance dots plus a compact +N count badge. |
When a window is parked on special:minimized, Omadock generates a live visual preview tile between your pinned and running applications:
- πΈβπ±οΈ Thumbnails appear on minimize; left-click restores to the active workspace.
- π Right-click a tile: Restore Here, Restore to Original Workspace, or Close.
- π¦ In
"all"mode, same-app windows stack into one card with a count badge. - π§© Unpinned apps collapse into their tile β the dock stays uncluttered.
Configure how clicking a focused app icon behaves (omadock.json or the Settings menu):
"active"(Default): Minimizes the active window and passes focus to the next instance."all"(Group Batch): Simultaneously minimizes all instances of the application in an atomic batch."off"(Disabled): Keeps all windows visible and cycles focus between open instances.
Juan Pablo Zamora's raised-cosine falloff, in three modes:
"wave"β the dock ripples under the cursor; zero feedback drift."zoom"β only the hovered icon grows."off"β calm, static geometry.
Pin directories like ~/Downloads, ~/Projects, or custom paths directly to your dock:
- Files popover β up to 300 entries with icons, sizes, and relative times.
- View As β right-click the folder: Stack (a list) or Folder (a grid of larger icons, with previews for images and for anything your file manager has already thumbnailed), saved per folder.
- Browse β click a subfolder to step into it, βΉ to go back; long folders scroll.
- Sort By β right-click the folder: Name, Kind, Date Modified, Date Added or Size, saved per folder.
- Direct opening β click any file to open it in its default app (
xdg-open), or jump to its folder. - Drag out β drag a file from the popover into a file manager, browser or chat app.
- Drop in β rest a folder from your file manager over the folder section of the dock for a moment, then drop it to pin it (dropping on an app icon opens it with that app instead).
- Folder picker β attach custom folders from Settings through the desktop's file chooser (
omarchy-file-select/ XDG portal).
Organize applications into intelligent macOS / iOS-style folders directly on your dock:
- 2Γ2 live preview grid with window dots; the popover tray scales 2β4 columns.
- Drag-to-group, drag-to-pin β drop one icon on another to make a folder.
- Inline renaming, saved instantly.
- Drag-out extraction β folders auto-dissolve when one app remains.
Zero-CPU hardware integration for removable media and USB storage:
- udev + udisks2 detection of USB drives, SD cards, and external storage.
- Tooltips with capacity, label, and mount status; safe eject/unmount with notifications.
Flexible screen placement tailored to your workflow:
"center","left","right"along the bottom edge, with smooth cubic transitions.- Popovers, tooltips, and menus self-reposition so nothing clips at screen edges.
Enable Settings β Placement & Alignment β Show on All Monitors (or "multiMonitor": true) to run a dock on every connected monitor:
- Per-monitor apps β each dock lists its own monitor's windows (pinned apps everywhere);
"perMonitorApps": falsemirrors everything. - Minimized tiles follow their origin monitor, whichever dock parked them.
- Hotplug aware; keybinds act on the focused monitor first.
Deep Linux desktop and compositor integration:
- FreeDesktop jump lists β native quick actions straight from
.desktopfiles. - Drop files on apps β drag files (or a folder) onto an app icon to open them with it; the icon lights up only when the app declares their types (
MimeType=in its desktop entry). - Media controls β right-click an app that plays media (Spotify, a browser playing a videoβ¦) for Now Playing with previous / play-pause / next, through MPRIS.
- Intelligent autohide β 2D AABB overlap tests on Hyprland events only. 0.00% CPU, always.
Right-click the Omarchy logo or empty dock space to access deep customization.
Right-clicking either one opens the full settings panel directly: a sidebar with Appearance, Placement, Behavior, Effects, Size & Spacing, Folders and App Groups, with switches, sliders and dropdowns for every option. Changes apply live, so the dock underneath previews them. Close it with Esc, the close button, or a click outside. The panel can also be opened from a keybind: omarchy-shell omadock openSettings.
The settings at a glance:
| Settings Menu | Appearance | Placement & Alignment | Behavior & Windows |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Effects & Animations | Size & Spacing | Folders & Stacks | App Folders & Groups |
![]() |
![]() |
![]() |
![]() |
-
Shapes:
Auto (Theme),Rounded,Round (Pill),Square. -
Opacity:
Auto (Theme),100%,80%,65%,35%,0% (Transparent Specular). -
Placement & Alignment:
Center (Default),Left Aligned,Right Alignedalong the screen edge. - Color Presets: Theme Auto, Pure Black, Mocha, Deep Slate, Midnight Blue, Dark Navy, Emerald Forest, Velvet Ruby.
-
Icon Sizing: Small (
$28\text{px}$ ), Medium ($36\text{px}$ ), Large ($44\text{px}$ ), Extra Large ($52\text{px}$ ). - App Folders & Groups: Automatic smart collections from running apps, drag-to-group, in-place title renaming, and column scaling.
| Gesture / Trigger | Target | Action Executed |
|---|---|---|
| Left Click | β Omarchy Logo | Opens Omarchy Application Launcher |
| Right Click | β Omarchy Logo | Opens Omadock Preferences Menu |
| Scroll Wheel | β Omarchy Logo | Cycles active Hyprland workspaces |
| Middle Click | β Omarchy Logo | Spawns default terminal emulator |
| Left Click | Application Icon | Launches app / focuses / restores window |
| Middle Click | Application Icon | Launches a new instance of the application |
| Scroll Wheel | Application Icon | Cycles focus through open instances |
| Right Click | Application Icon | Context menu (Window list, Desktop Actions, Pin, Close) |
| Left Click | Folder Stack | Toggles recent-files popover |
| Right Click | Folder Stack | Folder options (Open in File Manager, Unpin) |
| Left Click | Preview Tile | Restores window to current workspace |
| Right Click | Preview Tile | Restore Here / Restore to Original / Close |
| Drag & Drop | Pinned Icon | Reorders pinned application position live |
| Drag & Drop | Running App | Drag into pinned section to pin live |
| Drag & Drop | Dock App Icon | Drag onto another pinned app to create a folder |
| Left Click | App Group Folder | Toggles folder popover tray |
| Right Click | App Group Folder | Context menu (Rename, Ungroup, Set Columns) |
| Drag & Drop | App in Folder | Drag out onto dock to extract / unpin |
| Left Click | Removable Drive | Opens drive mountpoint in default file manager |
| Right Click | Removable Drive | Context menu to safely eject and unmount |
| Bottom Edge Hover | Screen Edge | Reveals autohidden dock instantly |
Settings persist in ~/.config/omarchy/omadock.json and are editable live:
View Annotated Configuration Schema
{
"alignment": "center",
"autohide": true,
"intelligentAutohide": true,
"showRemovableDrives": true,
"minimizeMode": "active",
"showMinimizedTiles": true,
"opacity": 1.0,
"shape": "rounded",
"bgColor": "theme",
"showBackground": true,
"showShadow": true,
"showBorder": true,
"borderOpacity": "theme",
"groupStyle": "rounded",
"itemSpacing": 4,
"iconSize": 0,
"hoverEffect": "zoom",
"showAppsButton": true,
"showTooltips": true,
"advancedTooltips": true,
"launchBounce": true,
"showUrgentHint": true,
"urgentOnNotification": true,
"urgentSound": true,
"urgentSoundName": "bell",
"folderColor": "theme",
"revealDelay": 160,
"tooltipDelay": 450,
"pinnedFolders": [
{ "path": "~/Downloads", "name": "Downloads", "icon": "folder-download" }
],
"appGroups": [
{ "id": "browsers", "name": "browsers", "apps": ["google-chrome", "brave-browser", "chromium", "firefox", "zen-browser"] }
]
}| Key | Type | Default | Description |
|---|---|---|---|
alignment |
string |
"center" |
Dock placement along screen edge: "center", "left", "right". |
screen |
string |
first monitor | Monitor for the single dock (e.g. "DP-3"). With multiMonitor, the dock on this monitor plays alert sounds. |
multiMonitor |
bool |
false |
Runs one dock on every connected monitor. |
perMonitorApps |
bool |
true |
With multiMonitor, each dock lists only the windows on its own monitor. |
autohide |
bool |
true |
Enables dock autohiding on hover exit. |
intelligentAutohide |
bool |
true |
Hides dock only when windows overlap its bounding box (AABB). |
showRemovableDrives |
bool |
true |
Auto-detect and display removable USB thumb drives and storage. |
appGroups |
array |
[] |
App Folders / Groups configuration (name, custom icon, app ID list). |
groupStyle |
string |
"rounded" |
Group tile frame: "rounded" (softly rounded rim), "square" (rim without rounding) or "none" (icons only). |
groupIconEffects |
string |
"theme" |
Icons in an opened group: "theme" follows iconStyle, "none" keeps them original. The tile on the dock always follows iconStyle. |
minimizeMode |
string |
"active" |
"active" (FIFO single), "all" (batch group), "off" (disabled). |
showMinimizedTiles |
bool |
true |
Displays live screencopy preview tiles for parked windows. |
opacity |
number | str |
1.0 |
Background opacity: "theme", 1.0, 0.80, 0.65, 0.35, 0.0. |
shape |
string |
"rounded" |
Dock geometry: "rounded", "round" (pill), "square", "theme". |
indicatorShape |
string |
"theme" |
Dots and bars under icons: "theme" (follows shape), "rounded" or "square". |
bgColor |
string |
"theme" |
"theme", "none", or custom hex string ("#1e1e2e"). |
showBackground |
bool |
true |
Draws the dock's background fill. false leaves the icons floating. |
showShadow |
bool |
true |
Draws the soft drop shadow under the dock. |
showBorder |
bool |
true |
Draws the rim around the dock. |
borderWidth |
number |
1.5 |
Rim width in pixels, 1β6. |
bgFill |
string |
"solid" |
Background fill: "solid" (bgColor) or "gradient". |
gradientPreset |
string |
"theme" |
Gradient palette: "theme" (accent plus two theme palette colours) or aurora, sunset, ocean, forest, rose, lavender, ember, citrus, mono. |
gradientStrength |
number |
0.6 |
How strongly the gradient colours cover the theme background, 0β1. |
grain |
number |
0 |
Film grain over the background, 0 (off) β 1. |
shadowStrength |
number |
0.4 |
Shadow opacity, 0.0β1.0. |
blur |
string |
"system" |
Blur behind the dock: "system" (your Hyprland layer rules decide), "on" or "off" (a runtime layer rule overrides them). |
blurSize |
int |
unset | With blur: "on", Hyprland's blur size 1β20. Hyprland has one blur size for everything, so this applies globally; the previous value (systemBlurSize, recorded automatically) comes back when blur leaves "on". |
iconStyle |
string |
"original" |
"original", "mono" (one theme colour, shading kept), "pixel" (coarse grid, unsmoothed) or "dots" (dithered dot matrix). |
iconTint |
string |
"text" |
Colour for mono and dots: the dock's "text" colour, the theme "accent", or "bw" (near black or near white, whichever contrasts more with the background). Text and accent are lightened or darkened when they would not stand out from the background. |
iconGrid |
int |
16 |
Pixels / dots across an icon for pixel and dots (8β32). |
iconContrast |
number |
0 |
mono / dots: adaptive contrast 0β1, stretched around each icon's own average; high values flatten icons to a simple shape. |
iconStrength |
number |
1 |
mono / dots: how much of the effect covers the original icon, 0β1. |
iconHoverOriginal |
bool |
false |
With an icon style on, the hovered icon (dock, group tiles, an opened group) shows as shipped. |
folderColor |
string |
"theme" |
"theme", "symbolic", "white", "black", "Yaru-blue", etc. |
hoverEffect |
string |
"zoom" |
Hover growth mode: "zoom", "wave", or "off". |
revealDelay |
int |
160 |
Edge dwell time in milliseconds before unhiding ( |
tooltipDelay |
int |
450 |
Tooltip hover dwell delay in milliseconds ( |
Omadock registers IPC commands callable directly by Quickshell.
Run the bundled keybinding helper script to automatically configure all shortcuts:
~/.config/omarchy/plugins/omadock/bind-keys.shAdd these keybinds to ~/.config/hypr/bindings.lua:
-- Toggle Dock Visibility
o.bind("SUPER + D", "Toggle Omadock", "exec qs -p /usr/share/omarchy/shell ipc call omadock toggleVisibility")
-- Minimize currently focused window to Omadock
o.bind("SUPER + M", "Minimize focused window", "exec qs -p /usr/share/omarchy/shell ipc call omadock minimizeActive")
-- Restore longest-parked window (FIFO)
hl.unbind("SUPER + SHIFT + M")
o.bind("SUPER + SHIFT + M", "Restore oldest minimized", "exec qs -p /usr/share/omarchy/shell ipc call omadock restoreLast")Additional IPC methods available:
reveal: Force dock to slide into view.hide: Force dock to slide out of view.setAlignment("center" | "left" | "right"): Change dock alignment dynamically.setPosition("bottom" | "top" | "left" | "right"): Change dock edge position.openSettings: Open the settings panel on the focused monitor's dock.openSettingsPage("appearance" | "placement" | "behavior" | "effects" | "size" | "folders" | "groups"): Open the settings panel on a given page.closeSettings: Close the settings panel.
Note
The -p /usr/share/omarchy/shell flag is mandatory to target the active Omarchy system shell instance.
Where are minimized windows stored?
Windows are placed onto Hyprland's hidden
special:minimized workspace. Omadock remembers their origin workspace so you can restore them instantly to where they belong.
How do I pin or unpin applications?
Right-click any running application icon and click Pin to Dock. Pinned applications are stored in
~/.config/omarchy/dock.json. You can drag and drop icons along the dock to reorder them live.
How do I make the dock completely transparent?
Right-click the Omarchy logo β Appearance β Background Opacity β Transparent (0%). The dock renders a clean specular border around the active icons.
How do I reload after manual JSON edits?
Run
omarchy restart shell in your terminal to instantly reload the Quickshell engine.
# Validate manifest compliance against Omarchy 4.0.3+ standards
omarchy plugin validate ~/Projects/omadock
# Inspect live compositor journal logs
journalctl --user -xeu omarchy-shell -n 50 --no-pager
# Smoke test IPC integration
qs -p /usr/share/omarchy/shell ipc call omadock minimizeActive
qs -p /usr/share/omarchy/shell ipc call omadock restoreLastDistributed under the MIT License.
Copyright Β© 2026 thepathless.
Full release notes, historical changelogs, and upgrade guides across all versions are available on GitHub Releases.










