Terminals & tiling
Split your workspace into tiles, navigate them by keyboard, and find anything fast with the command palette.
taiku arranges your terminals as tiles that fill the screen: no floating windows, no hunting for a hidden pane, and everything reachable from the keyboard.
You start every session with one terminal filling the screen. From there you split it into the layout you want, move focus between tiles, and pull up the tools you need with a keystroke.
Most layout shortcuts use Ctrl+Shift in the browser, or Cmd+Shift in
the desktop app (the same physical chord). A second set uses Ctrl+Alt on
Windows and Linux, which is Cmd+Option on macOS. Inside a terminal, plain
Ctrl keys always go to your shell. A few keys belong to the browser itself
(Ctrl+T, Ctrl+W, Ctrl+Shift+N, Ctrl+Shift+W), so on the web those
commands take another key. Every built-in shortcut is rebindable. See
Customize your shortcuts.
Tiled layouts
A workspace with nothing open shows + New Terminal, and the first terminal opens as soon as you click it.
New (the + on the session toolbar) makes a tile of the kind you last chose from its menu, a terminal until you choose another. Rest the pointer on it, or tap it on a phone, to see the menu: Terminal, Agent session, Browser in the desktop app, Remote desktop, Tunnel, and Workspace. Splits always open terminals.
Build a layout by splitting the focused tile. The split keys are Ghostty's:
- Split side by side with
Cmd+Don macOS orCtrl+Shift+Oelsewhere. A new terminal opens to the right, sharing the space equally. - Split top and bottom with
Cmd+Shift+Don macOS orCtrl+Shift+Eelsewhere. A new terminal opens below the focused tile. - Add a fresh terminal with
Ctrl+Shift+N, orCtrl+Shift+Alt+Nin a browser, which keepsCtrl+Shift+Nfor a private window. Open a browser tile withCtrl+Shift+B.
Ctrl+Shift+H still splits too, and so does Cmd+Shift+V on macOS. Elsewhere
Ctrl+Shift+V pastes into the terminal, as in Ghostty.
Drag the divider between two tiles to resize them. To even everything back out,
press Ctrl+Shift+G to reset to a balanced grid, or on macOS Cmd+Ctrl+= to
equalize the splits. To give one tile the whole workspace for a moment, zoom it
with Cmd+Shift+Enter (Ctrl+Shift+Enter elsewhere) and press it again to put
it back. On macOS, Cmd+Shift+E flips the split direction of the current group;
elsewhere that key splits, so flip from the command palette.
| Shortcut | Action |
|---|---|
Cmd+D / Ctrl+Shift+O | Split side by side (new tile right) |
Cmd+Shift+D / Ctrl+Shift+E | Split top and bottom (new tile) |
Ctrl+Shift+N, in a browser Ctrl+Shift+Alt+N | New terminal |
Ctrl+Shift+B | Open a browser tile |
Cmd+Shift+Enter / Ctrl+Shift+Enter | Zoom the focused tile |
Ctrl+Shift+G | Reset to a balanced grid |
Ctrl+Shift+R | Rename the focused tile |
Move between tiles
Move focus with the arrow keys (Ctrl+Shift+Arrow) or the home-row keys
Ctrl+Shift+J, K, L, and ;. Cycle through every tile with
Ctrl+Shift+Alt+C, or Ctrl+Shift+Tab in the desktop app (Ctrl on a Mac too).
Jump straight to one by its slot number with Ctrl+Shift+1-9. Slot numbers
run left to right, top to bottom, and show in each tile's titlebar.
A terminal keeps Tab, Shift+Tab and Escape for the program running in it.
To reach a tile's own controls from the keyboard, press Ctrl+Shift+X (or
Ctrl+Shift+F6): focus moves to the tile's titlebar, where Tab walks its
buttons and Enter presses one. Press it again to go back into the terminal.
Inside a remote desktop, Ctrl+Shift+X belongs to the remote computer, so use
Ctrl+Shift+F6 there.
Maximize & restore
When you want one tile to take over, press Ctrl+ArrowUp to maximize it to the
full viewport. Press Ctrl+ArrowDown to restore the layout exactly as it was.
This is handy when you want to read a long log or focus on a single agent
without losing the rest of your panes.
To tuck a tile away without closing it, minimize it with Ctrl+Shift+M.
| Shortcut | Action |
|---|---|
Ctrl+ArrowUp | Maximize the tile |
Ctrl+ArrowDown | Restore the sizes |
Ctrl+Shift+M | Minimize the tile |
Reopen & swap tiles
Closed a tile by mistake? Press Ctrl+Shift+T in the desktop app, or
Ctrl+Shift+Alt+O in a browser (which keeps Ctrl+Shift+T for its own closed
tabs), to reopen the last one you closed. Inside a browser tile the same key
reopens the browser tab you just closed.
To rearrange your layout, drag a tile by its titlebar and drop it onto another to swap the two.
| Shortcut | Action |
|---|---|
Ctrl+Shift+Q | Close the focused tile |
Ctrl+Shift+T, in a browser Ctrl+Shift+Alt+O | Reopen the last closed |
Each tile can also hold multiple tabs. Outside the macOS app, Ctrl+T and
Ctrl+W belong to your browser or your shell, so tabs open and close on
Ctrl+Shift+Alt+T and Ctrl+Shift+Alt+W. Ctrl+1-9 (Cmd+1-9 on macOS)
jump to a tab, and the Linux and Windows desktop app also switches with
Ctrl+PageUp / Ctrl+PageDown.
| macOS app | Linux and Windows | Action |
|---|---|---|
Cmd+T | Ctrl+Shift+Alt+T | New tab in the tile |
Cmd+W | Ctrl+Shift+Alt+W | Close the tab |
Cmd+[ | Ctrl+Super+[ | Previous tab |
Cmd+] | Ctrl+Super+] | Next tab |
See where a tile came from
A tile opened from something else says so in its titlebar. A diff opened for a shell names that shell, an editor opened from a path you clicked names the terminal it was in, and a file you opened from an agent's conversation names the agent that wrote it. Click the name to jump back to it. If the source has since closed, the name goes away rather than leading nowhere. Saved layouts keep these links when you reopen them.
Command palette
The command palette is the fastest way to do anything in taiku. Press
Ctrl+Shift+P to open it, start typing, and it fuzzy-matches commands, tiles,
and actions as you go. Run the highlighted result with Enter; no need to
remember the exact shortcut. Firefox keeps Ctrl+Shift+P for a private window,
so there it's Ctrl+Shift+Alt+P.
Use it to split tiles, switch pages, open panels, browse clipboard history, or jump to a specific terminal. It's also where you reach actions that have no default shortcut, like starting a tile recording.
Find across tiles
Press Ctrl+F to search inside the focused tile. Find works across every tile
type (terminals, browser tiles, file previews, and diffs), so the same keystroke
searches whatever you're looking at. In a terminal, Ctrl+F and the shell's
other Ctrl keys (Ctrl+E, Ctrl+K, Ctrl+U, Ctrl+W, and Ctrl+[ for vim)
go to the shell, so find there is Cmd+F on macOS and Ctrl+Shift+F on Linux
and Windows, as in most terminals. Close the find bar with Escape.
A terminal's own commands work the same way: a Cmd key on macOS, and on Linux and Windows a key that leaves the shell its Ctrl keys.
| macOS | Linux and Windows | Action |
|---|---|---|
Cmd+F | Ctrl+Shift+F | Find in the terminal |
Cmd+E | Ctrl+Shift+Alt+E | Search for the selected text |
Cmd+K | Ctrl+Alt+K | Clear the scrollback |
Cmd+U | Ctrl+Alt+U | Mark the terminal as unseen |
Cmd+Shift+Space | Ctrl+Shift+Space | Insert a path at the cursor |
Insert a path
Press Ctrl+Shift+Space (Cmd+Shift+Space on macOS) in a terminal to put a
file's path at the cursor. It works at a shell prompt and inside whatever is
running there, like nvim or Claude Code. Type a few letters to search every
file in the project, or type a / to go folder by folder. Enter types the path,
relative to the folder the shell is in and quoted if it needs quotes. Escape
closes it without typing anything. On a phone, it's the folder key on the
keyboard bar. You can turn it off in Settings under Path picker.
Workspace pages
A single session can hold several pages, each with its own layout. Keep one page
for your build terminals and another for a browser preview and notes. Switch
between pages with Ctrl+Shift+[ and Ctrl+Shift+], or jump straight to a page
by number with Ctrl+Alt+1-9. Create a new page with Ctrl+Shift+\.
Your layout (split ratios, tile positions, tabs, and which tile is maximized) is saved per device and restored when you refresh. Opening the same session in a different browser or app starts with a fresh layout.
Clipboard history
Every time you copy text from a taiku terminal, it's added to your clipboard history with a timestamp, so the thing you copied five commands ago is still one keystroke away.
There are two histories that work side by side:
- Your clipboard is private to this device. It holds your recent copies,
whether you used
Cmd+C, the right-click menu, or the touch toolbar on mobile. - The shared clipboard is visible to everyone in the session. When you copy, the clip appears in everyone's shared history tagged with your name, so a teammate can grab your stack trace without you re-sending it.
To paste into a terminal, press Cmd+V on macOS. Elsewhere press Ctrl+Shift+V
or pick Paste from the terminal's right-click menu, since Ctrl+V belongs to
the shell there.
Open clipboard history from the command palette (switch it to clipboard mode),
or jump straight to your device history with Ctrl+Alt+C. From there you can
search by typing, preview the full text of a clip, paste it into the focused
terminal, copy it back to your system clipboard, or clear the history.
This is the core of debugging together: copy a long error log, and your colleague picks it out of the shared clipboard and pastes it into their own terminal: no external chat, no "can you send me that?"
| Shortcut | Action |
|---|---|
Ctrl+Shift+C | Shared clipboard |
Ctrl+Alt+C | Your device's clipboard history |
Side panels
taiku's panels slide in beside your tiles for the things that don't belong in a terminal: who's here, what agents are doing, your connection health, and settings.
| Shortcut | Panel |
|---|---|
Ctrl+Alt+A | Activity (notifications and agent events) |
Ctrl+Alt+W | Users (who's in the session) |
Ctrl+Alt+Q | Chat |
Ctrl+Alt+E | Tunnels (shared local previews) |
Ctrl+Shift+S | Settings |
Ctrl+Alt+N | Network info |
Ctrl+Shift+U | Jump to an unseen terminal |
The Network info panel breaks the connection down hop by hop (from you, to the server, to the shell) so you can see exactly where any latency is coming from.
Customize your shortcuts
Every built-in shortcut is rebindable, and so is every shortcut a plugin brings
with it. Open Settings → Keyboard (or press Ctrl+Alt+S for the full
shortcut reference) and find the keyboard shortcuts list. Search for a command,
click its binding, and press the new combination. The keys you press show live
as you hold them.
A combination that already belongs to another command can't be saved. taiku
names the command holding it and offers to hand the key over, so you never end
up with two commands quietly fighting over one shortcut. It doesn't matter how
you spell it: Shift+Cmd+K and Cmd+Shift+K are the same key.
Two other shapes are available:
- Chords, a leader key then a second key. Press Record a chord, press the leader, then the second key. The waiting leader is shown at the bottom of the screen and clears itself if you don't follow through.
- Single keys with no modifier, for commands that work anywhere. These never
fire while you're typing; a terminal, text field, editor, remote desktop, or
embedded page always gets the key first. Keys that type a character rather
than command the app are treated the same way, since
Shift+Ais a capital A and on a MacOption+Gis©.
The Windows key (Super on Linux) can't be part of a shortcut; your window manager owns those.
Keyboard layouts with AltGr
On a German, French, or other layout with a third-level key, AltGr types a
character, so it can't start a shortcut. taiku says so when you try to record
one. On Windows and Linux the system reports AltGr as Ctrl+Alt, so the
Ctrl+Alt+… defaults are unavailable on those layouts too. Rebind any command
you want there to a Ctrl+Shift+… combination.
Overrides sync across your devices, so taiku only offers a key that works on all
of them. That's why Alt+G is turned down for a command scoped to the terminal
or an editor: on a Mac that keystroke types ©, so the binding would be silent
on exactly the surface the command acts on.
Reset commands returns the built-in shortcuts to their defaults, and Reset plugin keys does the same for plugin ones.
When you install or update a plugin that wants a key something else already uses, taiku tells you and names both, rather than letting the two quietly fight over it. Your own choice always wins: a plugin's declared key is only a default, so an update can never take a rebound key back.