背景

[Byobu] window 0だけautomatic-renameが効かない問題のworkaroundを作ってみた
背景ByobuはUbuntuに初期状態でinstallされていて、設定ファイルを編集するようなカスタマイズを全く必要とせずに、terminalのタブ・分割・セッション保持等を実現出来て便利なツールと言える。課題自分はTerminal上ではあ...
上記に書いた通り、byobuはカスタマイズ性が低いこと、不具合が修正されないまま残っていることなどを踏まえて、tmuxを設定して直接使う方法を模索した。
とはいえ、自分のようにターミナルの使用・設定に慣れていない人にはtmuxは設定が難しい。初心者にはout-of-the-boxで使えるbyobuの方が向いている。
TL;DR
gpakosz/.tmuxのインストール
対象環境
- 試したのはUbuntu Linux 20.04 LTS x64
- 公式に記載のRequirementsには特別なものは無いので、ほとんどの環境で動くと思われる
- tmux
>= 2.3
(soon>= 2.4
) running inside Linux, Mac, OpenBSD, Cygwin or WSL - awk, perl and sed
- outside of tmux,
$TERM
must be set toxterm-256color
- tmux
Nerdフォントのインストール
アイコンを使っているので、Nerdフォント(を統合した日本語フォント)が必要。
インストール方法は下記の「Nerdフォントのインストール」を参照のこと。

[Zsh] Preztoを使ってお手軽にシェルを強化する
経緯CLIはあまり使いたくない。iniみたいなフォーマットの設定ファイルの手書きとかしたくない。そんな自分も色々な制約なりしがらみによってCLIを使わざるを得ないことがある。何もカスタマイズしていないbashだと補完も弱くて不便。でも、zs...
Gitのcloneとファイルの配置
もし~/.tmux.conf
がある場合上書きされてしまうので、バックアップを取ってから下記のステップに進む。
$ cd
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local .
設定のカスタマイズ方法
上記でコピーした~/.tmux.conf.local
を編集する。
カスタマイズしてみた内容の紹介
想定環境
下記の記事で設定したzsh環境で使うことを想定。

[Zsh] Preztoを使ってお手軽にシェルを強化する
経緯CLIはあまり使いたくない。iniみたいなフォーマットの設定ファイルの手書きとかしたくない。そんな自分も色々な制約なりしがらみによってCLIを使わざるを得ないことがある。何もカスタマイズしていないbashだと補完も弱くて不便。でも、zs...
カスタマイズの方向性
以下を目標にキーバインド・ステータスバーの設定を行った。
- byobuのFxxキーおよびScreen風キーバインド(Prefix-key: Ctrl-a)をベースに、ブラウザ等のGUIアプリに近いキーバインドを実現する
- ステータスバーの表示もbyobuっぽくする(CPU, RAM, Disk, IP, 時刻などを表示)
ステータスバーのセパレーターはPowerline風(三角形のセパレーター)ではなく、下記の理由でストレートのレガシーなセパレーターを利用している。
- Powerline風セパレーターを使うと表示が乱れるケースがあった
- ZshのPowerlevel10kは三角形のセパレーター、tmuxはストレートのセパレーターとデザインを別にした方がが見やすい
カスタマイズ内容の公開場所
publicレポジトリにする内容に相応しい水準とは言いがたいが、GitHubにて公開中。
GitHub - figmentum/.tmux.conf.customization: tmux customization based on gpakosz/.tmux
tmux customization based on gpakosz/.tmux. Contribute to figmentum/.tmux.conf.customization development by creating an a...
キーバインドの説明は今はまだ無いので、.tmux.conf.localを直接確認してもらいたい。時間があればREADMEに記載予定。
.tmux.conf.customizationの使い方
基本はREADME > 使い方に記載した通り。
$ cd ~
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ git clone https://github.com/figmentum/.tmux.conf.customization.git
# Repositoryの.tmux.conf.localをそのまま利用する or 直接書き換える場合
$ ln -s ~/.tmux.conf.customization/.tmux.conf.local ~/
# .tmux.conf.localをコピーして編集する場合
$ cp ~/.tmux.conf.customization/.tmux.conf.local ~/
# scriptsをPATHに追加(bashの場合)
$ echo '
if [[ -d $HOME/.tmux.conf.customization/scripts ]]; then
export PATH="$PATH":"$HOME/.tmux.conf.customization/scripts"
fi
' >> ~/.bashrc
# scriptsをPATHに追加(zshの場合)
$ echo '
if [[ -d $HOME/.tmux.conf.customization/scripts ]]; then
export PATH="$PATH":"$HOME/.tmux.conf.customization/scripts"
fi
' >> ~/.zshrc
.tmux.conf.customization/.tmux.conf.localを使う(or ベースにする)
$HOME/.tmux.conf.customization/scripts
をPATH
に含める自分以外が使うことは想定していないサンプルなので、不具合や好みと合わない部分は各自修正して使って欲しい。
上記適用時の表示サンプル
スーパーライトユーザー向けのスーパー基本的な使い方の説明
対象ユーザー
- byobuを特にオプション指定せずに1セッションで起動(or byobu-enable設定)しているなど、限られた基本的な使い方のみで利用している
-
- Ctrl-a->Ctrl-c(新しいwindowを作成)、Ctrl-a->Ctrl-k(現在のwindowを閉じる)、Ctrl-a->Ctrl-n(次のwindow)、Ctrl-a->Ctrl-p(前のwindow)など
-
- ターミナルマルチプレクサへの期待
- SSHを切断してもシェルが終了せず、再接続時に作業を再開出来る
- タブで複数のシェルを同時に開いて切り替えながら使える
既存セッションがなければ新規作成、あれば既存セッションにアタッチ
$ tmux new-session -A -s default
上記コマンドで、default
という名前のセッションが存在しない場合は新規作成、存在する場合はdefault
という名前のセッションにアタッチする。
alias byobu='tmux new-session -A -s default'
非常に乱暴だが、上のようにbyobuをこのコマンドのaliasにしてしまえば、byobuをシングルセッションで使っているときと同じような感覚で使える。
gpakosz/.tmux
をベースに自分用にtmuxをカスタマイズしてみたという備忘録に留まっている。有用性には期待しないこと。