Get started
Workspaces & the canvas
The infinite canvas is where your panels live. Learn to pan, zoom, place and group panels, then manage multiple projects with workspaces.
The infinite canvas
Every workspace is one borderless, infinite canvas. Panels float at fixed positions in canvas space, and you move a viewport over them, so the whole layout scales smoothly as you zoom and there is always more room to spread out.
A faint grid in the background helps you line things up. Click any empty area to clear the current focus.
Panning & zooming
There are a few natural ways to move around:
- Pan with a two-finger trackpad scroll, or by holding the right mouse button and dragging. A right-drag releases with a little inertia so it feels physical.
- Zoom by holding Cmd/Ctrl and scrolling: up to zoom in, down to zoom out. Zoom is anchored to your cursor.
Or use the keyboard:
- Cmd/Ctrl= zoom in, Cmd/Ctrl- zoom out.
- Cmd/CtrlShift0 reset to 100%.
- Cmd/CtrlShift1 zoom to fit every panel in view.
Placing & focusing panels
Add panels from the Panel Library (Cmd/CtrlShiftE), the Command Palette (Cmd/CtrlK), or by right-clicking empty canvas. New panels are placed at a free spot and focused automatically. Or double-click empty canvas: a compact panel palette appears where you clicked and spawns the panel at that exact spot.
- Focus a panel by clicking its title bar. It gains a glow and rises to the top.
- Move it by dragging the title bar; resize from any of the eight handles around it.
- Maximize or restore by double-clicking the title bar.
- Close the focused panel with Cmd/CtrlW, or delete it with Cmd/CtrlBackspace.
- Cycle focus with Ctrl` and CtrlShift`, or open the Panel Switcher with CtrlSpace.
Regions, selection & layout
As a canvas fills up, you can organize it. Click and drag on empty canvas to marquee-select panels, or Cmd/CtrlA to select everything.
- Group into a region with Cmd/CtrlG, which draws a labelled, colored container around them. Dissolve regions with Cmd/CtrlShiftG.
- Auto Layout (Cmd/CtrlShiftL) tidies panels into a non-overlapping arrangement. If panels are selected, only those are rearranged.
- Right-click empty canvas for the create menu: New task, New Terminal, New Editor, New Browser and New Sticky Note, a Pinned submenu of the panel types you have pinned, a Panel Library entry, and paste (a URL becomes a browser, plain text becomes a sticky note). Regions and text labels live in the Panel Library.
On-screen controls
Deska keeps its chrome light and pushed to the edges, so the controls you reach for are always to hand without crowding your work:
- The corner clusters (top): floating glass clusters instead of a full-width title bar. Top-left holds the brand mark, the workspace pill and the folder crumb; top-right holds the session timer, agents, your phone, search, the settings gear, notifications and your account.
- The project rail (left edge): your workspace tiles in the Spaces island. Under each tile sits one short tick per worktree, in the same order the island lists them: hover a tick to read its branch, click it to switch there. Hover the island itself and it widens, turning every tile into a row with that project’s branches listed underneath, five at a time. It is the only chrome on the left. See Panels overview.
- The Add island (bottom): a glass pill beside the voice center with a quick-spawn strip (editor, terminal, browser, note and New task) and the Panel Library button.
- The ambient dock (bottom-left): a small keychain of always-present mini-panels, a note chip, a pomodoro disc and a music disc. At rest they fold into a stack fronted by whatever is actually running; hover and they fan out.
- The voice center (bottom-center): the home of Dex, where you type or talk to the assistant.
- The navigation cluster (bottom-right): a minimap stacked above a zoom pill (zoom out, the current percentage, zoom in, and zoom-to-fit). The minimap is a bird’s-eye view of every panel and region with a rectangle marking where you are looking; click to jump there, drag its corner to resize, or toggle it with Cmd/CtrlShiftM.
- The notebook (right): a floating companion whose pages are panels, summoned and folded with Cmd/CtrlJ. Use it for the things you want beside your work without giving them canvas space. See Notes & the notebook.
- The time scrubber: an optional slider over the canvas for stepping back through saved layouts. See Snapshots & time travel below.
Docking & tab stacks
Panels do not have to float separately. Inside a canvas node you can combine panels into tab stacks and splits, handy for keeping, say, two editors or an editor and its terminal in one tidy block.
- Drag a tab onto a split divider to split the node; drag onto the center to merge.
- The + button on a tab strip adds one more panel of the active tab’s type. The split button lets you choose a direction and a panel type.
- Drag a tab out to pop it into its own floating node or a separate window.
Workspaces
Each project gets its own workspace: a separate canvas with its own panels, zoom and viewport. The project rail down the left edge lists them as colored tiles in its Spaces island. Create, rename, recolor, reorder or close workspaces from there, and drag one tile onto another to fold them into a folder.
- Click a tile to switch, or jump straight to one with Cmd/Ctrl1 through Cmd/Ctrl9 (and Cmd/Ctrl0 for the tenth), matching the rail order.
- Cycle with CtrlTab and CtrlShiftTab.
- Give each workspace a color and an icon from a registry of over 200 glyphs, drawn on the workspace’s own color tile. Every workspace starts with a default icon derived from its identity, so no tile is ever blank.
Worktrees
A workspace holds a project, and a project can hold several worktrees, in git’s own sense of the word: the primary checkout, the branches you opened for Parallel Work, and the checkouts an agent is holding while it works. Each worktree has its own canvas. Switch worktrees and the whole surface switches with you; the layout you left is exactly where you left it when you come back.
- The workspace tiles in the rail show dots, one per worktree, so you can see at a glance how much is going on inside a project.
- A crumb in the top chrome names the worktree you are standing on and follows your focus; click it to open the worktree switcher.
- The switcher is built for navigating many worktrees: your main checkout sits first and the rest follow by when you last stood on them, with the age beside each row. Just start typing to search by branch or task title, move with the arrow keys and jump with Enter. Tabs across the top split All, Active and Merged; merged worktrees sink to the bottom, and the Merged tab offers Tidy all to clean every landed checkout in one confirm. Right-click any row to open its pull request, copy the branch name, tidy or remove it.
- Cmd/CtrlEnter opens the jump overlay from anywhere in the app: every project and every worktree, one keystroke away. Workspace tabs run across the top and Tab cycles them; worktree tiles fill the grid below, where 1 to 9 jump straight to one and N cuts a new one.
The checkout behind a new worktree lives under ~/deska/workspaces/<project>/<branch>, so you can always reach it from a terminal and your project’s parent folder stays clean. Worktrees created by older versions of Deska in the sibling .worktrees folder keep working where they are.
The workspace overview
When you are juggling several projects, press Cmd/CtrlShiftP for the workspace overview: a meta-canvas of everything you have open. Every workspace is one horizontal lane, with the workspace’s identity at the head and one card per worktree flowing to the right: the primary checkout, your Parallel Work branches, and any checkouts an agent is holding.
- Click a worktree card to land on that exact worktree; click the lane head to enter the workspace on whatever it was last showing.
- A workspace with no extra worktrees shows its canvas as the lane’s single card, so every lane answers the same question: where can I land here?
- Create a workspace or rename one in place, right on the board; duplicate or delete via the workspace’s context menu.
Detached windows & saved sessions
Need a panel on a second monitor? Drag a tab or a whole dock zone out of the main window to open it as its own window. It stays in sync and re-docks when you close it.
Everything persists automatically. Panel positions, sizes, zoom, dock layout, terminal scrollback, editor state and browser history are saved per workspace and restored when you reopen Deska, with no save button required.
Snapshots & time travel
Deska can quietly keep a rolling history of your canvas layout. With snapshots enabled, it saves the arrangement of your panels and regions in the background, a few seconds after things settle, and keeps the most recent ones per workspace, oldest rolling off as new ones arrive.
Turn on the time scrubber and a slider appears over the canvas. Drag it back and each stop previews an earlier layout, labelled with how long ago it was and how many panels it held; let go and Deska asks before restoring that arrangement, so you never replace your current layout by accident. Release at the far right to stay in the present.