アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » ADMINISTRATOR STAGE » FreeBSD Daily Topics » 2009年1月16日 ≪注目≫コンソールを活用する方法: jfbterm(1),uim-fep(1),screen(1) 日本語表示と入力にも対応

FreeBSD Daily Topics

2009年1月16日 ≪注目≫コンソールを活用する方法: jfbterm(1),uim-fep(1),screen(1) 日本語表示と入力にも対応

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 jfbterm

jfbtermを起動したら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
endif

screen(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)でリモートログインしてさまざまな作業ができるようになって便利です。

著者プロフィール

後藤大地(ごとうだいち)

ONGS Inc.代表取締役。FreeBSD committer。MYCOMジャーナルにおけるニュース執筆他,『改訂第二版 FreeBSDビギナーズバイブル』,『D言語パーフェクトガイド』,『UNIX本格マスター 基礎編~Linux&FreeBSDを使いこなすための第一歩~』など著書多数.

著書

  • UNIX本格マスター 基礎編 〜Linux&FreeBSDを使いこなすための第一歩〜

    UNIX本格マスター 基礎編 〜Linux&FreeBSDを使いこなすための第一歩〜

バックナンバー

FreeBSD Daily Topics

バックナンバー一覧

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

C/C++プログラマのためのDTrace入門

よくカーネルのチューニングや解析で活用されるDTraceですが,実はユーザプログラムの開発においても非常に有用です。連載ではC/C++プログラマやテストに関わる方向けにDTraceの使い方を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

検索エンジンはいかにして動くのか?

本連載では, 今や誰もが利用している検索エンジンの中身を,全体の仕組みやデータ構造,アルゴリズムから分散インデックスまで,最近の研究事例も交えて紹介します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス