🎃

Lubuntu用にtmuxを設定する

2025/01/13に公開

はじめに

tmuxは、複数のターミナルセッションを1つのウィンドウ内で管理できるターミナルマルチプレクサーです。これにより、作業効率を大幅に向上させることができます。
tmux.conf は、tmuxの動作や外観をカスタマイズするための設定ファイルです。
この記事では、私が使用している設定内容を紹介します。

私の環境は、Lubuntu24.04です。WezTermtmuxを使用しています。
WezTermの設定は、下記の記事を参照して下さい。

tmux.confの内容

tmux.confの全体は以下のとおり。

~/.tmux.conf
###############################################################
# Emacs風キーバインド
###############################################################

setw -g mode-keys emacs

# prefix C-z でコピーモードに入る. C-Spaceで開始. C-Wでコピーする
bind-key C-z copy-mode
# prefix C-y でペーストする
bind-key C-y paste-buffer
# PageUp => 1ページ遡ってコピーモードに入る: ログを見る時など便利
bind -n Pageup copy-mode -u

unbind 1
unbind ^C
unbind &

# prefix 0 現在のペインを削除
bind 0 kill-pane
# prefix 1 ウインドウ内の現在のペインを残し、他のペインをウインドウにする
bind 1 break-pane
# prefix 2 ウインドウを横に分割
bind 2 split-window -v
# prefix 3 ウインドウを縦に分割
bind 3 split-window -h
# prefix o ペインをローテート
bind o select-pane -t :.+
# prefix k ウインドウを削除
bind k kill-window
# prefix C-k ペインを削除
bind C-k kill-pane
# prefix i
bind i display-panes
# prefix C-t
bind C-t next-window
# prefix c
bind c  new-window

###############################################################
# マウス
###############################################################

# マウス操作を有効にする
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"

# マウスアップ時に選択完了せず、選択状態を維持し、Ctrl-cでクリップボードにコピーする
unbind -T copy-mode MouseDragEnd1Pane
#unbind -T copy-mode-vi MouseDragEnd1Pane
bind-key -T copy-mode C-c send-keys -X copy-pipe-and-cancel "xsel -bi"
#bind-key -T copy-mode-vi C-c send-keys -X copy-pipe-and-cancel "xsel -bi"

###############################################################
# 色・見た目
###############################################################

# 番号基準値を変更
set -g base-index 1

# ステータスバーをトップに配置する
set -g status-position top

# pane status bottom
set-option -g pane-border-status bottom
set -g pane-border-format " [#P][#(~/workspace/toolbin/ip.sh)][#T] "

# tmuxを 24bit color 表示できるようにする
set -g default-terminal xterm-256color
set -ga terminal-overrides ',xterm-256color:Tc'

###############################################################
# tpm
# see: https://github.com/tmux-plugins/tpm
###############################################################

# tmux-power
set -g @tmux_power_theme 'moon'

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'wfxr/tmux-power'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

見た目は以下のとおり。画面上部のPowerlineのWindowインデックス表示部分をマウスでクリックすると、Windowを切り替えられます。

Emacs風キーバインド

このセクションでは、tmuxのキーバインドをEmacs風に変更しています。私は、emacsを使っているため、Emacs風のキーバインドに変更しています。

  1. キーバインドの変更

    setw -g mode-keys emacs
    
    • デフォルトのキーバインドをEmacs風に設定(通常はviモード)。
  2. コピーモードとペースト

    bind-key C-z copy-mode
    bind-key C-y paste-buffer
    
    • C-zでコピーモードに入る。
    • C-yでバッファからペースト(Emacsのペースト動作に対応)。
  3. PageUpキーでコピーモード

    bind -n Pageup copy-mode -u
    
    • ページアップキーでコピーモードに入り、ログを1ページ分遡る。
  4. ペインとウィンドウ管理

    • bind 0 kill-pane:現在のペインを削除。
    • bind 2 split-window -v:ペインを横に分割。
    • bind 3 split-window -h:ペインを縦に分割。
    • bind o select-pane -t :.+:ペインをローテート。
    • bind k kill-window:現在のウィンドウを削除。

マウス操作の有効化

tmuxでのマウス操作を強化し、GUI 的な操作性を提供する設定です。デフォルトだと、ブラウザなどにペーストできなかったので、この設定を追加しています。

  1. マウス操作の有効化

    set -g mouse on
    
    • マウスを使ってペインのリサイズ、ウィンドウ切り替え、スクロールが可能。
  2. クリップボードへのコピー

    bind-key -T copy-mode C-c send-keys -X copy-pipe-and-cancel "xsel -bi"
    
    • Ctrl-c を押すと選択範囲をクリップボードにコピー。

見た目のカスタマイズ

tmuxのステータスバーやペインの見た目を変更する設定です。

  1. ステータスバーの位置変更

    set -g status-position top
    
    • ステータスバーを画面の上部に配置。
  2. ペインの見た目変更

    set-option -g pane-border-status bottom
    set -g pane-border-format " [#P][#(~/workspace/toolbin/ip.sh)][#T] "
    
    • ペインの境界に情報を表示(ペイン番号、IPアドレス、タイトルなど)。
    • ip.sh は自分のIPアドレスを取得するスクリプトです。
      ip.sh
      #!/bin/bash
      ip=$(ip a | grep wlp0s20f3: -A 2 | tail -1 | awk '{print $2}')
      echo "$(echo -e '\uf1eb') ${ip}"
      
  3. 色の設定

    set -g default-terminal xterm-256color
    set -ga terminal-overrides ',xterm-256color:Tc'
    
    • 24bitカラー(TrueColor)をサポートし、色の再現性を向上。

TPM(tmux Plugin Manager)の活用

最後に、tmuxのプラグイン管理ツールであるTPMを使用しています。
TPMについては、下記URLを参照。

  1. 主なプラグイン

    • tmux-plugins/tmux-sensible
      tmuxの便利なデフォルト設定を提供。
    • wfxr/tmux-power
      ステータスバーをカスタマイズ可能にし、テーマ(例: moon)を適用。
  2. プラグインの初期化

    run '~/.tmux/plugins/tpm/tpm'
    
    • この行を設定ファイルの最後に追加することで、TPMがプラグインを自動的に管理。

Discussion