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で取り上げてほしいネタは?

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

その他の連載

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

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

サーバーを自社で運用管理するのはもう限界…。データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

続・先取り! Google Chrome Extensions

2010年1月のリリースが予定されているGoogle Chrome 4に搭載されるExtensionsについて,その詳細を先取りで解説します。最新情報から,ユーザースクリプトやテーマの作り方など関連情報もお届けします。

モダンPerlの世界へようこそ

この連載では,Perlの世代間ギャップに悩んでいる方に,いくらかの背景知識と,これだけは知っておいたほうがよいという最低限の慣用句をお届けします。

Hosting Department:ホスティングを活用するための基礎知識

本連載では,ホスティングサービスを活用する上で知っておきたい基礎知識を解説します。

Blogopolisから学ぶ計算幾何

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

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

連載一覧

gihyo.jp

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

書籍案内

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

定期刊行物一覧

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

最近のコメント