GNU screen/tmuxのフロントエンドツールであるbyobuの使い方を記載します。
Table of Contents
1 byobuとは
GNU screen/tmuxのフロントエンドツールです。GNU screen/tmuxの複雑な設定を簡略化することを目指したものです。
tmuxをバックエンドとした場合は以下のようになります。
screenをバックエンドとした場合は以下のようになります。
若干情報過多になりすぎてる感はありますが、CPU使用率やメモリ使用率等のGNU screen/tmuxでは複雑な設定が簡単に表示されます。
2 byobuのインストール
CentOS以外はデフォルトのリポジトリからインストールできます。
2.1 Ubuntu 16.04 / Debian 8
aptでインストールします。
$ sudo apt-get install -y byobu
2.2 Fedora 23
dnfでインストールします。
$ sudo dnf install -y byobu
2.3 CentOS 7
epel-releaseを利用するか、Fedora 22からsrpmを持ってきてrebuildしてインストールします。以下はFedora 22からsrpmを持ってくる手順です。
$ sudo yum install -y rpmdevtools gettext desktop-file-utils automake tmux $ FEDORA=http://archives.fedoraproject.org/pub/archive/fedora/linux/releases $ wget ${FEDORA}/22/Everything/source/SRPMS/b/byobu-5.92-1.fc22.src.rpm $ rpmbuild --rebuild byobu-5.92-1.fc22.src.rpm $ sudo yum localinstall -y ~/rpmbuild/RPMS/noarch/byobu-*.rpm
2.4 ArchLinux
AURのソースコードを利用します。
$ git clone https://aur.archlinux.org/byobu.git $ cd byobu
ビルドに必要なパッケージと動作に必要なパッケージを取得する為、PKGBUILDファイルをbashに読み込ませます。
$ . PKGBUILD
ビルドに必要なパッケージをインストールします。
$ sudo pacman -S --asdeps --noconfirm ${makedepends[@]}
動作に必要なパッケージをインストールします。
$ sudo pacman -S --noconfirm ${depends[@]}
パッケージをビルドしてインストールします。
$ makepkg $ sudo pacman -U --noconfirm byobu-*.pkg.tar.xz
2.5 OpenSUSE
Ubuntuのソースコードを利用します。適時screenも入れてください。
sudo zypper -n in tmux LAUNCHPAD=https://launchpad.net wget -q ${LAUNCHPAD}/byobu/trunk/5.112/+download/byobu_5.112.orig.tar.gz tar zxf byobu_5.112.orig.tar.gz cd byobu-5.112 ./configure && make && sudo make install
3 byobuの設定
byobuの設定について記載します。
3.1 byobuを起動する
byobuコマンドでbyobuを起動します。すでにbyobuが動作している場合は既存のbyobuにアタッチされます。
$ byobu
すでにbyobuが動作している状態で別のbyobuを起動するには-Sオプションを用います。
$ byobu -S <session-name>
3.2 byobuデフォルトのプロンプトをON/OFFする
byobuはカラー表示のプロンプトを用意しています。
hiroom2@centos-7:~$
byobu-enable-promptコマンドでONにし、byobu-disable-promptコマンドでOFFにします。byobu-promptコマンドでY/nに応えることでON/OFFを切り替えます。
byobu-enable-promptを実行した場合、byobuデフォルトのプロンプトは${HOME}/.bashrcと${HOME}/.byobu/prompt経由で、/usr/share/byobu/profiles/bashrcが実行されることで設定されます。
[ -r /home/hiroom2/.byobu/prompt ] && . /home/hiroom2/.byobu/prompt #byobu-prompt#
3.3 バックエンドの選択
byobu-screenでGNU screenを、byobu-tmuxでtmuxをバックエンドとして選択します。byobu-select-backendでGNU screen/tmuxを選択でき、byobuコマンドで設定が読み込まれます。
バックエンドの設定は${HOME}/.byobu/backendに保存されます。
$ cat ~/.byobu/backend BYOBU_BACKEND=tmux
3.4 エスケープキーの変更
byobuのデフォルトではファンクションキーかC-aがエスケープキーです。C-aの場合は以下のようになっています。
$ cat ~/.byobu/keybindings source $BYOBU_PREFIX/share/byobu/keybindings/common bindkey "^A" escape "^Aa" register x "^A"
tmuxの場合は${HOME}/.byobu/keybindings.tmuxで変更します。
$ cat ~/.byobu/keybindings.tmux set -g prefix C-u unbind-key -n C-a
GNU screenの場合は${HOME}/.byobu/.screenrcで変更します。
$ cat ~/.byobu/.screenrc escape ^Uu
3.5 エスケープキーのキーバインディング
エスケープキーをC-uにした場合のキーバインディングは以下のとおりです。
C-u c | Create new window |
C-u C-p | Focus to prev window |
C-u C-n | Focus to next window |
C-u <number> | Focus to <number> window |
C-u d | Detach screen |
C-u C-u | Focus to last window |
なお、tmuxでC-u C-uを実行するには以下の設定が必要です。
$ cat ~/.byobu/.tmux.conf bind C-j run "tmux last-window || true"
3.6 byobuの設定ファイルのパスを変える
デフォルトで${HOME}/.byobuディレクトリの設定ファイルが読み込まれます。
$ byobu # ${HOME}/.byobu is used.
BYOBU_CONFIG_DIRを指定することでディレクトリを変更できます。
$ BYOBU_CONFIG_DIR=${HOME}/.mybyobu byobu
3.7 status
画面下部に表示されるstatus項目は${BYOBU_PREFIX}/lib/byobu配下のスクリプトが実現しています。
$ ls ${BYOBU_PREFIX}/lib/byobu/ # Running on byobu apport custom fan_speed memory release trash arch date hostname menu services updates_available battery disk include network session uptime color disk_io ip_address processes swap users cpu_count distro load_average raid time whoami cpu_freq ec2_cost logo rcs_cost time_binary wifi_quality cpu_temp entropy mail reboot_required time_utc
これらのスクリプトを${HOME}/.byobu/statusのtmux_rightやscreen_lower_rightで指定することでstatusに反映されます。screen_xxxは空の場合でもcolorだけは設定しないと色が崩れます。
$ cat ~/.byobu/status # Screen has two status lines, with 4 quadrants for status screen_upper_left="color" screen_upper_right="color" screen_lower_left="color" screen_lower_right="color load_average memory disk time" # Tmux has one status line, with 2 halves for status tmux_left= tmux_right="load_average memory disk time"
以下はバックエンドにtmuxを使った場合の表示です。
tmuxの場合はstatusの更新間隔を調整できます。
$ cat ~/.byobu/.tmux.conf set -g status-interval 15 # default 15 (seconds)
GNU screenの場合はscreen_lower_rightでないと更新されないスクリプトがあることに留意してください(おそらくtime以外はすべて更新されない)。