前回はWindows Subsystem for Linux (WSL2)で導入したUbuntu 24.04 LTS用にターミナルをWindows Terminalの設定を行いました。
これでWSLを使う環境もだいぶ整ってきました。今回はさらに使いやすくするためにターミナルを多重化してみます。
WSL1 + Debian GNU/Linuxで同様のことをした記事はこちらをご覧ください。

ターミナルの多重化
ターミナルの多重化とは正しい表現ではないかもしれません。
やりたいことは1つのターミナル(ウィンドウ)で複数のセッションを動かし、切り替えられるようにするということです。
Windows Terminalを利用するとタブ機能やペイン機能である程度これに近いことはできます。

Linuxではscreenあるいはtmuxというソフトを使ってこのような多重化を行うことができます。
今回はbyobuとtmuxというソフトで実現してみたいと思います。

以前はbyobuとscreenの組み合わせて使っておりましたが、byobuのデフォルトのバックエンドはtmuxのだと思うのでで、今回はtmuxを使ってみます。
byobuとtmuxのインストール
早速必要なソフトをインストールします。
sudo apt update && sudo apt-get install byobu tmux
私の環境の場合はすでにbyobuとtmuxが入っていたらしく、何も追加でインストールされるものはありませんでした。
byobuとtmuxが入っていなければ、上記コマンドで依存するパッケージも含めて必要なパッケージがインストールされます。
byobuの設定
それではbyobuの設定をします。まずはbyobuのバックエンドtmuxを使うことを指定します。
これはbyobu-select-backendコマンドを使います。
byobu-select-backend
これで選択肢(tmuxかscreen)が表示されるので番号を入力します。今回はtmuxを利用するので「1」を入力します。
続いて全般的な設定をbyobu-configコマンドで行います。
byobu-config
下記のような画面になるので、上下キーとスペースで操作します。
まず「ステータス通知の切り替え」を選択します。
ここでは画面の下部に表示する情報を選択します。
スペースキーでON/OFFを選択して選び終わったらTABキーで適用を選択します。
私は下記を有効にしました。
- date
- disk
- ip_address
- load_average
- memory
- session
- time
- uptime
バックエンドにscreenを使っている場合はステータス行は2行になりますが、tmuxの場合は1行なので、表示する情報は絞り込んだほうが良さそうです。
続いて最初のメニューに戻り「エスケープシーケンスの変更」を選択します。
これはbyobuの機能を呼び出すためのキーです。デフォルトはctrl+Aとなっているので、これをctrl+zに変更します(単に「z」を入力したあとに「適用」を選択します)。
メインメニューに戻ったらTABキーでExitを選択して終了します。
環境の設定
byobuのバックエンドにtmuxを利用している場合はこの設定は不要です。
試したところ下記の設定が必要でした。
まずscreenが使用するディレクトリを作成します。
mkdir ~/.screen
chmod 700 ~/.screen
export SCREENDIR=~/.screen
この設定をしておかないとscreenを起動することができません。
テスト
それではbyobuを動かしてみましょう。
起動するには下記のコマンドを実行します。
byobu-launcher
次のように画面の下にステータスなどが表示されれば成功です。
ここでCtrl+zを押してから、cを入力してみましょう。
新しいセッションが生成され、新しいセッションに画面が切り替わったはずです。画面の下に「0:–」「1:bash」という2つのセッションがあることが表示されています。
ハイライトされていて末尾に「*」がついているのが現在の表示されているセッションです。
ここでCtrl+zを押してからnを入力してみましょう。
元のセッションに画面が切り替わったと思います。
こんな感じで1つのターミナル画面で複数のセッションを使うことができることがわかると思います。
これだけだとWindows Terminalのタブとあまり変わりませんが、画面を分割したり、分割した画面でシェルを切り替えたりとより柔軟な操作が可能になります。
byobuの詳しい使い方は下記の記事が参考になると思います。

自動起動
byobu + tmuxが問題なく動くことを確認したら、ターミナルの立ち上げ時に自動的にbyobuが動くようにしておきましょう。
まず下記コマンドを実行します。
byobu-enable
これでホームディレクトリの「.profile」というファイルの最終行に下記の処理が追加されます。
_byobu_sourced=1 . /usr/bin/byobu-launch 2>/dev/null || true
これでログイン時にbyobuが自動実行される様になります。
バックエンドにtmuxではなくscreenを使用する場合は、これだけではエラーになってしまいます。
そこで下記コマンドを追加して、byobu-launchの実行前に環境変数SCREENDIRを設定するようにします。
sed -i -e 's/^_byobu/export SCREENDIR=~\/.screen\n_byobu/g' .profile
キーバインディングのカスタマイズ
デフォルトではウィンドウの分割やウィンドウの廃棄がイマイチ使いにくように感じました。
そこで次のようにキーバインディングを変更することにしました。
キーバインド | 機能 |
---|---|
Prefix+s | ウィンドウを上下に分割する |
Prefix+| | ウィンドウを左右に分割する |
Prefix+x | ウィンドウ(Pane)を破棄する |
この変更には「.config/byobu/keybindings.tmux」に次の内容を追記します。
# 左右に分割
unbind %
bind S split-window -v
# 上下に分割
unbind '"'
bind | split-window -h
# 分割をもとに戻す
unbind x
bind x confirm-before -p "close-pane? (y/n)" kill-pane
この設定はbyobuを再起動すると反映されます。
実際の使い勝手
実際に使ってみるとWSL2でも問題なく動作するようです。
たとえば下記は画面を3分割して、3つのセッションを動かしている状態です。
ターミナルにはWindows Terminalを使っています。実はbyobuにはターミナルとの相性問題がある場合がありますが、Windows Terminalと組み合わせでも問題はないようです。
まとめ
今回はWindows Subsystem for Linux (WSL2)の使い勝手を向上すべく、byobuとtmuxを導入してターミナルを多重化してみました。
Windows Terminalで起動しているシェルでbyobuを有効にして見たところ、まったく問題なく使用することができました。
Windows Terminalにもタブやペイン機能がありますが、byobuはそれとはまた違った便利さを提供してくれると思います。
次回はSSHでWSL2に接続してみたいと思います。
コメント