Repository navigation
Overview and Workspaces
The Overview is where you manage your desktop from above: a zoomed-out view of your Hyprland workspaces where windows can be inspected, focused, closed, dragged between workspaces and swapped around — all without leaving the keyboard-and-mouse flow you're already in.
And it doesn't stop at the visual part. ii-p3drovfx extends Hyprland's workspace system with Workspace Profiles (save and restore entire working environments), a Workspace Compactor (squash 1, 3, 5 into 1, 2, 3), and a Workspace Map for multi-monitor setups.
Looking for code-level maps? This page explains behavior and configuration. For generated architecture diagrams and source-linked exploration, see ii-p3drovfx on DeepWiki.
- Press Super + Tab — your workspaces appear as a zoomed-out grid.
- Left-click a window to jump to it. Middle-click to close it without visiting it.
- Drag a window onto another workspace to move it; drop it onto another window to swap them.
- Workspaces
1, 3, 5bothering you? Ctrl + Super + C compacts them to1, 2, 3. - Like your current arrangement? Open the Cheat Sheet (Super + /) → Workspaces tab → New snapshot — now it's a Workspace Profile you can restore any time with Ctrl + 1…9.
- Super + Tab toggles the workspace Overview.
- Tapping Super on its own opens Search, which shares the same surface — the search field sits above the workspace view, and starting a query smoothly transitions workspaces out and results in. Clearing the query brings the workspaces back with their own reveal animation.
- Specialized search modes have their own direct shortcuts (clipboard with Super + V, emoji with Super + ., and more) — see Launcher & Search.
Everything is also reachable through Quickshell IPC and global shortcuts: open, close, toggle, search-only mode, setting a query, or jumping straight into a specific search mode. The runtime state lives in GlobalStates.overviewOpen.
The Overview is monitor-aware but frugal about it: the expensive visual window is only created for the currently focused monitor while it's actually needed, and after closing it survives just long enough to finish its closing animation. It opens on the focused monitor only: other outputs never map a second copy, and the desktop-zoom transition runs on that monitor alone.
An app drawer instead? Settings → Overview → Change Overview to an App Drawer (Experimental) makes Super, the overview actions and search calls open the tablet family's app drawer while the ii family is active (Config.options.overview.useAppDrawer). It was built for the tablet family and is offered as-is. Next to it, Show GNOME-style workspace overview adds workspace thumbnails with live screencopies above the drawer's app grid, for switching workspaces and reordering windows.
ii-p3drovfx ships two fundamentally different workspace representations and picks the right one on its own:
- Classic Overview — a configurable grid of workspaces, for traditional Hyprland layouts.
-
Scrolling Overview — a vertically navigable representation built specifically for Hyprland's
scrollinglayout.
The detection is automatic (based on the layout Hyprland reports), so switching your Hyprland layout never requires touching the Overview settings.
Workspaces appear as scaled desktop cells that faithfully reproduce each monitor — scale, transformation, reserved areas and bar geometry included. You control the shape of the grid:
- Rows × Columns — anything from a compact single-row strip to a large multi-row grid. The visible cells form groups: a 2×5 Overview shows ten workspaces at a time, and when your active workspace belongs to a later group, the corresponding range is shown instead.
- Ordering — both axes can be reversed independently (right-to-left, bottom-up). The Hyprland workspace IDs don't change, only their placement.
- Scaling — by default the preview scale is computed from your grid size, fine-tunable with an Auto-scale factor; or disable auto-scaling and set a manual scale.
Each window can show a live-looking preview, captured via Wayland screencopy through Quickshell. To keep the Overview cheap, previews are frozen by default and recaptured when a window's geometry changes — including the sneaky case where Hyprland silently retiles a window because something else moved into its workspace. A live screencopy option exists mainly for the zoom-animation system below.
App icons can be drawn over previews (optionally centered), resolved from the window class Hyprland reports. When a preview gets tiny, its icon grows proportionally so you can still tell what it is.
| Action | Result |
|---|---|
| Left-click a window | Focus it and close the Overview |
| Middle-click a window | Ask it to close — no need to visit its workspace first |
| Drag a window onto another workspace | Move it there (without following it) |
| Drop a window onto another window, same workspace | Swap their tiled positions |
| Drop onto a window in a different workspace | Move + swap in one gesture |
Floating windows keep their spatial identity: they're drawn at their real position, and moving them through the Overview converts back to monitor coordinates instead of forcing them into the tiling.
The active workspace is outlined in the current Material accent color, and the outline animates between cells as you switch.
Three entrance styles for the Overview itself: Slide + Bounce, Smooth Slide and Zoom In (some search flows favor Zoom to stay coherent with the search interface) — plus None, reachable as Disable all animations, which switches off the overview and search animations at once, disables the cascade below and skips the desktop zoom behind the Overview. On top of that, the optional Cascade entrance staggers workspace cells in with opacity, position and scale transitions.
Then there's the fun part: the desktop itself can zoom. When the Overview or Cheat Sheet opens, the wallpaper (and optionally scaled window captures riding on it) pulls away beneath the interface. Eight background styles are available in Settings → Overview: Gnome Like (the full spatial treatment, with the experimental Scale windows with wallpaper option), Soft Focus, Camera Push, Depth, Card Lift, Desaturate, Directional, and Material Shape — the last one framing the zoomed wallpaper in a Material shape, with its own drop-shadow and scale options.
Video and Wallpaper Engine wallpapers can't be re-processed as static images, so image-based styles fall back to a safe behavior while one is active (Settings shows a note, and the affected options gray out).
When Hyprland runs the scrolling layout, the grid is replaced by a vertical sequence of workspace cards, with the selected workspace expanding horizontally so it's easy to spot without breaking the flow.
- Mouse wheel navigates the workspace sequence.
- Shift + wheel shifts the horizontal window offset inside the active workspace — handy when the scrolling layout extends beyond the visible center.
Tiled windows are placed from their real Hyprland geometry, with the last-focused window used as the centering reference; floating windows keep their monitor coordinates. And all the management gestures — focus, close, drag, move, swap — work exactly like in Classic mode. You can also tune the scrolling backdrop (transparent, blur or dim, with a dim percentage) and its zoom direction.
Multi-monitor setups often want independent workspace ranges per monitor — say monitor 1 uses 1–10, monitor 2 uses 11–20. Workspace Map (in Settings → Workspaces) assigns each monitor a starting workspace, and the Sync overview map option applies the same ranges to the Overview so a monitor never shows its neighbor's workspaces.
Workspace configuration is shared with the Bar, so the two surfaces always agree. The Bar workspace indicator can show:
- Workspace numbers, styled as Normal, Han characters, Roman numerals, Greek letters or Counting rods (and the Bar widget itself comes in Default, Minimal, Expressive, Dock and Index styles — see Bar & Dynamic Island)
- Per-workspace app icons, optionally tinted monochrome with a configurable tint strength
- Dynamic workspaces — hide empty ones entirely (or show a fixed count when disabled)
- An active-workspace indicator drawn as a Material Shape — circle, pill, diamond, clover, cookie, burst and friends — or a random shape mode if you like surprises
Workspace Profiles turn "my workspaces" into something you can save. A profile captures a complete working environment — which apps, on which workspaces — and restores it later from the Workspaces tab of the Cheat Sheet. Think Development, Gaming, Study, Streaming…
Hit New snapshot and the current arrangement becomes a profile, with a name, an emoji, a description, the saved windows and their target workspaces. From the same tab you can restore, rename, delete, pin, re-emoji and search profiles. Visible profiles get quick shortcuts: Ctrl + 1…9 restores, Ctrl + Alt + N deletes.
Profiles aren't just static lists. Each saved application entry can carry autolaunch and a launchCmd, so restoring a profile can start missing applications, wait for their windows to appear, and then place them on the right workspace. Already-running windows are matched and moved. There are also deliberately aggressive per-profile cleanup policies (close others / kill others) for when you want the restored layout and nothing else.
Each profile is a standalone JSON file in ~/.config/illogical-impulse/workspace_profiles/ — easy to back up or sync independently of the main config.
The heavy lifting (process orchestration, window matching, compositor sequencing) is done by a Rust backend, workspace_profile_manager, with WorkspaceProfileService.qml acting as the bridge between the Cheat Sheet UI and Hyprland. The source lives in scripts/hyprland/workspace_profile_manager_src/; the UI detects a missing binary and shows you the exact Cargo command to build it.
A second native Rust utility, for a much smaller but very satisfying problem: your focused monitor has windows on workspaces 1, 3, 5 and it bothers you. Press Ctrl + Super + C and they become 1, 2, 3 — without separating windows that shared a workspace.
The compactor preserves window grouping, window order, floating-window geometry and the active-workspace relationship, replaying tiled geometry on a best-effort basis. Special and named workspaces are left alone. It operates only on the focused monitor, and if Workspace Map is enabled it respects that monitor's range — a display mapped to 11–20 compacts within 11–20, never leaking windows onto another monitor's range.
Like the profile manager, the binary is built locally (Rust is the only requirement) and Settings shows the build command.
Auto-Compact (off by default, Settings → Workspaces → Workspace Compactor) watches for gaps left by closing or moving windows and compacts on its own after a short delay. When the gap is the workspace you are looking at, compaction waits until you switch away — configurable to compact immediately instead, or to leave that case to the keybind — and a background compaction never moves the view off the current workspace.
Settings → Overview — enable/disable, window previews, icons (+ centering), scaling (auto factor / manual), entrance animation style (or Disable all animations), cascade entrance, rows/columns, ordering, and the desktop zoom section (zoom animation, background style, scale-windows-with-wallpaper, live screencopy), plus an Experimental section with the app-drawer mode.
Settings → Workspaces — Workspace Map & Overview sync, number display & styles, app icons & tinting, dynamic workspaces, shown-workspace count, Material Shape for the active indicator, and the Workspace Compactor's build/setup card.
Everything lives in modules/ii/overview/:
| File | Role |
|---|---|
Overview.qml |
Controller: per-monitor lifecycle, keyboard focus, open/close, search integration, IPC & global shortcuts, Classic/Scrolling selection |
OverviewWidget.qml |
The classic grid: auto scaling, workspace grouping, drag-and-drop, swaps, active indicator |
ScrollingOverviewWidget.qml |
The scrolling representation: workspace sequence, wheel navigation, horizontal window stream |
OverviewWindow.qml |
One real Hyprland window: geometry scaling, screencopy, app icon, recapture, interaction state |
The Overview never queries Hyprland ad hoc from every component. It leans on the shared HyprlandData.qml service (monitors, workspaces, windows, geometry, addresses) combined with Quickshell's ToplevelManager to bind previews to real Wayland windows — which is also what keeps the Bar, the Overview and the drag operations perfectly in sync: after a move or swap, HyprlandData refreshes and every surface follows.
| Feature | Purpose |
|---|---|
| Overview | Manipulate the windows and workspaces that exist right now |
| Workspace Profiles | Save and reconstruct a complete working environment |
| Workspace Compactor | Remove gaps from the current workspace numbering |
| Workspace Map | Assign independent workspace ranges to monitors |