ターミナル多重接続ソフトウエア「tmux」

複数のサーバに同時にログインする必要があるとか、単一のサーバだが複数の作業場所が欲しいので複数のターミナルウインドウを起動してそれぞれからsshでログインして使用する……というのはよくある話だ。こちらのウインドウではログファイルを「tail -f」で流し続け、あちらではtopを走らせ続け、こっちでは設定ファイルを「vim」で編集しつつ、あっちではデーモンの再起動を行い、手元のウインドウはそれ以外の作業を行うために開いておく。これだけで5つのターミナルウインドウが存在することになる。

タブが使える、もしくはペイン機能があるターミナルアプリケーションならターミナルにまとめておくこともできる。だがそうでないなら、使う数だけディスプレイはターミナルウインドウで埋まることになるわけだが、こうした状況をあまり好ましいと思っていないユーザーは「screen」や「tmux」というターミナル多重接続ソフトウエアを使っていることが多い。

ターミナル多重接続ソフトウエアは、タブやペインをCUIベースで実現するソフトウエアで、ターミナルアプリケーションにそうした機能がなくても利用することができる。次のスクリーンショットは、Ubuntu 18.04 LTSでtmuxを動作させたものだ。ターミナルアプリケーションには「Windows Terminal」を使っている。Vimのようにステータスラインが存在する以外、通常のターミナルとそれほど違いは感じないと思う。

Ubuntu 18.04 LTSでtmuxを実行したサンプル

tmuxはタブやペインに相当する機能を提供している。次のスクリーンショットはペインを作った場合だ。ターミナルが模擬的に2つのペインに分割されていることがわかる。Windows Terminalが提供するペインではなく、あくまでもtmuxが擬似的にCUIベースで提供しているところがポイントである。

tmuxを使ってターミナルでCUIベースのペインを実現したサンプル

次のスクリーンショットはタブに相当する機能で、ショートカットキーを使ってタブを切り替えることができる(tmuxではタブではなくウインドウと呼ぶ)。

tmuxではタブに相当する機能はウインドウと呼ばれている

ターミナル多重接続ソフトウエアは、ターミナルアプリケーションのようにタブやペインに相当する機能を実現するだけではなく、接続を切った状態でも動作をキープしておけるというのが最大のポイントとなる。これはターミナルアプリケーションでは実現できないことだ。

例えば、インタラクティブにサーバを動作させ続けておかないといけないとか、始めてしまったビルドの終了にあと5時間かかるとか、そんな状況になってしまった場合、ssh接続は切ることができない。切ってしまえば、そこでサーバもビルドも止まってしまう。しかし、tmuxなどを使うと接続を切っても状態がキープされ、後で接続し直すことができる。会社や出先、自宅で必要なときにノートPCからサーバに接続して作業を再開する、そんなことがtmuxのようなターミナル多重接続ソフトウエアを使うと実現できるのだ。

ターミナル多重接続ソフトウエアは、使いこなすのにある程度ショートカットキーを覚える必要がある。そのため、少しハードルが高いものの、使い慣れれば抜け出せないソフトウエアでもある。tmux自体については今後取り上げるとして、今回はtmuxでPowerlineを使う方法を取り上げておこうと思う。

設定ファイル ~/.tmux.conf

まず前提として、Linux環境にPowerlineをインストールするとともに、ウインドウ環境にPowerlineに対応したフォントをインストールしておく。Linuxなら「powerline」というパッケージ名で提供されていることが多いので、まずこのパッケージをインストールする。

次にウインドウ環境、読者の多くはWindows 10かmacOSを使っている方のではないかと思うが、そこにこれまで取り上げてきたフォント「Cascadia Code」をインストールしておく。


フォントをインストールしたら、ターミナルアプリケーションで使用するフォントに「Cascadia Code PL」または「Cascadia Mono PL」のどちらかを設定しておく。フォント名に含まれているPLはPowerlineのことを意味している。これで環境の準備は完了だ。

次に、ユーザーのtmux設定ファイルである~/.tmux.confに次の設定を追加する。

source "/usr/share/powerline/bindings/tmux/powerline.conf"

ここではUbuntu 18.04 LTSを使っている。sourceで指定する対象ファイルのパスはディストリビューションによって異なるので、動作しない場合にはpowerlineパッケージのインストール内容を調べてパスを変更してみてほしい。

これで準備完了だ。tmuxを起動すると、ステータスラインがPowerlineに対応したものに変わる。

Powerline対応のtmux使用例

次のスクリーンショットはtmuxを起動した直後の画面である。

Powerlineが機能しているtmuxの動作サンプル

先程は緑色のステータスラインが表示されていた部分が、Powerline特有のフォントを活用したものに変わっている。ステータスラインの内容も変更されており、リアルタイムに時間が更新されていたりと、スッキリした印象だ。

さっきと同じようにペイン分割してみた。何だか格好良い表示になった気がする。

Powerline tmux動作サンプルその2

Powerlineのステータスラインが表示されるようになったtmuxは、まとまりが良くなったように見える。

Powerline tmux動作サンプルその3

しかし、これまで何度も説明してきたように、Powerlineはあくまでも見た目を”クール”にするのが目的であって、Powerline風にしたからといって作業効率が向上するわけではない。視認性が高まることで多少は作業効率が上がるかもしれないが、それを言うなら、tmuxは基本的にショートカットキーを駆使して操作するものなので、ショートカットキーをどれだけ覚えて使いこなせるかのほうが作業効率的には重要だろう。