Tool floats

A tool float is a command on a shortcut that floats over your work and closes again. Reach lazygit, a system monitor, or a dev server without leaving your pane layout. One ships built in, and you define the rest.

Scratch, the one that ships

; opens Scratch, a blank login shell in a card over your work. Press it again and the card goes away with the shell still running, so the next press puts you back where you were, scrollback and all. Type exit and it dies; the press after that gets a fresh one.

Each tab gets its own, the way each tab gets its own drawers, and closing a tab closes the shell in it. Scratch has no float = line and no Settings row, so a clean install still writes nothing to disk. Rebind it under Shortcuts like any other action, or hide its toolbar button with hide-toolbar-buttons = scratch.

Add a tool float

Open Settings with , and choose Tools, then Add tool float. Give it a command to run, a shortcut to toggle it, and an icon for the toolbar. Point one at lazygit on L and that chord floats lazygit over your panes, then closes it on the same key.

zen-termfeature/zen-83…
swift build
Building for debugging…
Build complete! (4.21s)
1ZenTerm2Craftwork
1 · Status
zen-term ↑1
3 · Branches
feature/zen-83-build-zenter…
main
4 · Commits
fa76ac0Build ZenTerm landing page
0c43ca0Scaffold landing from template
d3fcde9Add-Project form + modal slot
13523c9Workspaces: deliberate project list
Log
commit fa76ac0
Author: Drew White
Date: 2 minutes ago
Build ZenTerm landing page (ZEN-83)
Checkout: spaceNew branch: nRebase: rCancel: esc
A tool float: lazygit on ⌘⇧L

The same recipe works for btop, gh dash, or a dev server. Each float you add gets a toolbar button, a command-palette entry, and the shortcut you set.

Keep it warm

A float starts fresh on each open by default. Its persist setting changes that:

  • none closes the process when you dismiss the float, so each open is fresh.
  • dir keeps it alive per directory. The first open in a repo is cold, and reopening in the same repo is instant.
  • window keeps it alive for the window, reachable from any tab.

Keep lazygit on dir and it reopens on the same repo without rebuilding its status.

Open it only in a Git repo

Set git on a float and it opens inside a Git repository and nowhere else. Bind lazygit that way and L stays quiet in a plain directory, which is what you want from a tool that has nothing to show without a repo.

Edit the file directly

Settings writes each float to a float = line in your config. The configuration reference lists every field a float takes, including a pinned working directory, its position in the toolbar, and the fraction of the tab it covers.