Amazon オーディブル2ヶ月無料キャンペーン中 5/9まで

【Mac】alacrittyで使うtmuxを設定する

14 min

こんにちは。ナミレリです。今回はtmuxの設定について紹介します。ターミナルソフトはalacurittyを使いtmuxを使っていきます。この環境でTrue Color(24bit color)の表示にちょっと手間取りましたので、alacritty + tmuxしっかりTrue Color(24bit color)を表示する方法も紹介していきます。

この記事はこんな人にオススメ

  • 新しいターミナルソフトを探しているユーザー
  • イケてるコマンドラインが好きな方
  • 性能や応答速度を重視するユーザー
  • カスタマイズ性を求めるユーザー
  • コマンドラインが好きな方
  • 高度なテキスト編集を行いたい方
この記事の環境
Parallelsのホスト
  • MacBook Pro 14インチ M1Max(メモリ32GB)
  • macOS Ventura 13.5.2
  • Parallels Desktop 19 for Mac(Parallelsの公式サイト
  • tmux 3.3a
  • alacritty 0.12.2 (9d9982d)
Parallels 19 for Macの無料トライアル もありますので、ぜひダウンロードして試してみてください。M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。
NEW Parallels Desktop 19 for Mac

Parallels Desktop 19 for Macは、M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。

14日間の無料トライアルもありますので、ぜひダウンロードして試してみてください。

tmuxとは?

tmuxterminal multiplexer)とは、複数のターミナルセッションを1つの画面内で操作・管理することができるツールです。

下の画像のように、1つのターミナルウィンドウで複数のターミナルを立ち上げてそれぞれで作業したり、また同時に同じコマンドを入力するなど、ターミナル画面を分割して操作・管理することができます。

tmuxは複数のターミナルセッションを1つの画面内で操作・管理することができる
tmuxは複数のターミナルセッションを1つの画面内で操作・管理することができる
Amazonの読み放題・聴き放題

kindle unlimited 読み放題
200万冊以上が読み放題

Audible
12万以上の対象作品が聴き放題

Amazon オーディブル:2ヶ月無料キャンペーン中(5/9まで)→ 詳しくはこちら

どんな時に便利なのか?

そんなtmuxですが、具体的にどんな時に便利なのかをまとめてみます。

tmuxはどんな時に便利なのか?
tmuxはどんな時に便利なのか?

1. セッションの継続

tmux最大のメリットはセッションを継続することができることです。例えばSSHでサーバーに接続している最中にネットワークが切断したとしてもtmuxセッションは継続されます。切断後、セッションに再接続(アタッチ)することができます。

具体的には、例えば
リモートサーバー上で大規模なデータ分析を行っていて、数時間かかるプロセスを実行中。途中結果もチェックしながら作業している最中、突然ネットワークのトラブルでSSH接続が切れてしまった・・・・なんて時もセッションを再開することができます。

2. 効率的な作業

tmuxは、キーボードショートカットでほぼ全ての操作を行うことができるので、マウス操作をせずとも複数のセッションやウィンドウ、パネル間を素早く行き来することができます。

例えば、
プログラム開発、テストの実行、ログの確認、データベースへのクエリ実行など、複数のタスクを並行して行う場合に、上にプログラム開発画面、右上にテスト実行画面、左下にログ確認、右下にデータベースへのクエリ実行画面といったような配置を作ることができます。

また、キーボードショートカットを使って、素早く各パネル間を移動・切り替えることもできます。

3. カスタマイズ性

ユーザーの好みや作業のスタイルに合わせて、tmuxの挙動や見た目をカスタマイズすることができます。自分だけの最適なターミナル環境を構築することができます。

例えば、
特定のキーの組み合わせでパネル配置に変更したり、あるアクションを実行したときの動作を変えたり、といった独自のキー設定が可能です。また好みのカラースキームを導入し、モチベーションを上げられる点もターミナルが好きな方には最高なカスタマイズ性があります。

tmuxのインストール

tmuxは多くのUnix系OSに対応しています。ここではMacのインストール方法を紹介します。今回もサクッとbrewでインストールします。


brew update && brew upgrade


brew install tmux

インストール後、バージョンを確認しておきます。


tmux -V
tmux 3.3a

True Color(24bit color)を表示する

tmuxの設定の前に、alacrittytmuxの場合のハマりどころである、True Color(24bit color)の表示をできるようにします。

iTerm2とtmuxでTrue Color(24bit color)をテスト

iTerm2tmuxの場合は、何もしなくてもTrue Color(24bit color)が表示できますので、まずはiTerm2で以下のコマンドを入力し確認してみます。横幅は128列以上のサイズで実施すると綺麗に出力されます。

iTerm2でtmuxを起動します


tmux

TERMの設定


export TERM=xterm-256color
echo $TERM
xterm-256color

iTerm2でTrue Color(24bit color)表示のテスト


curl -s https://gist.githubusercontent.com/lifepillar/09a44b8cf0f9397465614e622979107f/raw/24-bit-color.sh | bash

iTerm2でTrue Color(24bit color)表示のテスト
iTerm2でTrue Color(24bit color)表示のテスト

上の画像のようにグラデーションが滑らかに表示されているとTrue Color(24bit color)で表示されています。

alacrittyとtmuxでTrue Color(24bit color)をテスト

今度は、alacrittyとtmuxでTrue Color(24bit color)表示のテストをしてみます。結論からお伝えするとデフォルトの状態だと正常に表示されません。

alacrittyでtmuxを起動します


tmux

TERMの設定


export TERM=xterm-256color
echo $TERM
xterm-256color

infocmpで確認


infocmp xterm-256color| head -1
/usr/share/terminfo/78/xterm-256color

alacrittyでTrue Color(24bit color)表示のテスト


curl -s https://gist.githubusercontent.com/lifepillar/09a44b8cf0f9397465614e622979107f/raw/24-bit-color.sh | bash

先程の画像と比べるとグラデーションが粗いことがわかります。

alacrittyでTrue Color(24bit color)表示のテスト
alacrittyでTrue Color(24bit color)表示のテスト

では、この状態を修正してみます。

alacrittyとtmuxでTrue Color(24bit color)を表示する

下のコマンドでxterm-256colorを新たに作り、ホームディレクトリの~/.terminfoに追加します。

ポイント


/opt/homebrew/Cellar/ncurses/6.4/bin/infocmp -x xterm-256color > xterm-256color.src
sudo /usr/bin/tic -x xterm-256color.src

~/.config/tmux/tmux.confで以下の様に設定します。:Tcフラグは、tmuxがTrue Colorをサポートするための設定を追加しています。


set -g default-terminal "xterm-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"

次にalacrittytmuxを起動してTERM=xterm-256colorを指定します。

Alacrittyのインストールは下の記事に詳しく紹介しています。

alacrittyでtmuxを起動します


tmux

TERMの設定


export TERM=xterm-256color
echo $TERM
xterm-256color

infocmpで確認


infocmp xterm-256color| head -1
/Users/u/.terminfo/78/xterm-256color

では再度、True Color(24bit color)の表示テストをします!

alacritty横幅は128列以上のサイズで実施すると綺麗に出力されます。

alacrittyでTrue Color(24bit color)表示のテスト


curl -s https://gist.githubusercontent.com/lifepillar/09a44b8cf0f9397465614e622979107f/raw/24-bit-color.sh | bash

成功!グラデーションも綺麗に表示されました。

alacrittytmuxでTrue Color(24bit color)が表示できましたので、次はtmuxの詳細設定をしていきます。

Amazonの読み放題・聴き放題

kindle unlimited 読み放題
200万冊以上が読み放題

Audible
12万以上の対象作品が聴き放題

Amazon オーディブル:2ヶ月無料キャンペーン中(5/9まで)→ 詳しくはこちら

Tmux Plugin Manager(tpm)の設定

まずはプラグインの設定からやっていきます。

1. tmuxのプラグインマネージャのインストール

tmuxのプラグインマネージャであるTmux Plugin Manager(tpm)をインストールします。tpmtmuxのプラグインを簡単に管理・インストール・更新するためのプラグインマネージャです。

Tmux Plugin Manager(tpm)の主な機能
  • プラグインのインストール: GitHubから直接プラグインを簡単にインストールできる。
  • プラグインのアップデート: すべてのプラグインを一度に更新できる。
  • プラグインの削除: 不要なプラグインを簡単に削除できる。

下のコマンドでTmux Plugin Manager(tpm)git cloneします。公式通りにやります。


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

tpm~/.tmux/plugins/tpmにダウンロードされました。

続いて、以下の7個のプラグインをインストールしてみます。

2. インストールするプラグインについて

tmuxの各プラグインのインストールは、tmuxの設定ファイルである~/.config/tmux/tmux.confに書きます。


mkdir ~/.config/tmux/


vi ~/.config/tmux/tmux.conf


# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'sainnhe/tmux-fzf'
set -g @plugin 'catppuccin/tmux'
set -g @plugin 'tmux-plugins/tmux-pain-control'


set -g default-terminal "xterm-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"

# プラグインマネージャの初期化(とりあえず最下部に記載)
run '~/.tmux/plugins/tpm/tpm'

上のようにtmuxの設定ファイルにインストールするプラグインを書く際は、GitHubリポジトリの名前を使います。

今回インストールするプラグインの概要は以下の通りです。

プラグイン説明
tmux-plugins/tpmtmuxのプラグインマネージャです。
tmux-plugins/tmux-sensible便利な基本的な設定をセットしてくれます。
自分で設定した内容を上書きしないので安心です。
tmux-plugins/tmux-resurrectセッションの状態を、手動で簡単に保存・復元ができます。
tmux-plugins/tmux-continuumセッションの状態を、自動で保存・復元ができます。
tmux-plugins/tmux-resurrectが必要)
sainnhe/tmux-fzfセッション、ウィンドウ、ペインの操作をfzfを使って操作できる。
catppuccin/tmuxCatppuccinoのカラーテーマです。
(今回はCatppuccinoのカラーで統一します)
tmux-plugins/tmux-pain-controlペインの操作を拡張し簡単に操作するためのプラグインです。

3. tmuxのプラグインのインストール

tpmによるプラグインのインストールをしてみます。

tmuxを起動し、Ctrl + b の後にI(大文字のi)でプラグインをインストールします。

Ctrl + b の後にI(大文字のi)でプラグインをインストール
Ctrl + b の後にI(大文字のi)でプラグインをインストール
Tmux Plugin Manager(tpm)の使い方
キーバインド説明
Ctrl + b の後に、Iプラグインのインストール
Ctrl + b の後に、U全てのプラグインのアップデート
Ctrl + b の後に、alt+uプラグインリストにないプラグインを削除する

プラグインの削除ですが、Macだとaltの扱いが面倒なので~/.config/tmux/pluginsから削除してもOKです。

Tmux Plugin Manager(tpm)によるプラグインのインストール方法は、シェルからコマンドでも可能です。以下のようにコマンドを実行します。


~/.tmux/plugins/tpm/bin/install_plugins all

また、デフォルトではprefixCtrl + b が設定されています。私は慣れてしまっていますが、多くの方は自分が押しやすく、他のキーと被らないprefixに工夫しています。

例えば、
Ctrl + aCtrl + spaceCtrl + \Ctrl + sCtrl + `
Ctrl + zCtrl + gCtrl + oCtrl + qCtrl + @
など。

prefixの設定方法はこの後紹介します。

tpmによるプラグインのアップデート

Tmux Plugin Manager(tpm)によるプラグインのアップデート方法は、シェルからコマンドでも可能です。以下のようにコマンドを実行します。


~/.tmux/plugins/tpm/bin/update_plugins all

tmuxの設定

tmuxの設定ファイルは~/.config/tmux/tmux.confです。


vi ~/.config/tmux/tmux.conf

現時点の設定ファイルは、上部にプラグインのリストがあり、最下部にrun '~/.tmux/plugins/tpm/tpm'がある状態です。

~/.config/tmux/tmux.conf


# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin 'sainnhe/tmux-fzf'
set -g @plugin 'catppuccin/tmux'
set -g @plugin 'tmux-plugins/tmux-pain-control'

#################################
##
##
## 基本的にはここに設定を書いていきます。
##
##
#################################

set -g default-terminal "xterm-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"

# プラグインマネージャの初期化(とりあえず最下部に記載)
run '~/.tmux/plugins/tpm/tpm'

TERMの設定

TERMの設定ですが、上でalacrittyでTrue Color(24bit color)を表示するように、新たなxterm-256colorを作り~/.terminfoに追加しました。そのxterm-256colorを使うために下の設定をします。

~/.config/tmux/tmux.conf


## default term
set -g default-terminal "xterm-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"

prefixキーの設定

次にprefixキーの設定です。デフォルトではCtrl + b が設定されています。私は慣れてしまっていますが、多くの方は自分が押しやすく他のアプリ(vimなど)と被らないprefixに工夫しています。

下の例は、デフォルトのCtrl + b を解除し、Ctrl + Spaceに設定する例です。

~/.config/tmux/tmux.conf


## prefix key
unbind C-b
set -g prefix C-Space
bind C-Space send-prefix

Macのキーボードで、Ctrl + Spaceの設定を無効にしておく必要があります

tmuxのprefixキーをCtrl + Spaceに設定する際は、Macで設定されているCtrl + Spaceの設定を無効にしておく必要があります。

[システム設定]→[キーボード]→[キーボードショットカット]→[入力ソース]でチェックを外して無効にしておきます。

設定ファイルを再読込するキーバインド

カスタマイズ好きの皆さんも私も、頻繁に設定ファイルを再読込みすることになりますので、prefix + rで設定ファイルを再読込みし、Reloaded tmux confと表示するように設定します。

~/.config/tmux/tmux.conf


## reload of the config 
unbind r
bind r source-file "~/.config/tmux/tmux.conf" \; display "Reloaded tmux conf"

見た目の設定(catppuccin)

tmuxの見た目で重要なステータスバーを設定します。下の画像のようにカスタマイズしました。

アイコンを表示するためにNerd Fontが必要になります。

この記事ではacacrittyFiraCode Nerd Fontを設定しています。詳しくは以前の記事をご覧ください。


## catppuccin config
set -g @catppuccin_window_left_separator "█"
set -g @catppuccin_window_middle_separator " "
set -g @catppuccin_window_right_separator_inverse "yes"
set -g @catppuccin_window_right_separator "█"
set -g @catppuccin_window_number_position "left"
set -g @catppuccin_window_default_fill "none"
set -g @catppuccin_window_current_fill "all"
set -g @catppuccin_window_default_text "#W"
set -g @catppuccin_window_current_text "#W"

set -g @catppuccin_directory_color "yellow"
set -g @catppuccin_status_modules_right "directory application"
set -g @catppuccin_status_modules_left "session"
set -g @catppuccin_status_left_separator  "█"
set -g @catppuccin_status_right_separator ""
set -g @catppuccin_status_right_separator_inverse "yes"
set -g @catppuccin_status_fill "all"
set -g @catppuccin_status_connect_separator "no"

# status statusline position
set -g status-position top
set -g status-interval 1

先程設定したprefix + rで設定ファイルを再読込みしてください。

@catppuccin_status_modulesから、
@catppuccin_status_modules_right
@catppuccin_status_modules_leftに変更になりました。

コピーモードの設定

tmuxのコピーモード内でvimのようなテキスト選択とコピーの動作を実現するように設定します。


## coye mode vi keybind
setw -g mode-keys vi

## Start selection with 'v'
bind -T copy-mode-vi v send-keys -X begin-selection

## Copy to clipboard with 'y'
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"

トラックパッドでスクロールする設定

デフォルトではトラックパッドでスクロールすると、コマンド履歴が遡る状態なので感覚的に期待している過去の出力バッファをスクロールできるように、マウスに関連する機能を有効にします。


## scroll
set -g mouse on

set -g mouse onで実現する主な機能
  • クリックでペインをアクティブにすることができる
  • ペインの境界をドラッグしてペインのサイズを調整することができる
  • バッファをスクロールできる

tmux-fzfの設定

tmux-fzfは、セッション、ウィンドウ、ペインの操作をfzfを使ってtmux内で操作できます。

下の例は、そのfzfインタフェースのサイズや線の色などをカスタマイズしています。

fzfは事前にインストールしておく必要があります。


brew install fzf

~/.config/tmux/tmux.conf


TMUX_FZF_LAUNCH_KEY="C-f"
TMUX_FZF_OPTIONS='--height 40% -w 60% --border --inline-info --color=border:#94e2d5 --preview "bat --style=numbers --color=always --line-range :200 {}" --preview-window=+{2}+3/2 --color=fg:#a9b1d6,hl:#f5c2e7,fg+:#a6e3a1,bg+:#1a1b26,hl+:#fab387'

tmux-fzfの起動は、上の設定のようにctrl + fに設定しています。tmuxのprefixキーの後に、ctrl + fで起動します。

tmux-pain-controlの使い方

ペインの操作を拡張し簡単に操作するためのプラグインであるtmux-pain-controlを、上でインストールしましたので、使い方を紹介します。

tmux-pain-controlを使うとペインの分割や移動をvimのカーソルの動きと同様の操作で可能となります。これを実現するためにプラグインを使わなくてもtmux.confに設定を書く方法もありますが、プラグインを使うことをおすすめします。

ペインの分割

tmux-pain-controlを使ったペインの分割は下の通りです。

prefix + -現在のペインを上部と下部の2つに分割
prefix + |現在のペインを左右の2つに分割
prefix + \現在のペインの全幅を左右の2つに分割
prefix + _現在のペインの完全な高さを上部と下部の2つに分割

ペインの移動

tmux-pain-controlを使ったペインの移動は下の通りです。

prefix + h(またはprefix + C-h左側のペインに移動
prefix + j(またはprefix + C-j下にあるペインに移動
prefix + k(またはprefix + C-k上にあるペインに移動
prefix + l(またはprefix + C-l右側のペインに移動

例えば、prefix + C-hは、ctrlを押しっぱなしで操作できるので楽です。prefixCtrl + Spaceを設定している場合)

ペインのサイズ調整

tmux-pain-controlを使ったペインのサイズ変更は下の通りです。

prefix + shift + hペインを左側に拡大(5文字分)
prefix + shift + jペインを下側に拡大(5文字分)
prefix + shift + kペインを上側に拡大(5文字分)
prefix + shift + lペインを右側に拡大(5文字分)

拡大する文字数を設定することができます。下の例は10文字分に設定。

~/.config/tmux/tmux.conf


set-option -g @pane_resize "10"

ペインの入れ替え

ペインの入れ替えはtmux-pain-controlには含まれていませんので、デフォルトのキーバインドを紹介します。

prefix + {現在のペインと前のペインの位置を入れ替える
prefix + }現在のペインと後のペイン(後に作ったペイン)の位置を入れ替える

ウィンドウの位置入れ替え

tmux-pain-controlを使ったウィンドウの位置入れ替えは下の通りです。(ペインではなくウィンドウです)

prefix + <ウィンドウを左に移動
prefix + >ウィンドウを右に移動

ネストされたtmuxセッションのprefixについて

ネストされたtmuxセッションでも同じprefixを使用したいと思います。

ローカル側のtmuxからsshでリモート側に接続してtmuxを起動する、といったシーンです。

ローカル側のprefix


set -g prefix C-b

リモート側のprefix


set -g prefix C-b
bind C-b send-prefix

こうすることで、リモート側のtmuxセッションでC-bを2回連続で押すとリモート側のtmuxプレフィックスとして認識されます。

localeの設定

tmux -uで起動してlocaleを念のため確認します。


locale
LANG=""
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

上のように環境変数LANGやLC_ALLが設定されていない場合は、~/.zshrcに以下を追加します。

~/.zshrc


export LC_ALL=ja_JP.UTF-8
export LANG=ja_JP.UTF-8

source ~/.zshrcして再度、localeしてみます。


locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL="ja_JP.UTF-8"

alacrittyを立ち上げたらtmuxを自動起動する

alacrittyの設定ファイルは、バージョン0.12まではYAML形式です。バージョン0.13以降はTOML形式に変更されています。

~/.config/alacritty/alacritty.yml


shell:
  program: /bin/zsh
  args:
    - -l
    - -c
    - "/opt/homebrew/bin/tmux a -t 0 || /opt/homebrew/bin/tmux -u"

~/.config/alacritty/alacritty.toml


[shell]
program = "/bin/zsh"
args = [
  "-l",
  "-c",
  "/opt/homebrew/bin/tmux a -t 0 || /opt/homebrew/bin/tmux -u",
]

alacritty起動時にzshを起動しtmuxのセッションID0にアタッチします。セッションID0がない場合は、新しいtmuxセッションをUTF-8モードで開始します。

最後に

最後まで読んでいただきありがとうございます。alacrittyで使うtmuxを設定するはいかがでしたでしょうか。

tmuxはカスタマイズ性と拡張性が高く、まだまだ学ぶべき点や発見がたくさんあります。公式GitHubなどでぜひ自分にあったモチベのあがる設定を見つけてください。

MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。

初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。

高速でシンプルなRust製ツールの人気記事

定番おすすめ記事

ターミナルを活用する記事をまとめました。ターミナルの活用方法やコマンドの使い方などは、UbuntuなどのLinuxでも活用できます。Macの大元がUnix系統であるからこそです。

カテゴリー:
関連記事