Monday, June 30, 2025

tmuxステータスバーを自分流に仕上げる

ターミナルでの作業が多い開発者やシステムエンジニアにとって、tmuxはもはや選択肢ではなく必須ツールと言えるでしょう。複数のセッション、ウィンドウ、ペインを効率的に管理し、作業能率を劇的に向上させてくれます。しかし、毎日向き合うtmuxのデフォルト画面、特に下部のステータスバーが少し物足りないと感じたことはありませんか?この記事では、tmuxのステータスバーを単なる情報表示欄から、自分だけの個性が詰まった強力なダッシュボードへと変貌させる方法を、ステップバイステップで詳しく解説します。

単に色を変えることから始め、システム情報、Gitブランチ、現在時刻など、表示したいあらゆる情報を盛り込むまでの全プロセスを網羅します。このガイドを最後まで読めば、あなたのターミナル環境は以前とは比べ物にならないほど多彩で便利なものになるはずです。

はじめに:.tmux.confファイルの設定

tmuxのカスタマイズはすべて、ホームディレクトリに位置する.tmux.conf設定ファイルから始まります。もしこのファイルがなければ、自分で作成する必要があります。

# ホームディレクトリへ移動
cd ~

# .tmux.confファイルを作成(存在しない場合)
touch .tmux.conf

これで、テキストエディタでこのファイルを開き、設定を追加できます。重要なのは、.tmux.confファイルを修正した後、変更を適用するためにはtmuxを再起動するか、実行中のtmuxセッション内で設定を再読み込みする必要があるという点です。

設定を再読み込みする最も一般的な方法は、tmuxのコマンドモードを使用することです。デフォルトではCtrl+bを押した後に:を入力すると、コマンドプロンプトが表示されます。ここに以下のコマンドを入力してEnterキーを押してください。

source-file ~/.tmux.conf

毎回このコマンドを入力するのが面倒であれば、.tmux.confファイルにショートカットキーを割り当てておくことをお勧めします。例えば、Ctrl+bを押した後にrキーを押すだけで設定をリロードできるように設定できます。

# .tmux.confファイルに以下の内容を追加します
# prefix(Ctrl+b) + rキーで設定をリロード
bind r source-file ~/.tmux.conf \; display-message "Config reloaded."

これで準備は完了です。本格的にステータスバーをカスタマイズしていきましょう。

ステータスバーの基本スタイリング:色と位置

まず、ステータスバー全体の雰囲気を決定する背景色と文字色を変更してみましょう。status-styleオプションを使用します。

# .tmux.conf

# ステータスバーのデフォルトスタイルを設定
# fg: 文字色(foreground), bg: 背景色(background)
set -g status-style "fg=white,bg=black"

利用可能な色はblack, red, green, yellow, blue, magenta, cyan, whiteなどがあります。お使いのターミナルが256色をサポートしている場合は、colour0からcolour255まで、あるいは#RRGGBB形式のHexコードも使用できます。

ステータスバーの位置をデフォルトの下部ではなく上部に変更したい場合は、status-positionオプションを使用します。

# .tmux.conf

# ステータスバーの位置を上部に変更
set -g status-position top

次に、ステータスバーの左側(status-left)と右側(status-right)にどのような情報を表示するかを定義していきます。

ステータスバーの内容設定:status-leftstatus-right

tmuxは、ステータスバーに動的な情報を表示するための様々な特殊文字列(フォーマット)を提供しています。これらのフォーマットを組み合わせることで、status-leftstatus-rightオプションに 원하는 내용을 채울 수 있습니다。

主要なフォーマット文字列

  • #S: セッション名
  • #I: ウィンドウインデックス
  • #W: ウィンドウ名
  • #F: ウィンドウフラグ (例: *は現在のウィンドウ, -は最後のウィンドウ, Zはズーム状態)
  • #P: ペインインデックス
  • #H: ホスト名 (短縮)
  • #h: ホスト名 (完全)
  • %Y-%m-%d: 年-月-日
  • %H:%M:%S: 時:分:秒
  • #(shell-command): シェルコマンドの実行結果を出力 (最も強力な機能!)

1. 左側(status-left)のカスタマイズ:セッションとウィンドウ情報

左側には主に現在作業中のセッションとウィンドウ情報を表示します。可読性を高めるために、各情報の間に区切り文字を入れると良いでしょう。

# .tmux.conf

# 左側ステータスバーの長さを設定
set -g status-left-length 40

# [セッション名] | ウィンドウ名 の形式で表示
set -g status-left "[#S] | #W"

ここに色を付けて、さらに見やすくすることができます。#[fg=色,bg=色]という構文を使用します。

# .tmux.conf

# セッション名を黄色の背景に黒文字で強調表示
set -g status-left "#[fg=black,bg=yellow] #S #[fg=white,bg=black] | #W"

2. 右側(status-right)のカスタマイズ:システム情報と時刻

右側には、頻繁に確認するシステム情報や現在時刻を入れるのが一般的です。#(shell-command)を活用すれば、ほとんどすべての情報を表示できます。

例として、現在の日付と時刻を表示してみましょう。

# .tmux.conf

# 右側ステータスバーの長さを設定
set -g status-right-length 60

# "ネットワークIP | 日付 | 時刻" の形式で表示
# #(ifconfig en0 | grep 'inet ' | awk '{print $2}') の部分は、お使いの環境に合わせて修正が必要です (例: Linuxではip addr)
set -g status-right "#(ifconfig en0 | grep 'inet ' | awk '{print $2}') | %Y-%m-%d | %H:%M"

macOSユーザー向けのCPU使用率とバッテリー表示例:

# .tmux.conf

# CPU使用率 (macOS)
set -g status-right "CPU: #(top -l 1 | grep -E \"^CPU\" | cut -d' ' -f3) | %Y-%m-%d %H:%M"

# バッテリー残量 (macOS)
set -g status-right "BAT: #(pmset -g batt | grep -o '[0-9]*%' | tr -d '%')% | %Y-%m-%d %H:%M"

Linuxユーザー向けのCPU使用率とバッテリー表示例:

# .tmux.conf

# CPU使用率 (Linux)
set -g status-right "CPU: #(grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage \"%\"}') | %Y-%m-%d %H:%M"

# バッテリー残量 (Linux, パスは要確認)
set -g status-right "BAT: #(cat /sys/class/power_supply/BAT0/capacity)% | %Y-%m-%d %H:%M"

このようにシェルスクリプトを活用すれば、Gitのブランチ名や現在再生中の音楽情報など、想像できるあらゆるものをステータスバーに表示できます。

中央揃え:ウィンドウリストのスタイリング

ステータスバーの中央部分は、デフォルトでウィンドウリストを表示します。この部分のスタイルも変更可能です。

# .tmux.conf

# 中央揃えに設定
set -g status-justify centre

# 現在のウィンドウのスタイル
setw -g window-status-current-style "fg=black,bg=green,bold"
# 現在のウィンドウのフォーマット (インデックスと名前を一緒に表示)
setw -g window-status-current-format " #I:#W#F "

# その他のウィンドウのスタイル
setw -g window-status-style "fg=gray,bg=default"
# その他のウィンドウのフォーマット
setw -g window-status-format " #I:#W#F "

#Fフォーマットは、ウィンドウの状態(現在、最後、ズームなど)を示すフラグを表示してくれるため便利です。

高度なテクニック:Powerlineスタイルとプラグインの活用

すべてを自分で設定するのは強力ですが、時にはもっと簡単に見栄えの良い結果を求めることもあるでしょう。そんな時、プラグインやPowerlineスタイルを適用するのが良い代替案となります。

1. Powerlineスタイルを自作する

Powerlineは、特殊文字を使って各情報セグメントを矢印の形でつなげる視覚的なスタイルです。これを実現するには、まずPowerline用にパッチが適用されたフォントをターミナルにインストールし、設定する必要があります。

フォントをインストールした後、.tmux.confで特殊文字(, など)を使ってスタイルを作成できます。

# .tmux.conf (Powerline風スタイルの例)

# 必要な特殊文字
# U+E0B0 (), U+E0B2 ()
set -g status-left-length 30
set -g status-right-length 150

# 左側:セッション情報
set -g status-left "#[fg=black,bg=green] #S #[fg=green,bg=blue,nobold]"

# 中央:ウィンドウリスト
set -g status-justify left
setw -g window-status-current-format "#[fg=black,bg=yellow] #I:#W #[fg=yellow,bg=blue]"
setw -g window-status-format "#[fg=white,bg=blue] #I:#W #[fg=blue,bg=blue]"

# 右側:システム情報
set -g status-right "#[fg=white,bg=blue]#[fg=black,bg=blue] #(echo 'some info') #[fg=blue,bg=cyan]#[fg=black,bg=cyan] %Y-%m-%d %H:%M "

上記のコードは、Powerline効果を模倣した簡単な例です。各色と情報セグメントを(右矢印)と(左矢印)の文字でつなぎ、視覚的な分離効果を生み出しています。

2. プラグインマネージャーTPM(Tmux Plugin Manager)の利用

最も便利な方法は、TPMを使用することです。TPMは、tmuxプラグインを簡単にインストール・管理できるようにするツールです。

TPMのインストール:

# gitを使ってTPMリポジトリをクローンします
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

.tmux.confにTPMの設定を追加:

ファイルの末尾に以下の内容を追加する必要があります。

# .tmux.conf

# 使用するプラグインのリスト
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible' # 基本的なtmux設定を整えるプラグイン
set -g @plugin 'dracula/tmux' # Draculaテーマ (ステータスバーを含む)
# set -g @plugin 'catppuccin/tmux' # Catppuccinテーマ
# set -g @plugin 'tmux-plugins/tmux-cpu' # CPU情報プラグイン

# Draculaテーマのオプション (任意)
set -g @dracula-plugins "cpu-usage ram-usage"
set -g @dracula-show-powerline true

# TPMを実行 (必ずファイルの最後に配置すること)
run '~/.tmux/plugins/tpm/tpm'

設定ファイルを保存した後、tmuxを起動し、prefix(Ctrl+b) + I (大文字のI) を押してプラグインをインストールします。すると、Draculaテーマが適用された美しいステータスバーがすぐに表示されます。他のテーマや機能プラグインを使いたい場合は、上記のリストに追加してprefix + Iでインストールするだけです。

おわりに

これまで、tmuxのステータスバーを個人の好みやニーズに合わせてカスタマイズする様々な方法を見てきました。簡単な色の変更から、シェルスクリプトを利用した動的な情報表示、そしてTPMプラグインを活用した手軽なテーマ適用まで、選択肢は無限にあります。

今日学んだ内容を基に、あなただけの.tmux.confファイルを作成してみてください。美しく整えられたステータスバーは、単に見栄えが良いだけでなく、ターミナル作業の効率と楽しさを一段と引き上げてくれる素晴らしいパートナーとなるでしょう。


0 개의 댓글:

Post a Comment