Skip to content

Docking and pop-out windows

Kangentic runs its own window layer over the board. Task detail windows, Command Terminals, and conversation viewers are all the same kind of object: you can drag, resize, snap, tile, and maximize any of them, and several can be open at once so you can watch multiple agents side by side.

Two task windows tiled side by side over the board, Extract auth middleware on the left and Generate API client types on the right, each with Claude Code working in its terminal and a context bar below it showing the model, context use, and cost. v0.46.0 The real app on a sample install. The projects and terminals are recordings, connected to nothing, so click anything.

These are in-app windows, not OS windows. A separate pop-out engine moves individual panels (the Browser pane, Changes, a single file’s diff, Usage Stats, the Agent Monitor) into real OS-level windows for a second monitor; see Pop-Out Windows below.

Every window is in one of four states:

StateMeaning
FloatingFree-standing, at whatever size and position you gave it
SnappedOccupying a half or a corner of the board area
TiledSharing space with other windows in a tile group, with draggable seams between them
MaximizedFilling the area between the title bar and status bar, so window controls and live stats stay reachable

Drag a window by its header, and resize it from any edge or corner. Double-click the header to maximize or restore it.

Press Escape during a drag to abandon it: the window returns exactly where it started and nothing docks. That is also the always-available way to decline a dock you did not mean to trigger.

Docking follows one rule: wherever the cursor is decides what happens. Not the window’s edges, not its center. The cursor.

Run the cursor into an edge of the board area:

Cursor reachesResult
Left or right edgeSnap that half
Bottom edgeSnap the bottom half
Top edgeMaximize

Screen docks arm as soon as the cursor reaches the edge, with no travel requirement. That is deliberate: a window resting near the top of the screen has almost no room left to travel, so requiring movement would make maximize physically unreachable.

A task window being dragged toward the edge of the board, the docking preview showing where it will snap. v0.46.0 A still of the real app on a sample install. The demo cannot hold a drag or an open menu in place, so this scene is a capture and does not respond to clicks.

Aim the cursor at an open window to tile beside it. The target splits into three bands:

  • The left third docks to its left and the right third docks to its right, at any height. Pointing at the left side always means dock left.
  • The middle third docks above or below, depending on which half of the window you are pointing at.

Unlike a screen dock, a window dock has to be earned. The pointer must travel a fair distance before it arms, so nudging a window that already sits over another one just repositions it instead of docking. The trigger for a window dock can already be true the moment you press, which is why position alone is not read as intent.

Once windows are tiled, drag the seam between them to rebalance. The Pop out control in a window’s header floats it back out of the tile group; the windows left behind stay docked and keep their widths, except that a two-window group dissolves entirely so both float.

The snap ladder works without the pointer. Ctrl+Shift+Left / Cmd+Shift+Left and Ctrl+Shift+Right / Cmd+Shift+Right take halves, while Ctrl+Shift+Up / Cmd+Shift+Up and Ctrl+Shift+Down / Cmd+Shift+Down are stateful: Up maximizes a floating window and moves a half-snapped one to its top corner, Down restores a maximized window and moves a half-snapped one to its bottom corner. Repeat presses walk between halves and corners. Ctrl+Shift+M / Cmd+Shift+M maximizes or restores.

See Hotkeys for the full table, including the panel toggles and how to rebind any of it.

Close a window with Escape, Ctrl+Shift+W / Cmd+Shift+W, a middle-click on its title bar, or by clicking empty space outside it. Pausing an agent from the task detail header also closes that window.

An open menu takes Escape first. A kebab menu, a sort menu, or a view-options popover dismisses itself and stops there, so the first Escape over an open menu never closes the task window behind it. Press it again once the menu is gone to close the window.

Closing a window never stops the agent. While a window owns a session the bottom terminal panel releases it, and closing the window hands the session back.

A task window holding a loaded Browser pane for a running agent is parked rather than torn down: it disappears from the board the way any close does, but the page behind it stays loaded, so reopening the task gives you the same tab with its state intact. The park ends by itself once the agent’s session stops or the page is closed.

Window geometry is stored as a fraction of the board area rather than in pixels, so a saved layout survives a resized window, a different monitor, or a change in screen resolution.

Layouts are per project and restored on both project switch and app restart. A backgrounded project keeps its windows, which is what lets an open Browser pane stay alive while you work elsewhere. The Command Terminal is the exception: its layout persists globally, so it reopens the same way on every project.

The in-app windows above never leave the main window. For a second monitor, six surfaces can detach into a real OS window of their own through a pop-out button in their header:

SurfaceScopeNotes
Changes panelOne per taskClosing the window leaves the panel closed; click Show changes to bring it back inline
Single-file diffOne per file, up to eight at onceOpens maximized until you resize one; double-click a file row or pick Open in new window
Browser paneOne per taskClosing the window returns the pane to its split in the task window; Close browser is not offered from a pop-out
Usage StatsOne, global
Agent MonitorOne, globalSurvives project switches; the title-bar icon and Ctrl+Shift+M / Cmd+Shift+M focus the window while it is open, and detail windows opened inside it move with it
Knowledge GraphOne, globalThe title-bar icon and Ctrl+Shift+A / Cmd+Shift+A focus the window while it is open

Each surface remembers its size, position, maximized state, and the display it was last on, per surface rather than per task, so the Changes window for any task reopens on the monitor you keep diffs on. Opening a pop-out that already exists focuses it rather than making a second. Everything a detached surface shows stays live: the same session, diff, and monitor pushes that reach the main window are fanned out to every open pop-out.

Kangentic is free and open source. A star helps other people find it.

Star on GitHub