fbpad
fbpad は一文字のタグを使って多数のターミナルを管理できる小型のフレームバッファターミナルです。C で書かれており固有のフォントフォーマット tinyfont を使って Xorg でフォントを使うために必要なパッケージが要らないために非常に軽量です。fbpad は任意で256色や太字フォント、フレームバッファのコンテンツのメモリ保存をサポートしており、様々な用途で X サーバーを置き換えることができます。
目次
インストール
fbpad-gitAUR パッケージをインストールしてください。デフォルトでは fbpad の "bold" と "scrsnap" ブランチがインポートされ、256色と太字フォント、そしてフレームバッファの中身の保存機能が追加されます。fbpad は config.h
ファイルでカスタマイズすることができ、config.h
ファイルを編集したら makepkg --skipinteg -i
を使って fbpad を再コンパイルしてください。
設定
config.h
でフォント (詳しくは下述), SHELL
, MAIL
, EDITOR
の定義を編集することができます。
dwm ユーザーは fbpad にすぐに慣れるでしょう。fbpad のキーバインドは修飾キーで始まり、dwm と同じように Alt
キーにハードコードされています。Alt+j
と Alt+k
で開いているタグのターミナルが切り替わり、Alt+o
で最後に開いたタグに切り替わり、Alt+p
で開いているタグのリストが表示されます。ソースコードの手動パッチに抵抗がなければ fbpad.c
ファイルを編集してキーバインドを編集・追加できます。
fbpad を頻繁に再コンパイルする場合、手動で再起動しなくても fbpad をリロードできるようにすると便利でしょう。以下のコードは tty1 でログインした後に fbpad を起動し、Ctrl+Alt+q
で fbpad を終了したときにリロードします。
if [[ $(tty) = /dev/tty1 ]]; then while true; do fbpad >/dev/null 2>&1 done fi
上記をコマンドラインシェルの設定ファイルの末尾に追加してください。
タグの色
タグリストのデフォルトの背景色は白にハードコードされていて、同じく空のタグの前景色は黒に、完全に埋まったタグの前景色は緑に (タグにはそれぞれ2つまでターミナルを格納できます)、完全には埋まっていないタグの前景色は青になっています。以下のパッチを使うことでカラースキームを変更することができます:
--- a/fbpad.c 2011-11-11 13:02:22.834825518 -0500 +++ b/fbpad.c 2011-11-11 13:04:07.016043271 -0500 @@ -110,7 +110,7 @@ static void showtags(void) { - int colors[] = {15, 4, 2}; + int colors[] = {8, 2, 9}; int c = 0; int r = pad_rows() - 1; int i; @@ -128,7 +128,7 @@ nt++; pad_put(i == ctag ? '(' : ' ', r, c++, FGCOLOR, BGCOLOR); if (TERMSNAP(i)) - pad_put(tags[i], r, c++, !nt ? BGCOLOR : colors[nt], 15); + pad_put(tags[i], r, c++, !nt ? 8 : colors[nt], BGCOLOR); else pad_put(tags[i], r, c++, colors[nt], BGCOLOR); pad_put(i == ctag ? ')' : ' ', r, c++, FGCOLOR, BGCOLOR);
使用するときは "8" を空のタグで使いたい色に、"2" を完全には埋まっていないタグの色に、"9" を完全に埋まったタグの色に置き換えてください。0-15 の色は config.h
ファイルで定義されています。また、上記のパッチはデフォルトの背景色をターミナルの背景色に変更します。
2番目の "8" は fbpad がフレームバッファの中身を保存するときのタグの色です。TAGS_SAVED
を TAGS
と定義した場合、デフォルトの前景色と保存されるタグの色を同じにすると良いでしょう。もしくは、TAGS_SAVED
を保存するタグを連結した文字列として定義する場合、2番目の "8" は保存されるタグを示す色に変えると良いでしょう。
パッチは fbpad-tagcolor.diff
として保存して source 配列に 'fbpad-tagcolor.diff'
を追加し、PKGBUILD
の config.h
ファイルをコピーしている行の後に以下の行を追加してください:
patch -p1 -i "${srcdir}/${_gitname}-tagcolor.diff" || return 1
フォント
fbpad のフォントフォーマットは "tinyfont" であり、TTF ファイルを tinyfont フォーマットに変換するユーティリティとして ft2tfAUR が存在します。ft2tf のビルドディレクトリの config.h
ファイルを編集して使用したいフォントの TTF ファイルを指定してください。例えばフォントファイル MonteCarloFixed.ttf
が $HOME/.fonts
ディレクトリに存在する場合、config.h
の10行目を以下のように編集 (ユーザー名の "archie" と作成するフォントサイズの 6 は適当に置き換えてください):
{"/home/archie/.fonts/MonteCarloFixed12.ttf", 6},
他のフォントの行は削除してください。他のフォントの文字でフォントを補間したい場合、上記と同じように他のフォントの TTF ファイルの行を追加してください。
それから makepkg -skipinteg -i
を実行してカスタマイズした設定でパッケージをビルド・インストールしてください。
ft2tf をインストールしたら、以下のコマンドで tinyfont ファイルが作成されます:
$ ft2tf > MyFont.tf
"MyFont" は適当な名前に置き換えることができます。
忘れずに config.h
を編集して MyFont.tf
を保存したディレクトリを指定してください。フォントに太字体が存在する場合、同じように ft2tf の config.h
ファイルを編集して、今度は ft2tf の config.h
で太字の TTF ファイルの場所を指定して、makepkg でビルドして fbpad の config.h
の太字の tinyfont の場所を追加してください。
また、一部のフォントは WIDTHDIFF
と HEIGHTDIFF
を修正して横幅と高さを調整する必要があります。
カラーのサポート
デフォルトで AUR のパッケージは fbpad のカスタム terminfo をインストールしますが、256色のサポートを使うにはシェルの設定ファイルに以下を追加する必要があります:
export TERM=fbpad-256
デフォルトシェルで生成されないコマンド (例えば EDITOR
と MAIL
のコマンド) はシェルの設定ファイルを読み込まないため、config.h
ファイルで EDITOR
と MAIL
のコマンドを編集して親のシェルで実行するように定義する必要があります。例えば、zsh を使用する場合、MAIL
のデフォルトコマンドを以下から:
#define MAIL "mailx"
以下のように変更します:
#define MAIL "zsh -i -c mailx"
さらに、ls
コマンドに色を付けるには "fbpad-256" をカラー対応のターミナルのリストに追加する必要があります。README
によれば、シェルで以下のコマンドを実行してください:
$ dircolors --print-database | sed '/^TERM linux$/aTERM fbpad-256' >$HOME/.dircolors
そしてシェルの設定ファイルに eval `dircolors ~/.dircolors`
を追加してください。
ヒントとテクニック
テキストのコピー
fbpad ではマウスを使わなくても何でもできるようになっており、テキストをコピーしたい場合、Alt+s
コマンドを使うことで画面上の全てのテキストのスクリーンショットを作成できます。全てのテキストが /tmp/scr
ファイルに保存されます。シェルが vim によるコマンドラインの編集をサポートしている場合 (例えば zsh のコマンドライン編集の ZLE 関数)、vim で新しいバッファとして /tmp/scr
ファイルを開いてオリジナルのバッファに必要なテキストを貼り付けることができます。Emacs ユーザーも同じようにコピーできます。
YouTube の試聴
MPlayer の動画出力ドライバーを fbdev2
に設定している場合、youtube-viewer を使って YouTube を検索してコマンドラインから fbpad で MPlayer で試聴することができます。また、以下のスクリプトをコマンドラインのウェブブラウザ w3m の外部ブラウザとして追加することで、YouTube のウェブサイトから動画の再生をお好きなメディアプレイヤーで実行できます。以下のスクリプトは fbpad の作者によって作られた軽量なメディアプレイヤー fbff-gitAUR と、YouTube の URL を直接試聴可能な URL に変換する UNIX ライクなシンプルなプログラム yturlAUR を使っています。
#!/bin/sh video=$(yturl $1) fbff -f $video > /dev/null 2>&1
ファイルを PATH
が通っているディレクトリに youtube.sh
として保存したら、w3m の外部ブラウザとして追加してください。w3m を開いて o
キーを押してオプションを編集し、"External Program Settings" の "External Browser" フィールドを編集して "youtube.sh" と入力してください。"OK" を押したら設定完了です。動画を視聴したくなったら、YouTube を開いて、M
キーを押せば、fbff で動画が即座にストリーミング再生されます。
推奨プログラム
以下はフレームバッファベースのデスクトップの利便性を高めるプログラムです:
- dvtm - 動的な仮想ターミナルマネージャ (dwm のコンソール版)
- fbcatAUR - フレームバッファのスクリーンショット取得ツール
- fbff-gitAUR - ffmpeg ベースのメディアプレイヤー
- fbpdf-gitAUR - MuPDF ベースの PDF ビューア、DjVu のサポートや poppler によるレンダリングを任意でサポート
- fbv - 画像ビューア
- screen - ターミナルマルチプレクサ
- w3m - コマンドラインウェブブラウザ
参照
- fbpdf, fbpad, and fbff - A Minimal Framebuffer Software Suite
- litcave, Ali Gholami Rudi のソフトウェアプロジェクトのホームページ