試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

端末の中で仮想端末を管理するtmux(GNU screenの代替)について(ステータス行のカスタマイズと特殊な記法について)

端末の中で仮想端末を管理する tmux(GNU screenの代替)について(カスタマイズ時の記述と幾つかの設定項目について)」に続く内容として、ここではtmuxのステータス行の表示に関するカスタマイズについてのメモを扱い、設定例は後日の別記事に貼り付ける。

(2015/1/13)以前は前半と後半に分けて公開していたが、このページに統合した。

  1. ステータス行の構成
  2. スタイル指定の表記
  3. 既定のスタイル
  4. ウィンドウ一覧のスタイル
  5. メッセージ/プロンプト表示のスタイル
  6. 左右のステータス部分のカスタマイズ
  7. 更新の間隔(頻度)

ステータス行の構成

tmuxのステータス行(最下行)は

  • 左ステータス
  • ウィンドウ一覧(番号と実行中コマンドの表示)
  • 右ステータス

という3つの部分から成り、ウィンドウ一覧の左右それぞれに任意の情報が表示可能となっている。

スタイル指定の表記

指定できる値の形式には色と属性の2種類があり
色については

  • black(黒)
  • red(赤)
  • green(緑)
  • yellow(黄)
  • blue(青)
  • magenta(マゼンタ)
  • cyan(シアン)
  • white(白)

の他、「colour[番号]」の形で256色パレット上の色も使用できる。これにより、色の選択の幅が大きく広がる。ただし、「color」の綴りではダメなので注意。
属性については

  • brightもしくはbold(明るい/太字)
  • dim(暗い)
  • underscore(下線)
  • blink(点滅)
  • reverse(反転)
  • hidden(隠す/非表示にする)
  • italics(イタリック)

のいずれか、もしくは「default」(書式リセット)を指定できる。書式は一度指定すると後ろに続く文字列に対して「default」でリセットするまで保持される。
「blink」や「hidden」などの一部の属性は端末エミュレータによってはうまく動作しないことがある。

既定のスタイル

  • status-fg
  • status-bg
  • status-attr

により、既定の色と属性を設定できる。同様にしてstatus-left-*やstatus-right-*でウィンドウ一覧の左右のステータス表示部分を個別に指定することもできるが、左右それぞれの書式設定部分でも直接色や属性を変更する記述はできる。

ウィンドウ一覧のスタイル

ウィンドウ一覧部分の表示スタイルのウィンドウ(仮想画面)ごとの設定として

  • window-status-fg
  • window-status-bg
  • window-status-attr

  • window-status-current-fg
  • window-status-current-bg
  • window-status-current-attr

があり、前半の3つは非アクティブなウィンドウ、後半の3つはアクティブなウィンドウに関する表示をそれぞれ変更する。fg,bg,attrは先述のstatus-*と同様の書式で設定する。
ウィンドウごとの設定を設定ファイル([ホームディレクトリ]/.tmux.conf)の中で行う場合の注意点については「端末の中で仮想端末を管理する tmux(GNU screenの代替)について(カスタマイズ時の記述と幾つかの設定項目について)」を参照。

メッセージ/プロンプト表示のスタイル

  • message-fg
  • message-bg
  • message-attr

により、ステータス行のメッセージ*1やプロンプト(内部コマンドcommand-prompt)の表示に関するスタイルを設定する。指定の書式は前半の*-fg,*-bg,*-attrの項目と同様。

左右のステータス部分のカスタマイズ

  • status-left
  • status-right

のそれぞれで(ウィンドウ一覧部分から見た)左右それぞれのステータス部分の表示が設定できる。ここではC言語strftime()関数(manページ)の記号を用いて日付/時刻を表示させられる他、独自の記法で情報を表示できる。バージョン1.1の時点では、ロケール依存の部分は英語で表示される。

tmuxのステータス表示の記法
記号表示される内容
#(コマンド行)*2コマンド出力の最初の行
#[属性]色/属性の変更(例:#[fg=cyan,bright])
#Hホスト名
#Iウィンドウ番号
#Pペイン番号
#Sセッション名
#Tウィンドウタイトル
#Wウィンドウ名
##「#」の文字
tmuxのステータス表示部分における日付/時刻の記法(一部)
記号表示される内容
%Y西暦年/4桁
%y西暦年/下2桁
%m
%d
%e日(1桁のときにスペース)
%H時/24時間表記
%k時/24時間表記(1桁のときにスペース)
%I時/12時間表記
%l時/12時間表記(1桁のときにスペース)
%pAMかPM
%Pamかpm
%M
%S
%T「%H:%M:%S」と等価
%a曜日の省略名(Mon,Tue,Wed,Thu,Fri,Sat,Sun)
%b月の省略名(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)
属性の記述については左に書いたものから評価され、「fg=[色]」で前景色・「bg=[色]」指定で背景色を指定できる。

#[default,fg=...]

のように最初に「default,」を記述することで書式をクリアした状態で後ろに続く書式を適用できる。逆に

#[... ,default]

のように最後に「default」を記述しても、最後に書式がクリアされるだけとなり、その左に記述した内容が無意味になる。
「#T」でシェルから受け取ったウィンドウタイトルを表示の一部にできるが、GNU screenと同様、シェル側での設定も必要で、まとめドキュメントのGNU screenのタイトルに関するセクションの中の[ホームディレクトリ]/.bashrc${ZDOTDIR}/.zshrcといったシェル初期化ファイルにおいてタイトルをやりとりするための設定を行わないと正常に表示されない。この書き方はGNU screenと共通しており、既にGNU screen向けに設定している場合は特別な作業は不要。

更新の間隔(頻度)

設定項目status-intervalで表示を更新する間隔を秒数で指定する。時刻を表示するように設定した場合、値が大きすぎると表示が遅れる(ズレる)ことがあるので小さめの値を指定しておくとよい。
下は5秒ごとに更新をするための設定例。
[一部]ファイル名: ~/.tmux.conf

## ステータス行更新間隔(1で毎秒更新・既定値15)
set-option -g status-interval 5

関連URL:

使用したバージョン:

  • tmux 1.1

*1:confirm-before(実行前にy/nで確認)やselect-layout(ペイン分割レイアウトの変更)など、一部の内部コマンドを実行したときの表示

*2:GNU screenのbacktickはこれを用いて代替することができる