byobuの使い方

GNU screen/tmuxのフロントエンドツールであるbyobuの使い方を記載します。

 

1 byobuとは

GNU screen/tmuxのフロントエンドツールです。GNU screen/tmuxの複雑な設定を簡略化することを目指したものです。

tmuxをバックエンドとした場合は以下のようになります。

0001_tmux.png

screenをバックエンドとした場合は以下のようになります。

0002_screen.png

若干情報過多になりすぎてる感はありますが、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

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を使った場合の表示です。

0003_status.png

tmuxの場合はstatusの更新間隔を調整できます。

$ cat ~/.byobu/.tmux.conf
set -g status-interval 15  # default 15 (seconds)

GNU screenの場合はscreen_lower_rightでないと更新されないスクリプトがあることに留意してください(おそらくtime以外はすべて更新されない)。