Ubuntu 24.04 LTSをWindows 11上で動かす その4 ターミナルを多重化する

Ubuntu
スポンサーリンク

前回はWindows Subsystem for Linux (WSL2)で導入したUbuntu 24.04 LTS用にターミナルをWindows Terminalの設定を行いました。

これでWSLを使う環境もだいぶ整ってきました。今回はさらに使いやすくするためにターミナルを多重化してみます。

スポンサーリンク

ターミナルの多重化

ターミナルの多重化とは正しい表現ではないかもしれません。

やりたいことは1つのターミナル(ウィンドウ)で複数のセッションを動かし、切り替えられるようにするということです。

Windows Terminalを利用するとタブ機能やペイン機能である程度これに近いことはできます。

Windows ターミナル ペイン
Windows ターミナルでペインを分割する方法について説明します。

Linuxではscreenあるいはtmuxというソフトを使ってこのような多重化を行うことができます。

今回はbyobuとtmuxというソフトで実現してみたいと思います。

Byobu - Wikipedia

以前は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

下記のような画面になるので、上下キーとスペースで操作します。

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

次のように画面の下にステータスなどが表示されれば成功です。

byobuが起動している状態

ここでCtrl+zを押してから、cを入力してみましょう。

新しいセッションが生成され、新しいセッションに画面が切り替わったはずです。画面の下に「0:–」「1:bash」という2つのセッションがあることが表示されています。

ハイライトされていて末尾に「*」がついているのが現在の表示されているセッションです。

セッションを追加した状態

ここでCtrl+zを押してからnを入力してみましょう。

元のセッションに画面が切り替わったと思います。

セッションを切り替えた状態

こんな感じで1つのターミナル画面で複数のセッションを使うことができることがわかると思います。

これだけだとWindows Terminalのタブとあまり変わりませんが、画面を分割したり、分割した画面でシェルを切り替えたりとより柔軟な操作が可能になります。

自動起動

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つのセッションを動かしている状態です。

byobuで分割したターミナル

ターミナルにはWindows Terminalを使っています。実はbyobuにはターミナルとの相性問題がある場合がありますが、Windows Terminalと組み合わせでも問題はないようです。

まとめ

今回はWindows Subsystem for Linux (WSL2)の使い勝手を向上すべく、byobuとtmuxを導入してターミナルを多重化してみました。

Windows Terminalで起動しているシェルでbyobuを有効にして見たところ、まったく問題なく使用することができました。

Windows Terminalにもタブやペイン機能がありますが、byobuはそれとはまた違った便利さを提供してくれると思います。

次回はSSHでWSL2に接続してみたいと思います。

コメント

タイトルとURLをコピーしました