aboutsummaryrefslogtreecommitdiffstats
ModeNameSize
d---------.agents / skills / driving-slosh33logstatsplain
-rw-r--r--.clang-format1993logstatsplainblame
-rw-r--r--.git-blame-ignore-revs501logstatsplainblame
d---------.githooks74logstatsplain
-rw-r--r--.gitignore1383logstatsplainblame
-rw-r--r--LICENSE1087logstatsplainblame
-rw-r--r--Makefile23719logstatsplainblame
-rw-r--r--Makefile.macos15605logstatsplainblame
-rw-r--r--Makefile.windows3995logstatsplainblame
-rw-r--r--README.md2802logstatsplainblame
-rw-r--r--THIRD-PARTY-LICENSES2912logstatsplainblame
-rw-r--r--VERSION6logstatsplainblame
d---------compat / win30logstatsplain
-rw-r--r--config.kdl7400logstatsplainblame
d---------config80logstatsplain
d---------contrib892logstatsplain
d---------docs559logstatsplain
d---------include684logstatsplain
-rw-r--r--logo.txt811logstatsplainblame
-rw-r--r--macos-release.mk.example2876logstatsplainblame
-rw-r--r--ruff.toml2442logstatsplainblame
d---------src1004logstatsplain
d---------tests3413logstatsplain
d---------vendor127logstatsplain
d---------web365logstatsplain

slosh

A terminal multiplexer: panes, tabs, and sessions you can detach from, written in C on top of libghostty-vt.

this repository also contains all code used for generating slosh.foo: the website, with a feature tour, the rendered docs, and a bootable in-browser demo.

Install

Prebuilt binaries for every platform are on the latest release page.

macOS

With Homebrew:

brew tap sl0p-foo/slosh
brew install slosh

Linux

Building from source needs zig 0.16 and nothing else, and the result is one static binary that runs on any distro:

make vendor    # the vendored terminal core, once
make all       # about a second
sudo make install         # optional: /usr/local/bin/slosh
# make install PREFIX=$HOME/.local   # ...or somewhere you own

(The source build works on a mac too; Homebrew is simply the shorter road there.)

On Arch, a pacman repository serves built, signed packages. Enroll the signing key (fingerprint 0F67C909938CFFA8A76B59FD8D69B55A0E9056B9; the same key is contrib/arch/slosh.asc in git, so the two copies can be compared):

curl -fsSLO https://slosh.foo/arch/slosh.asc
sudo pacman-key --add slosh.asc
sudo pacman-key --lsign-key 0F67C909938CFFA8A76B59FD8D69B55A0E9056B9

then, in /etc/pacman.conf:

[slosh]
Server = https://slosh.foo/arch/$arch

and pacman -Sy slosh. Details, and the PKGBUILD for building it yourself: contrib/arch.

Windows

Windows 10/11, x86-64 and ARM64, as one slosh.exe with no runtime dependency beyond the OS. Panes are ConPTYs and sessions are AF_UNIX sockets, so everything below works there too; see docs/windows.md.

Cross-compiled from a mac or a Linux box, then copied across:

make -f Makefile.windows ARCH=x86_64    # or ARCH=aarch64

The binary lands at build/win-<arch>/slosh.exe; the dist target zips it with its licensing paperwork, and make release builds both architectures alongside the Linux and macOS artifacts.

Run

slosh              # attach to session "main", creating it if needed
slosh -s work      # a named session
slosh ls           # what is running

Sessions survive detaching and your ssh connection dying, and several terminals can share one at once. The last client to interact controls the layout size; smaller terminals follow the cursor over a crop and larger ones get blank filler. Then C-a \ to split, C-a ? for the keys, C-a p for every command by name.

Docs

For more comprehensive documentation see docs/ or browse it online.