mikenew
This is awesome! I hate the way tmux hijacks so much of my terminal's behavior (scrollback, seaching with escape-/, etc.) and I've been looking for something like this that will manage persistent sessions without any extra nonsense.

BTW I think your readme shouldn't just characterize it as a resumeable ssh tool. I often need to start a long running process that I want to reconnect to later, or I want to put some always-on system service inside a tmux container so I can easily jump in and see logs or mess with things in one way or another. There's a lot of utility besides just handling network dropouts.

jauntywundrkind
There's also the longstanding option dtach, which similarly seems to be a lightweight re-attachable way to run a program. https://github.com/crigler/dtach

For a while I was running neovim on dtach, which let me host all the terminals I might want. It has long felt weird that we have so recursively many layers of management and navigation: the OS juggling multiple terminals, tmux juggling multiple shells, and neovim juggling multiple windows. I was doing pretty good in full screen neovim for a while, but have backed down a bit, still find tmux navigation a bit faster.

Scarbutt
Besides persistence, terminal multiplexing is one of the greats things of tmux. If I'm programming on a remote machine I don't want to open a new ssh connection from each of the five terminals that I need. Seems tedious when I can just create a new window inside tmux. Even locally, I don't want to have 10 terminals opened (or tabs), tmux lets you have multiple terminal windows/panes from a single physical terminal and lets you easily group and switch between them into what they call sessions.
149765
Not sure, if it's a bug, but it eats 1.4G memory after running find for a few seconds, detaching, re-attaching and running find again.

        Active: active (running) since Fri 2024-06-14 19:26:55 +05; 27s ago
    Invocation: d84b9281e0f64a798c4e555836815036
    TriggeredBy: ● shpool.socket
    Main PID: 3895609 (shpool)
        Tasks: 15 (limit: 154377)
        Memory: 1.4G (peak: 1.4G)
            CPU: 6.566s
        CGroup: /user.slice/user-1000.slice/[email protected]/app.slice/shpool.service
                ├─3895609 /usr/local/bin/shpool daemon
                ├─3895629 -fish
                ├─3895719 systemctl --user status shpool
                └─3895720 pager
gregwebs
Unbundling tmux is a great concept!

Other tools that can overlap in use case are EternalTerminal and mosh which provide sessions that survive disconnects.

radarsat1
Looks nice. One feature I'd like is a read-only mode. Sometimes I want to execute a long running process and be able to just watch it run without risking that I hit Ctrl C by accident. I was surprised to find that Screen doesn't support this, I guess probably tmux does. tail is fine but I don't always want to record a huge log file.
VagabundoP
I always found tmux and screen clunky to use when all I wanted was the persistence so this project is right up my alley.
themk
This seems to suffer the same problem as abduco, which is, you better be reconnecting from the same terminal (don't change your termcap). Fine if working from a single machine.

I did notice they have a vt100 emulator, but it's only used for screen restore?

It seems the focus of the tool is for reconnecting from the same machine.

eigenvalue
nohup is also useful for this situation, but a lot of people don’t seem to know about it!
johnisgood
So, I ran `shpool attach foo`, and I got this:

  shpool:foo foo@bar ~ $ shpool detach  foo
  printf: usage: printf [-v var] format [arguments]
  -bash: "\033]0;%s@%s:%s\007": command not found
  -bash: "${USER}": command not found
  -bash: "${HOSTNAME%%.*}": command not found
  -bash: "${PWD/#$HOME/\~}": No such file or directory
Anything I'm doing wrong?
santiagobasulto
I love tmux. I don't think this is a replacement for it. At most, for `screen`. I use tmux locally for my day to day work. I have different named sessions for different things I'm doing (switching back and forth) and I have multiple windows and panes. The best thing is that I can switch terminal emulators without having to learn any new keyboard shortcuts.
chaps
This is more of a `screen` replacement than a `tmux` replacement, yeah? Was hopeful for an actual replacement (no, not iterm) to tmux.
cryptonector
> The biggest advantage of this approach is that `shpool` does not break native scrollback or copy-paste.

tmux/screen do not break copy-paste. And that tmux/screen have their own scrollback is a feature.

The selling point for shpool is simplicity, which I appreciate. I need terminal multiplexing, but I might use shpool here and there.

rabite
This is absolutely awesome. For ages I have needed an alternative to mosh that did not require UDP -- I run every outbound connection over Tor, so I only have TCP transport available. This is an incredible improvement to my quality of life.
pnutjam
Why is this better then the old school "screen"?
tasuki
Oh, this might be the missing piece of the puzzle for me to get rid of tmux!

I've been using screen/tmux for a long time. Recently I switched to kitty[0] locally. I like kitty a lot! But I've been stuck with tmux on my servers for session persistence.

[0]: https://sw.kovidgoyal.net/kitty/

jamal-kumar
Years ago I had a boss who gave me a hard time for how much resources tmux was using on linux and said that it performed fine where it's developed natively (openbsd) but something in it was making it eat resources compared to screen on constrained linux systems. I wonder if this is still the case?
mdaniel
what is going on with this submodule URI? https://github.com/shell-pool/shpool/blob/v0.6.1/.gitmodules...

I'm guessing based on the Change-Id in its commit message <https://github.com/shell-pool/shpool/commit/6cef5782e358716a...> this was exported from some internal Google repo but for the rest of the world it makes $(git clone --recursive) real mad

tambourine_man
This looks awesome, what a great simple idea. I like tmux, but native smooth scrolling is so much better. So is searching, copy and pasting.

Is it tested on macOS? Ready for use in production?

Thanks

alphabetatheta
What were the core workflows at google you guys were looking to replace ?
nazgu1
I like it. Recently, I realized that I’m looking for tools that are doing one thing well. It looks like such tool and I will give it a try
animegirl2024
The project is awesome. I like the terminal session tool that can help to improve my job. Thank you for your sharing.
feel-ix-343
Will this one not try to be a window manager?
pipeline_peak
We live in a GUI world and you’re on a terminal, how much space does Tmux take up exactly?
praveen4463
Will use it for sure. starred it.
zft
screen is lightwight tmux alternative
blacklion
No mention of screen? I'm too old.
randomtoast
A lightweight tmux alternative? Tmux is already an incredibly lightweight C program in terms of binary size and resource usage.
superfish
I super duper highly recommend iterm2 (macos) + its integrated tmux support. It was relatively popular in my circles at google when I was there.

It comes with this tool’s benefit of native scrolling/cp paste PLUS the huge benefit of “right click to split vertical/horizontal”.

freddieventura
For me tmux is everything. But I have been looking for 2 utilities they may not exist.

- tty keystroke router: A program that lets you send keystrokes to different tty's (ideally tmux sessions) but not taking over the actual terminal (so sort of a background application , a daemon that listen to a certain key bind and upon pressing it will route all the keypresses to a certain tty/tmux session.

- tty screen real estate extender: Basically be able to link one tty (tmux-window) (attach to it) from two different terminals. These two terminals one of them will be displaying the first N columns second terminal attached will be displaying from N till width of the tty (so you can hook up two monitors and widden your ttys)

nrh
I'd love to try this, but most of the places that I would want to use it are servers, and the rust requirements are way beyond where debian-stable lives.

Too much hassle to muck with backports and package pinning for a QoL tool - my feedback would be to try to make this install without tomfoolery on the stable branch of major distros.

KingOfCoders
Recently learned about Zellij and it replaced my tmux usage.
beryilma
How could this be a tmux alternative if it only provides session persistence? I use tmux mostly for layout (tiles, multiple windows, etc.) and not for session persistence necessarily. I don't know if this is why other people also use tmux, but I am not sure if "alternative" is the right word here.
1vuio0pswjnm7
"The main way that shpool differs from tmux is that tmux is a terminal multiplexer which necessarily means that it offers session persistence features, while shpool only aims to be a session persistence tool. In contrast to tmux the philosophy of shpool is that managing different terminals is the job of your display or window manager, not your session persistence tool."

What if the computer user does not use a window manager. Many years ago I stopped using X11 and started using textmode only. Then tmux was released and appeared in NetBSD packages collection, it soon went into NetBSD base and I have been using it with almost zero problems ever since. If I am forced to run a graphics layer so that I can run a window manager so that I can run shpool, then is this solution truly "lightweight". The shpool program might be lightweight but the system I would need to run it would be heavyweight, when compared with textmode, no graphics.

For me, an assessment of "lightweight" also needs to consider the compile-time requirements. For example, I use a static copy of GCC that weighs in at 242.3 MiB and I can obtain libevent and libtinfo, the only two third-party tmux dependencies, from any number of mirrors across the internet. I like that GCC does not try to connect to the internet by default, or otherwise. When I lose an internet connection, I use the time to compile programs. GCC, and probably most if not all C compilers, add no friction to doing that.

slt2021
I used to use tmux, but then switched completely jupyter terminals.

my browser is my terminal now, and I can easily upload/download files via browser (dont type SCP anymore) with a mouse click, open terminal windows, open Python notebook and do stuff.

life has never been easier after I completely switched to jupyter notebooks+terminals

plus, because it is browser based, I can roam from multiple devices.

wetpaws
see also: byobu

https://www.byobu.org/

fabiofzero
[flagged]
Manabu92
[flagged]