はい、コンピュータを再起動するとセッションが失われます。セッションは保存できません。しかし、スクリプト化することはできます。実際には、いくつかのセッションをスクリプト化して、再作成できるようにすることがほとんどです。例えば、セッションを作成するための簡単なシェルスクリプトを以下に示します:
#!/bin/zsh
SESSIONNAME="script"
tmux has-session -t $SESSIONNAME &> /dev/null
if [$? != 0]
then
tmux new-session -s $SESSIONNAME -n script -d
tmux send-keys -t $SESSIONNAME "~/bin/script" C-m
fi
tmux attach -t $SESSIONNAME
以下のようになります。まず、tmux has-sessionで、その名前のセッションが既に存在するかどうかをチェックします(この場合、オリジナルの名前は “script "です)。リターンコードをチェックします。すでにその名前で進行中のセッションがある場合、"if "サイクルをスキップして最後の行に進み、セッションにアタッチします。そうでなければ、セッションを作成し、そこにいくつかの鍵を送ります(今のところはランダムなスクリプトを実行しているだけです)。その後、「if」ブロックを終了してアタッチする。
これは非常につまらないサンプルです。アタッチする前に複数のウィンドウやペインなどを作成しておきます。
これは、あなたが求めていたものと全く同じではありませんが**。セッションに変更を加えた場合、例えばウィンドウの名前を変更して新しいペインを作成した場合、再起動してももちろんその変更は保存されません。
セッションのスクリプト化を簡単にするツールがいくつかありますが、私は手動で行う方が好きです(その方が汎用性が高いと思います)。それが Tmuxinator と Teamocil です。
私の主な情報源は「The Pragmatic Bookshelf」というTmuxの本でした。
(https://github.com/mislav/dotfiles/blob/d2af5900fce38238d1202aa43e7332b20add6205/bin/tmux-session) は、開いている tmux セッション、ウィンドウ、カレントワーキングディレクトリをそれぞれに永続化します。
tmux-session save
~/.tmux-session
に書き込みます。再起動後、以下のようにリストアしてください。
tmux-session restore
数百行のPerlスクリプトよりもずっと良いと思います。
tmuxinator は Ruby で書かれたツールで、簡単に tmux セッションを作成して管理することができます。プロジェクトを作成して、それをtmuxセッションとしてインスタンス化することができます。
セッションの再作成には https://github.com/jimeh/tmuxifier を使うことに成功しました。これはrubyを使わずにgitを使うだけでインストールできます。
サンプルを見れば一目瞭然です。 https://github.com/jimeh/tmuxifier/blob/master/examples/example.session.sh