Repository navigation
Dock
A macOS-style app dock for Hyprland, with the shell's twist: it isn't only icons. Pinned apps, running apps (grouped or not), folders, app groups, live widgets (media, weather, sports, tasks, a live window preview, a phone mirror) and twenty small utility widgets share one strip that you can reorder by dragging, magnify like macOS, style five ways — and save as presets you flip through by scrolling.
The dock is off by default (dock.enable). Turn it on in Settings → Dock. For the tablet's own Android-style taskbar, see Tablet Family.
-
Settings → Dock → Turn on the dock. Choose where it lives (Bottom / Top / Left / Right edge, or Opposite the bar with
position: auto) and a Style. - Right-click an icon for the app menu (pin/unpin, new window, close, add to a group); drag icons to reorder; drag an app onto another to make a group; drop a folder or file on it to pin it.
- Open Edit Mode (Super + Shift + E) to rearrange the dock in place and add widgets from a sheet.
dock.dockStyle:
| Style | Look |
|---|---|
| Floating (default) | A rounded tray floating just off the edge |
| Islands | Apps, widgets and buttons each on an island of their own (islandSpacing) |
| Hug | Sits on the edge, rounding only the corners away from it |
| Dynamic Island | A notch that flares out of the edge, with concave corners |
| Transparent | Only the icons, straight on the wallpaper |
| Full width | Spans the whole edge, flat against it, with concave fillets on the two inner corners so the silhouette hugs the screen edge (drawn as a single path, so there's no seam) |
| Full width · rounded | Spans the edge and curves the screen into it |
Other looks: Mask shape (crop icons with a Material shape — circle, pill, diamond, pentagon, heart, cookies, clovers, bursts, flower, puffy, pixel circle, bun…), Tint dock icons (monochrome, themed) or full colour, Dim inactive icons, Icon spacing, Dock height, Corner radius and Widget corner radius, and launch / notification animations (Bounce, Hop, Pulse, Wiggle, Ripple, None) that play on the icon when an app opens or calls for you (choosing one previews it).
Off by default (enableMagnification). When on, icons swell as the pointer passes over them: scale (1.5× default), influence radius (in icon widths), a curve (cosine, etc.), motion (Still, Smooth, Balanced, Fast — the lens is two springs, so it feels physical rather than animated) and dynamic spacing (neighbours make room). Widgets magnify with their own body scaled less than their content; the lens is computed in the un-magnified space, so hit-testing stays exact while icons grow.
-
Auto-hide. Hover to reveal (
hoverToReveal) brings the dock back when the pointer reaches its edge (hoverRegionHeightpx); Pinned on startup keeps it on screen at login; Block hover in fullscreen prevents it popping over a fullscreen window or video. -
Monitors. One monitor only (
monitor, falling back to all if it's unplugged), Show only on focused monitor, Isolate monitors (each dock lists only its own monitor's windows). -
Running apps appear next to pinned ones; Smart grouping (
smartGrouping) sorts the dock by app category while anything you placed by hand stays put (manualOrderare the anchors). -
Window previews over running apps (
enablePreview) and name tooltips (enableAppTooltip) are mutually exclusive — pick one. Previews capture on demand and use a stable geometry while open. -
Notification badges (
showNotificationBadges) on icons. -
Lock arrangement (
lockReorder) stops everything from being dragged.
Folders and files. pinnedFiles: add them in Settings (a folder chooser) or by dragging; the settings list and the dock order stay in sync both ways.
App groups (enableAppGroups, on by default). Drag an app onto another app to make a group of up to six; drag onto a group to add. The tile shows the first four in a 2×2 grid with a +N badge; a click opens a 3×3 popup with every member. Right-click an app in the popup to remove it, or the group tile to dissolve it. With groups off your apps reappear individually — nothing is lost.
Widgets (each a toggle; positions are keys in dock.order):
| Widget | Shows |
|---|---|
| Media | The current track with transport |
| Weather | Current conditions |
| Sports | A horizontal scoreboard; click to cycle games ([[Sports Scores |
| Tasks | Your To Do list, completable ([[To-Do and Tasks |
| Live preview | A live view of a chosen app's window (livePreviewAppId, number of slots, optional cursor, capture mode) |
| Phone | A tile that starts/stops mirroring your phone ([[Phone Integration |
| Pin / Overview / Trash buttons | Pin the dock, open the overview, open Trash |
Widget stack (enableWidgetStack): several widgets (media, weather, tasks by default) share one slot and turn with the mouse wheel.
Utility widgets (Edit Mode → Add, or Settings → Widgets & buttons): twenty compact tiles, each a small square or a wide bar:
- Time: Stopwatch, Timer, Pomodoro, Clock (Clock App)
- System: Calendar, Battery, AI usage, Disk
- Files: Files (a folder's recent files — Downloads by default), Shelf (a drag-and-drop tray), Send (to a phone by KDE Connect or LocalSend), Screenshots
- Tools: Search, Favorites (sites), Color picker, Clipboard, Water (a glass counter), Tools (screen snip, record, color picker, wallpaper, dark mode…), Live Draw (Live Draw), Unit converter
Each has its own options under dock.utilities.<kind>.
Save the current dock — style, widgets, order, folders — as a Dock preset in Settings → Dock (stored in ~/.config/illogical-impulse/dock-presets.json). With two or more presets, scroll the mouse wheel over the dock to switch (switchPresetsOnScroll, on by default): the dock dips off-screen, applies the next preset, and rises again, with an OSD naming it. A mouse notch is one switch; touchpad deltas add up to a notch and a short timer forgets the remainder so one flick doesn't run through the whole list. If the strip is too long to fit and can scroll, wheel scrolls it, and only at its ends does the gesture switch presets.
| Key | Default |
|---|---|
enable |
false |
dockStyle |
floating (floating, islands, hug, dynamic_island, transparent, full_width, full_width_concave) |
position |
auto (also bottom, top, left, right) |
height, iconSpacing, dockRadius, widgetRadius
|
56, auto, auto, auto |
enableMagnification, magnificationScale, magnificationInfluenceRadius, magnificationCurve, magnificationMotion, magnificationDynamicSpacing
|
off, 1.5, 2.35, cosine, balanced, on |
hoverToReveal, pinnedOnStartup, blockHoverInFullscreen, hoverRegionHeight
|
on, off, on, 2 |
enablePreview / enableAppTooltip
|
on / off |
enableAppGroups, appGroups, smartGrouping, isolateMonitors, monitor
|
on, [], off, off, ""
|
enableMediaWidget, enableWeatherWidget, enableSportsWidget, enableTasksWidget, enableLivePreviewWidget, showPhoneButton
|
all off |
enableWidgetStack, widgetStackItems
|
off, [media, weather, tasks]
|
utilityWidgets, utilities.*
|
[] |
pinnedApps, pinnedFiles, order, manualOrder
|
dolphin + kitty, [], see source |
enableShapeMask, shapeMask
|
on, Circle
|
monochromeIcons, dimInactiveIcons
|
off, off |
launchAnimation, notificationAnimation
|
bounce, bounce
|
switchPresetsOnScroll |
on |
overviewButton.* |
icon file, symbol, shape (SoftBurst), whether the plate stays up |
| Piece | Role |
|---|---|
modules/ii/dock/Dock.qml |
The layer-shell window per monitor: sizes, surface, shadows, reveal logic |
modules/ii/dock/DockContent.qml |
The strip: ordering, drag-to-reorder, groups, magnification (_getSlotMagScale), wheel handling |
DockAppButton, DockAppGroupButton, DockFileButton, DockMediaWidget, DockSportsWidget, DockTasksWidget, DockWeatherWidget, DockPhoneWidget, DockLivePreviewWidget, DockUtilityWidget, DockWidgetStack
|
Items |
modules/ii/dock/utilities/ |
The twenty utility tiles and panels, DockUtilityCatalog.js
|
modules/ii/dock/widgets/ |
Popups: group, preview, tooltip, sports, full-width surface |
DockEdit*.qml |
Edit Mode integration |
services/TaskbarApps.qml |
Pinned, running and grouped apps; folder slots |
services/DockPresets.qml, DockLivePreviewService.qml
|
Presets; on-demand window capture |
modules/settings/configs/DockConfig.qml |
Settings |
Expensive widgets (live preview, utility panels) are loaded only while they are on the dock and visible, and popups are created on demand and released after their fade.
- Customization — dock styles in the big picture
- Edit Mode
- Preset Store
- Bar & Dynamic Island
- Tablet Family