One chord to split — or just click, because everything drawn is a
real target.
click the middle of a border to split toward it
drag the gap to move the boundary
drag a pane by its title to swap it
zoom, tab away, come back — nothing lost
Sessions outlive everything.
Detach, let the ssh connection die, come back tomorrow: every pane
exactly where you left it.
detach mid-thought, reattach mid-thought
keep separate sessions for separate lives — hop between them
a command that died while you were away keeps its output, its
exit status, and offers [re-run]
Layouts that reflow the way you expect.
The arrangement is derived from the window, never stored — so every
size gets a sensible layout, and nothing drifts.
quarter-turn the whole layout in place
shrink until boxes become a tidy list
grow back: the exact arrangement returns
Make it yours, live.
One config file, re-read the moment you save — and C-ae opens it right there, in a pane.
retheme the whole session in one substitution
padding, gaps, titles — every knob, applied as you watch
compact true: a different school of borders entirely
Colour passes, written as expressions.
Dim, tint, rulers, spotlights — over a pane's cells or over its
frame, with strengths computed from x, y, the
cursor, the clock.
tint a frame, rule a column, scanline the lot
a spotlight that follows the cursor as you type
:load shine — a shipped preset runs light along the frame
a pane rings unfocused — its border flashes
Built to be driven.
One JSON object per line over the session's socket — the same depth
the keyboard gets. An agent can hold the other end.
split and rename panes from a script, replies and all
a program draws status and buttons into its own frame
the click comes back on that program's stdin
Floats, and the small comforts.
C-aF drops a throwaway shell on top of
whatever you are doing — a monitor, a man page, a quick command.
it casts a shadow, so it never passes for a tile
move it with the keys that move boundaries; grow it about its
centre
C-a? — a cheatsheet built from the
bindings actually in force, so it cannot disagree with your
keyboard
exit closes it like any shell — the layout never
flinched
try it
A riscv64 Linux with slosh as the thing you land in, booted right here.
Nothing is installed, nothing leaves the tab, and the machine is throwaway
— reload for a fresh one. About 11 MiB streams in while it boots.
Prefer a whole tab?
riscv64 · TinyEMU, compiled to wasm · yours until you reload
The machine is yours until
you — that forgets it entirely, and the button comes back.
install
Prebuilt binaries for the popular platforms live at
slosh.foo/dist — one static file each, checksummed. The
tabs below are the short roads to one: an installer for linux, a brew formula
for macos, a signed pacman repo for arch, a zip for windows. Building from
source works too, but you never need to.
$ curl -fsSL https://slosh.foo/install.sh | sudo sh
$ curl -fsSL https://slosh.foo/install.sh | PREFIX=$HOME/.local sh # no root
Piping a URL into a shell should make you flinch —
read it first, it is short: it picks the
prebuilt static binary for your architecture from
dist/, checks it against the published SHA256SUMS,
and puts the one file in PREFIX/bin. The sudo in the first
line is only for writing to /usr/local/bin; the second line
needs no root at any step and lands it in ~/.local/bin.
Nothing compiled, nothing else touched.
$ brew tap sl0p/slosh https://git.sl0p.foo/homebrew-slosh.git
$ brew install slosh
No Homebrew? The linux tab's installer works here too —
on Apple silicon it fetches the signed prebuilt binary from
dist/, verifies it, and installs that. No Xcode, no
build.
Built, signed packages. Enroll the signing key first —
the key, the fingerprint to check and the PKGBUILD are in
contrib/arch,
the same instructions at arch/.
> curl.exe -LO https://slosh.foo/dist/slosh-<version>-windows-x86_64.zip
> tar xf slosh-*-windows-x86_64.zip # tar ships with Windows 10+
Pick the newest zip from dist/ —
x86-64 and ARM64, Windows 10/11. Inside is the same one binary:
slosh.exe, no runtime dependency beyond the OS. Panes are
ConPTYs, sessions are AF_UNIX sockets, everything on this page works
there — the details.
$ git clone https://slosh.foo/src slosh && cd slosh
$ make vendor # the vendored terminal core, once$ make # about a second$ sudo install build/slosh /usr/local/bin/
For the curious — the tabs above hand you this same
binary prebuilt. Needs zig 0.16 and
nothing else: no cmake, no autotools, no libraries. The result is one
static binary.