Split your terminal.Keep it running when you leave.
slat tiles one terminal into panes, tabs and workspaces. Your shells live in a small background process, so closing the window, or losing the SSH connection, ends nothing. Run slat again and it's all there.
Try it here
This is slat in your browser. Click it, press Ctrl S then v to split, or ? for every key.
- v
- Split left / right
- h
- Split top / bottom
- o O
- Next / previous pane
- arrows
- Pane in that direction
- z
- Zoom pane
- x
- Close pane
- c
- New tab
- n p
- Next / previous tab
- 1-9
- Go to tab
- X
- Close tab
- ?
- This help
Press any key to close.
The real thing, in 19 seconds
A recorded slat session: a split, htop beside a test run, a search back through the output, then closing slat and finding it all still running.
Close the window. Nothing stops.
The first slat you run starts a background process that owns every shell. The window you type in is only a view onto it.
Start
Run
slat. Split panes, open tabs, start a build or a server.Leave
Press the prefix then d, or just close the terminal. Everything keeps running.
Come back
Run
slatfrom any terminal. Every pane is exactly as you left it, output included.
Small, and careful about the details
No configuration needed, and nothing to learn beyond one prefix key.
Every pane has its own screen
slat emulates a terminal per pane, so clear, vim or htop in one pane never touch their neighbours, and nothing is lost when you split, close or switch tabs.
Scroll back and search
Every pane keeps its recent output. Page back with vim keys or your mouse wheel, and search with / while new output keeps arriving.
Only what changed is sent
Each frame is compared with the last, and only the differing cells reach your terminal. Fast over SSH: half a million lines of output take about a third of a second.
New panes start where you are
A split opens in the directory of the pane you split from, and a typo in your config is reported the moment you start slat.
Install
Packages for Linux and macOS, on both amd64 and arm64.
# Trust the repository's signing key
curl -fsSL https://noturbob.github.io/slat/apt/slat.gpg \
| sudo tee /usr/share/keyrings/slat.gpg > /dev/null
# Add the repository
repo=https://noturbob.github.io/slat/apt
echo "deb [signed-by=/usr/share/keyrings/slat.gpg] $repo stable main" \
| sudo tee /etc/apt/sources.list.d/slat.list
# Install
sudo apt update
sudo apt install slat
Add the repository once; after that, apt upgrade keeps slat current.
curl -LO https://github.com/noturbob/slat/releases/latest/download/slat_linux_amd64.pkg.tar.zst
sudo pacman -U slat_linux_amd64.pkg.tar.zst
An AUR package (yay -S slat) is on the way.
sudo dnf install \
https://github.com/noturbob/slat/releases/latest/download/slat_linux_amd64.rpm
Also works on RHEL and other distributions that use .rpm.
go install github.com/noturbob/slat/cmd/slat@latest
Needs Go 1.23 or newer. Prebuilt binaries are on the releases page.
Keys
Press the prefix, Ctrl S unless you change it, then one key. Everything else goes straight to your shell.
| v h | Split left / right, top / bottom |
| o O | Next / previous pane |
| arrows | Pane in that direction |
| + - = | Grow, shrink, equalize |
| z x | Zoom, close |
| [ | Scroll back; / searches |
| c X | New tab, close tab |
| n p 1–9 | Next, previous, go to tab |
| W w P | New, next, previous workspace |
| , $ | Rename tab, workspace |
| d q | Detach, quit |
| ? | Show every key |
Make it yours
Change anything in ~/.config/slat/config.toml. Keys you don't set keep their defaults, and mistakes are reported when slat starts.
prefix = "C-a"
shell = "/bin/zsh"
scrollback = 5000
[keybinds]
split-vertical = "|"
split-horizontal = "-"
resize-shrink = "_" # "-" was taken above