Panels
Terminals
Deska terminals are full shells with a few extra powers: a smart action bar that spots URLs, files and errors, and the ability to resume agent conversations after a restart.
The basics
Each terminal panel is a real shell backed by a native pseudo-terminal, so everything you expect works: pipes, redirects, background jobs, environment variables, your aliases and prompt. Add as many terminals as you like; each lives in its own panel.
Scrollback is saved with your workspace, so closing and reopening a project keeps your terminal history intact. Search the scrollback with Cmd/CtrlF.
Terminals follow the app theme by default, and Settings → Workflows → Terminal is where you change the default: pick a color preset or import your own, alongside the font, the scrollback size and the shell Deska launches. A single terminal can override the default theme from its tab’s right-click menu. On Windows the same group picks between PowerShell and cmd.
The smart action bar
As commands run, Deska watches the output for things worth acting on and surfaces a single suggestion in a slim bar at the bottom of the terminal. Press AltEnter to accept it without reaching for the mouse.
- Open links in the right place (more below).
- Jump to files: a path with a line number like
src/app.ts:42from a compiler error opens that file at that line. - Insert the suggested next command when a tool hints at one. The command is placed at your prompt without running it, deliberately leaving the Enter to you.
- Fix common errors with a one-click correction, or a hand-off to Ask Deska for trickier ones.
Links open in the right place
URLs in your output are clickable, and Deska routes them intelligently rather than blindly opening everything:
- Sign-in and OAuth links always open in your system browser, because embedded web views break most auth flows.
- Local dev-server links (localhost and friends) open in a Browser panel right next to your work.
- Links labelled as backend or API endpoints are skipped to cut the noise.
You can set how eagerly this happens in Settings → Workflows → Browser → Links: Off, Automatic, or Ask before opening. Once you accept a dev URL on a given port, further links on that port open without asking for the rest of the session; after a restart Deska asks again.
Error help
Deska recognizes a handful of common failures and offers a targeted fix:
- Command typos (like
gtiforgit) suggest the corrected command. - Missing modules suggest the right install command based on the lockfile in your project (npm, yarn or pnpm, plus bun when a
bun.lockblockfile is present). - Port already in use offers to free the port in one click.
- Anything it cannot fix directly can be handed to Dex.
Resuming agent conversations
When you run a coding-agent CLI in a terminal, Deska quietly remembers which conversation was running. Reopen the workspace and the agent picks up the same thread, even if you had several running in the same folder.
This works out of the box for Claude Code (claude), Cursor (cursor), Gemini CLI (gemini), Codex (codex), opencode (opencode) and PI Agent (pi), a third-party CLI. The integration is injected automatically for zsh; other shells keep working exactly as before. You can turn resuming off in Settings → General → On launch → Restore agent sessions.
The server chip
A terminal panel has one piece of chrome, its header, and the header carries a live chip whenever there is something real to report. Deska watches what runs in the shell and shows the dev stack it detects (Next.js, Vite, and the rest) alongside the primary port that started listening.
Click the port and the page opens in a Browser panel on the canvas rather than in your system browser, because that is where the element picker, the device viewports and the agent browser tools live. The chip disappears again when there is nothing to show, so an idle terminal stays quiet.
When your phone holds a terminal
A terminal can also be opened from your phone through remote access. While the phone holds it, the session is sized to fit the phone’s screen, and the desktop panel shows a Sized for your phone strip with a Take it back button. Press it and the terminal returns to the desktop’s dimensions.