FreeBSD Daily Topics
2009年1月16日 ≪注目≫コンソールを活用する方法: jfbterm(1),uim-fep(1),screen(1) 日本語表示と入力にも対応
2009年1月16日
FreeBSD, コンソール, 日本語表示, 日本語入力, jfbterm(1), uim-fep(1), screen(1)
HOME, コンソール, screen, Ctrl, 日本語入力
tips
- CUI Platform - jfbterm(1), uim-fep(1) and screen(1)
tips - GnomeやKDEのアップグレード,X.Orgのアップグレードなどウィンドウシステムの基幹に関連するアプリケーションやライブラリ,ツールキットのアップグレード時にはウィンドウシステム関連のアプリケーションは終了させておいて,コンソールからアップグレード作業を行ったほうが良い場合があります。
こういった場合はコンソールで日本語閲覧や日本語入力ができるようにし,さらにscreen(1)を併用して複数の仮想コンソールを使えるようにしておくと便利です。ウィンドウシステムのアップグレード中にも日本語表示や入力を伴う作業をコンソールで作業できます。ここでは jfbterm(1), uim-fep(1), screen(1)のツールを使った高解像度日本語対応のコンソールプラットフォームの構築方法を紹介します。
まず次のアプリケーションをインストールします。
- jfbterm(sysutils/jfbterm)コンソール向け多言語対応システム
- uim-fep(japanese/uim-anthy)UIM-FEPとAnthyモジュール
- screen(sysutils/screen)仮想ターミナルマネージャ
jfbtermでコンソールで日本語や他の言語を表示できるようにし(さらに高解像度の描画を実現し),uim-fepでコンソールにおける日本語入力を実現,screenで複数の画面を切り替えて作業できるようにします。jfbtermは描画にフレームバッファを使うためLinuxのみで動作していましたが,FreeBSDへの移植が実施され使えるようになりました。
jfbtermをインストールしたらtermcapにjfbtermを登録する必要があるため次のように作業を行います。vesaカーネルモジュールを使った画面描画実施するためvesaカーネルモジュールの読み込み,設定ファイルのコピーも行います。システム起動時にvesaカーネルモジュールを自動的に読み込ませるには/boot/loader.confに「vesa_load="YES"」を追加しておきます。
jfbtermインストール後に実施する作業
# kldload vesa # cat /usr/local/share/jfbterm/termcap.jfbterm >> /usr/share/misc/termcap # cap_mkdb /usr/share/misc/termcap # cp /usr/local/etc/jfbterm.conf.sample /usr/local/etc/jfbterm.confリスト /boot/loader.confに追加する設定
vesa_load="YES"jfbtermでM+ビットマップフォントを使いたい場合は,M+ビットマップフォント(japanese/mplusfonts)をインストールしてから/usr/local/etc/jfbterm.confの設定ファイルでD. Font and Encoding configurationの1)の設定をコメントして,代わりに2)の設定をコメントアウトして有効にします。
jfbtermを実行する場合,環境変数LANGが設定されている必要があります。コンソールではLANGをCに設定したり,そもそも設定しないで使うこともありますので,次のように実行すると良いでしょう。aliasで設定しておくと便利です。デフォルトの設定では1024×768の16depthで起動されます。
jfbtermを実行する場合,環境変数LANGも設定
env LANG=ja_JP.UTF-8 jfbtermjfbtermを起動したらuim-fepを実行して日本語入力を実現します。日本語入力の開始と終了のキーは${HOME}/.uim設定ファイルで設定します。
たとえば,次のような設定を追加しておくと便利です。この設定ではCtrl-\,Alt-全角半角,全角半角,変換,Shift-Spaceのそれぞれが切り替えキーとして使えるようになります。
リスト ${HOME}/.uim - 日本語入力のキー切り替えをCtrl-\,Alt-全角半角,全角半角,変換,Shift-Spaceに設定
;; toggle input method key configuration (define-key generic-on-key? '("<Control>\\" "<Alt>zenkaku-hankaku" "zenkaku-hankaku" "Henkan_Mode" "<Shift> ")) (define-key generic-off-key? '("<Control>\\" "<Alt>zenkaku-hankaku" "zenkaku-hankaku" "Henkan_Mode" "<Shift> "))jfbtermを起動し,uim-fepを起動したら,最後にscreenを起動します。screenを起動してからuim-fepを起動して日本語入力を実施するターミナルを区別するという使い方もできます。
screen(1)は環境変数TERMをscreenに設定しますが,この設定ではscreenでバックスペースキーが機能しないといった状況になります。これはTERMをjfbterm-colorやjfbtermに設定することで回避できます。このあたりはシェルの設定ファイルで自動的に切り替えるようにしておくと便利です。
たとえば,zsh, bash, tcshを使っているなら次のようにターミナルごとの切り替え設定を追加しておきます(procstat(1)を使っているので最近のFreeBSDが必要です。procstat(1)が存在しない場合はps(1)で同様の処理を実施する必要があります)。
リスト screen(1)がjfbterm(1)で実行されている場合はTERMをjfbterm-colorに設定 - ${HOME}/.zshrcと${HOME}/.bashrc用設定
case "${TERM}" in screen) pcmd=$(procstat -ch $$ | awk '{print $2}') ppid=$(procstat -h $$ | awk '{print $2}') while [ "0" != "${ppid}" ] do if [ "jfbterm" = "${pcmd}" ] then TERM=jfbterm-color break fi pcmd=$(procstat -ch "${ppid}" | awk '{print $2}') ppid=$(procstat -h "${ppid}" | awk '{print $2}') done unset pcmd ppid ;; esacリスト screen(1)がjfbterm(1)で実行されている場合はTERMをjfbterm-colorに設定 - ${HOME}/.tcshrc用設定
if ( ${?TERM} ) then switch ( "${TERM}" ) case screen: set pcmd=`procstat -ch $$ | awk '{print $2}'` set ppid=`procstat -h $$ | awk '{print $2}'` while ( ! "0" == "${ppid}" ) if ( "jfbterm" == "${pcmd}" ) then TERM=jfbterm-color break endif set pcmd=`procstat -ch "${ppid}" | awk '{print $2}'` set ppid=`procstat -h "${ppid}" | awk '{print $2}'` end unset pcmd ppid breaksw endsw endifコンソールは背景が黒ですが,xtermやgnome-terminal,konsoleはデフォルトでは背景色は白です。このためエディタやls(1)などのハイライトの設定を状況に応じて変更した方が便利です。上記のようにTERMをjfbterm-colorに設定するようにした場合,TERMがcons25やjfbterm-colorである場合には背景色が黒,それ以外の場合には白と仮定して設定するといったことができるようになります。ls(1)やシェルカラーの変更は上記例のようにTERMで切り替えて実施すると便利です。
リスト 背景色が黒い場合にはハイライト設定を切り替える Vimの場合 - ${HOME}/.vimrc
" set background color and text color (for black display) if "cons25" == $TERM || "jfbterm-color" == $TERM || "jfbterm" == $TERM hi Normal ctermbg=black ctermfg=white endifscreen(1)と類似した操作を行うアプリケーションにtmux(misc/tmux)があります。こちらはscreen(1)のようにTERMを設定しなくてもバックスペースが使えますが,起動された段階で親プロセスから分かれてPID 1を親にします。このためtmuxがどこで起動されたか判定できず,カラー設定が難しいという問題があります。
screen(1)ではCtrl-aで新しいウィンドウの作成,Ctrl-"で一覧の表示,Ctrl-数値で指定したウィンドウへ移動,Ctrl-nで次のウィンドウへ移動,Ctrl-?でコマンド一覧の表示を実施できます。Ctrl-aはシェルやEmacsでは行頭へのジャンプに割り当てられていますので,気になる場合にはscreen(1)かシェル/エディタかどちらかの設定を変更する必要があります。「Ctrl-a a」で「Ctrl-a」本来の動作になるので,これを覚えてしまうという方法もあります。
Finch (net-im/finch)のようにCUIで動作するメッセンジャーもあり(PidginのCUI版のようなもの),CUIで動作するアプリケーションを併用することでウィンドウシステムを使っているときと同じような操作をCUIでも実現できます。CUIでの操作に慣れておくとssh(1)でリモートログインしてさまざまな作業ができるようになって便利です。
FreeBSD Daily Topics
- 2009年1月29日 NVIDIA Driver 180.25 for FreeBSD登場,gstreamer-plugins更新方法,OOoビルドボックス支援,ccacheの使い方
- 2009年1月28日 Metacity/GnomeでGoogle Gadgetを有効にする方法,複数の音源グループが認識されている場合にデフォルトの音源グループを指定する方法,Seagate HDDファームウェア更新続報
- 2009年1月27日 ≪注目≫X.Org 7.4へのアップグレード方法とトラブルシューティング,グラフィックアクセラレータの選択指針
- 2009年1月24日 シャットダウン時のビープ音を抑制する方法,コンソールへの出力をログファイルに記録する方法,X.Org 7.4進展状況,FreeBSD Monoメーリングリスト登場]
- 2009年1月23日 ≪注目≫TwitterでFreeBSD最新情報を追う,PCBSD PBI Builder 2.0登場,NVIDIA Driver 180.22登場,FreeNASで4TB NAS構築動画,ccacheでC/C++アプリ再ビルドを高速化する方法
- 2009年1月20日 ≪重要≫≪注意≫Seagateハードディスク特定のモデルにアクセスできなくなる問題 - 注意して対処を
- 2009年1月19日 FreeBSD 7.1新機能cpuset(1)でプロセス/スレッドをCPU割当,GEOMディスクスケジューラ登場,kldpatchでデバイス活用,TCP Appropriate Byte Countingマージ,Linuxulator64パッチ登場,X.Org 7.4作業他
- 2009年1月16日 ≪注目≫コンソールを活用する方法: jfbterm(1),uim-fep(1),screen(1) 日本語表示と入力にも対応
- 2009年1月15日 Perlを5.8.9へアップグレードする方法 perl-after-upgrade(8),セキュリティ勧告2件(FreeBSD-SA-09:04.bind, FreeBSD-SA-09:03.ntpd)
- 2009年1月14日 Gnome 2.24.x登場―2.22.xからのアップグレード方法と更新後の注意点


