そういえば最近になって、 shpool のことを思い出して使っている。
Shpool は ssh のセッション維持だけをしてくれるだけのツールだ。リンク先でもあるように、tmuxとかGNU screenとかのうち、セッション維持だけしか使ってないんだよなという自分みたいな人間のニーズを満たしてくれるツールである。確か昔 Hacker News で紹介されて存在を知ったのだと思う。
昔は自分も GNU screen を使っていて、ある時期から tmux に移行していたわけだけど、やがてこういうツールを使うのをやめてしまった。
やめちゃった理由だけど、そもそもターミナルを使ってなんでもやる、というようなワークフローから変わってしまったというのが一つある。昔は Emacs もターミナルの中で動かして、Emacsのタブとシェルのタブがあったりしたのだけど、今は VS code やその派生物を使っている。結局使ってるタブは一つだけ、みたいな状況になってきた。
それでも tmux の大きな利点としてセッション維持というのはある。作業環境はリモートにあるLinuxで、手元のラップトップデバイスからそこにアクセスする、みたいな仕事環境だったりして、そうなるとやっぱり細かなこと(出勤中に微妙にオフラインになるとか)でセッションが途切れちゃうのは結構悲しい。が、正直なところセッション維持のためだけに使うには tmux は微妙だな、とも思っていた。一番大きな問題として、tmuxが画面全体を支配してしまうというのがあると思っている。スクロールヒストリなどもtmux任せになり、そちらのキーバインドを覚えないといけないし、せっかくのターミナルアプリ側のヒストリには何にも残らない。
で、単にシェルをそのまま使っていて、タブなどはターミナルエミュレータアプリのタブ機能を利用していた。正直これで自分的には全然問題ないと思っている(自分は画面分割とか凝ったレイアウトは全く使わない主義だったし)。でもまぁたまにセッションが切れるのが不便だなとは思っていた。
そこで shpool です。 shpool は上で述べたような不満が全て解消されている。機能がセッション維持に特化されていてタブとかそういう機能は一切ない。そういうのはターミナルエミュレータを使えばいい。そういう割り切りというか、自分的には欲しい部分だけがある、といったツールであった。
githubのREADMEでは、デーモンを立ち上げてsshの設定で……みたいな凝った設定が書かれているが、そういう凝った設定は一切やっていない(面倒なので)。ログインしたら手動で shpool attach main みたいな雑な名前のセッションにアタッチするだけということをやっている。面倒? いや自分としては別に面倒でもないかな。
不満点。プロンプトに勝手に shpool セッションの情報を表示してくれるのだけど、なんか他の機能と conflict しているような気がする。あんまり調べていないがちょっと微妙。あとたまにおかしな挙動になって復旧などで困ることがあるのだけど、再現条件等が煮詰まっておらずよくわかってない。ターミナルを制御するアプリ起動時にセッションが切れるとターミナルの状態がおかしくなる、とかだろうか。あと disconnected 状態になったセッションがンビ化することがある気がするのだけど、これも再現条件とかがよくわからないし対処法もよくわからない時がある。ツールとしてはもう少し成熟する余地がありそうなのだけど、この辺は自分で貢献するところまではなかなか行かなそうなので頑張って欲しいなぁなどと他人事で思っている。