yiskw note

機械学習やプログラミングについて気まぐれで書きます

tmuxのステータスラインをいい感じにする


概要

今回はtmuxのステータスラインをいい感じにしてみたので、その手順についてメモを残しておきます。

具体的には以下の情報が表示されるようにステータスバーを変更しました。

  • 現在のセッション / ペイン / ウィンドウのインデックス
  • prefixが押された時に、ハイライトされたprefixを表示
    • copyモードやsyncモードに入った時も、視覚的にわかるようにモード名を表示
  • 現在のペインのパス
  • メモリ、CPU使用率
  • 日付
  • 天気

今回設定したファイルはこちらのレポジトリにて公開しております。

また、別の記事でターミナルをいい感じにする方法についてもメモを残しておりますので、よければご参照ください。

yiskw713.hatenablog.com

実行環境

設定方法

TPMのインストール

まず初めにTmux Plugin Manager (TPM)をインストールします。
TPMはその名の通りTmuxのプラグインを管理するものです。

github.com

インストールは上記レポジトリをクローンします。

$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

クローンが完了したら、~/.tmux.confに以下を記述します。

set -g @plugin 'tmux-plugins/tpm'

# .tmux.confの一番下に記入
run '~/.tmux/plugins/tpm/tpm'

プラグインのインストール

今回は以下の3つのプラグインを使用しています。

いずれもTPMでインストール可能です。
上記パッケージをインストールするには、~/.tmux.confに以下を記述します。

set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'xamut/tmux-weather'
set -g @plugin 'thewtex/tmux-mem-cpu-load'

その後tmuxを起動し、prefix + Iを押すことでインストール完了です。

※自分の環境ではtmux-mem-cpu-loadだけ、TPMでインストールすると、tmux起動時にtmux-mem-cpu-loadの出力が表示されず、その都度prefix + Iを実行するという問題が発生していました。そのため、こちらのみbrew install tmux-mem-cpu-loadでインストールしています。

ステータスラインの設定

必要なプラグインのインストールが完了したので、あとは出力したい内容や設定を~/.tmux.confに記述するだけです。
今回は以下のような設定にしてみました。

# tmux-prefix-highlightの設定
set -g @prefix_highlight_fg 'white'
set -g @prefix_highlight_bg 'cyan'

# copyモードに入った時に"Copy"という文字を表示
set -g @prefix_highlight_show_copy_mode 'on'
set -g @prefix_highlight_copy_prompt 'Copy'

# syncモードに入った時に"Sync"という文字を表示
set -g @prefix_highlight_show_sync_mode 'on'
set -g @prefix_highlight_sync_prompt 'Sync'
set -g @prefix_highlight_sync_mode_attr 'fg=default,bg=green'

# tmux-weatherの設定
# 天気予報を表示したい場所を設定
set-option -g @tmux-weather-location "Tokyo"
# 場所 + 天気の絵文字 + 気温を表示
set-option -g @tmux-weather-format "%l:+%c+%t"
# 単位を摂氏温度に
set-option -g @tmux-weather-units "m"

# 256色端末を使用する
set -g default-terminal "screen-256color"

# ステータスラインの色を設定
set -g status-style fg=white,bg=black
# ウィンドウリストの色を設定
setw -g window-status-style fg=cyan,bg=default,dim

# アクティブなウィンドウを目立たせる
setw -g window-status-current-style fg=white,bg=red,bright

# ステータスライン左側の設定
# ステータスライン左側の最大の長さ
set -g status-left-length 100
# セッション、ウィンドウ、ペインのインデックスを表示 + prefixが押された時に視覚的に通知する (#{prefix_highlight}の部分)
set -g status-left " #[fg=green]Session: #S #[fg=yellow]Window #I #[fg=cyan]Pane: #P  #{prefix_highlight}"

# ステータスライン右側の設定
# ステータスライン右側の最大の長さ
set-option -g status-right-length 120
set-option -g status-right-style default
# メモリとCPU使用率を表示。自分は`-a 0`を指定してaverage loadは非表示にしていますが、こちらを変えることでaverage loadも表示可能です
# また、tpm経由でtmux-mem-cpu-loadを指定した場合は#(tmux-mem-cpu-load)の部分が変わります。
# 詳しくはこちらを参照してください。https://github.com/thewtex/tmux-mem-cpu-load#configuring-tmux
set-option -g status-right "#[fg=green,bg=default,bright]#(tmux-mem-cpu-load -a 0) "
set-option -ag status-right " #[fg=cyan][%Y-%m-%d(%a) %H:%M:%S] #{weather} "

# ウィンドウステータスのフォーマットの指定。各ウィンドウで選択しているペインのパスを表示
set -g window-status-format '#[fg=colour196]#I:#(pwd="#{pane_current_path}"; echo ${pwd####*/})'
set -g window-status-current-format '#[fg=colour255,bg=colour124][#I:#(pwd="#{pane_current_path}"; echo ${pwd####*/})]'

# その他ステータスラインの位置や更新間隔の設定
set -g status-justify absolute-centre
set -g status-position top
set -g status-interval 1

ステータスバーの設定方法については以下の記事が参考になりますので、合わせてご覧いただければと思います。

qiita.com

完成したステータスライン

全体像

prefixを押した時

copyモードに入った時

syncモードに入った時

Reference