Xterm-Title mini-HOWTO Winfried Trper,winni@xpilot.org Version 1.3 22 Oct 1996 Tetsu Isaji, isaji@mxu.meshnet.or.jp 18 Dec 1997 このmini-HOWTOはxtermのタイトルバー表示をエスケープシーケンスで制御す るためのドキュメントです。 [訳注:"``関連情報''"章にはそれ以外にウィン ドウマネージャやターミナルエミュレータの装飾についての情報を追加しまし た。] ______________________________________________________________________ 目次 1. はじめに 2. エスケープシーケンス 3. タイトルの表示 4. プロンプトの表示 5. その他 5.1 CREDITS: 5.2 補追1: 5.3 補追2: 6. 関連情報 ______________________________________________________________________ 1. はじめに 「この文書っておもしろいの?」と思う人が多いかもしれません。xtermのタ イトルバーに適当な文字列を入れたいなら xterm -T "Rent this place for your advertisement" \ -n "The name of the icon could be yours, too" & とすれば良いだけです。 OK、そのとおりです。でも起動時以外に文字列を変 えたいこともあるかもしれないでしょう... 2. エスケープシーケンス xtermが起動している時にタイトルを変更するには、特殊キャラクターを xtermに送ればよいのです。そのような特殊キャラクターは「エスケープシー ケンス」と名付けられています。これらは画面上に表示されませんがなんらか のアクションを生じさせます。 例えば、 と押せば画面はリセットされます(画面 の消去)。は実際のシーケンス を画面上に表示さ せるために必要です。ここでキーストロークは<>で区切っていることに注意し て下さい。<> は入力する必要はありません。 3. タイトルの表示 xtermのタイトルバーとアイコンを変更するにはつぎのエスケープシーケンス を使います <]> <2> <;> 新しいタイトルをセット <]> <1> <;> 新しいアイコン名をセット(注:アイコン化された時の名前) xtermにこれらのシーケンスを送るために、プログラム"echo" を使えば、もう コマンドラインで入力する必要はなくなります。 echo -e "\033]2; You can rent this place for a commercial. \007" ここでお気づきになったと思いますが、`\033'はエスケープシーケンスの8進 数表示で、'-e'でこの表現を指定できるようにしています。タイトルに表示し たい文字列の最後はで終わらせる必要があります(は「ラブ りーな」 beep 音を発生させるキーです)。 4. プロンプトの表示 この特徴を生かした便利な使い方をひとつ。通常のコマンドプロンプトに表示 される情報を、xtermのタイトルに移動させる方法があります。以下のように 変数を定義すると export PS1='\u@\h:\w> ' この結果、次のように表示されます。 winni@FeilSurf:~/mail> もしディレクトリを"/afs/rrz.uni-koeln.de/pub/packages/linux /kernel/v2.0"に変更したらどうなるでしょうか?プロンプトは長くなりコマ ンドの入力をする場所が狭くなってしまいます。 winni@FeilSurf:/afs/rrz.uni-koeln.de/pub/packages/linux/kernel/v2.0> これは繁雑です。しかしタイトルバーにこの情報を置いてしまえば全て解決し ます。 export PS1='\033]2; \u@\h:\w \007bash> ' 上記コマンドで必要なエスケープシーケンスをエコーし、プロンプト bash> _ のみ表示させます。残念なことにPS1の最大の長さは60文字程度という制限が あるので全ての場合でこれがうまくいくわけではありません。他のアイディア は "cd"といったシェル内蔵のものをechoエスケープシーケンスに再定義する こですが、これだとシェルスクリプトを実行した時タイトルバーのその他の影 響が生じてしまいやっかいです(どの"cd"でもタイトルを変更してしまいま す)。もっとも確かなアプローチは環境変数"PROMPT_COMMAND"を使うことのよ うです。この変数の中身はプログラムが終了した後とbashプロンプトが再び表 示される前に実行されるというものです。以下のようにすればネットワーク環 境でxtermをたくさん開く時など便利です。 export PROMPT_COMMAND='echo -ne "\033]2;$LOGNAME@$HOST Directory: \ $PWD\007\033]1;$LOGNAME@$HOST\007" 特にウィンドウマネージャーのウィンドウリストを見る時など便利でしょう。 さらにこれらを以下のようなスクリプトに書いておけば完璧です。xtermを 使っている時にこの環境変数をセットするだけです。 ______________________________________________________________________ if [ "$TERM" = "xterm" -o "$TERM" = "xterm-color" -o \ "$TERM" = "rxvt" -o "$TERM" = "vs100" ] then PS1='bash> ' PS2='bash>> ' PS3='bash>>> ' export PROMPT_COMMAND='echo -ne "\033]2;$LOGNAME@$HOST \ Directory: $PWD\007\033]1;$LOGNAME@$HOST\007"' fi ______________________________________________________________________ プロンプト"bash>"は、多くのプログラム(gnuplot,ncftp, gap, kash, ...)が プログラム名をはじめに置いているので、同じように統一しました。しかしこ れでも"ytalk"のようなサブシェルを起動するプログラムでは乱れてしまうと いう障害があります。もしこれに出くわしたら unset PROMPT_COMMAND として下さい。 Happy Linuxing -Winfried Trumper winni@xpilot.org 5. その他 5.1. CREDITS: Ville Voutilainen Noticed the ;s are missing from the escape-sequences in the "first half" of the document(ドキュメント前半部でエスケープシーケンスからセミ コロンが落ちていたので注意して下さい)。 5.2. 補追1: どのようなプログラムを作るときでもエスケープシーケンスを直接使わないよ うにして下さい。プログラム"tput"を使って、環境変数$TERM と実行させたい アクションに対応したシンボリックな記法(訳注:該当するアクションに関す る変数))から適切なシーケンスを選ぶようにして下さい。詳細はtput(1) を参 照して下さい(コマンドプロンプトで"man 1 tput"として参照できます)。(訳 注tput:ターミナルの初期化やterminfoデータベースの問い(query)) 5.3. 補追2: 「エスケープシーケンス」について知りたい時は"rxvt"のソースを参照してみ て下さい。エスケープシーケンスについて"xterm.seq"というファイル が"doc/"ディレクトリにあります。 以上ここまでが原文。 6. 関連情報 o "Linux Japan"Vol.3 p.198 xtermタイトルバーについての記事。 o ラスターマン氏のホームページ Rastemann HOMEPAGE : highlightment, xdm, rxvt-xpmなどウィンドウマ ネージャやターミナルエミュレータの見栄えをよくするプログラム、設定 などについての情報があります。以下、 o ターミナルエミュレータrxvtの背景にイメージファイルを貼り付ける。 rxvt-xpm: ソース:rxvt-2.19.3.XPM.tar.gz src/Makefileに"-DKANJI"オプションを書き込んでコンパイルすれば 日本語の表示もできるようになります(kxvtあるいはpxvtとリネーム します)。kinput2 protocolを実装していないので、kinput2による 入力はできません。また日本語表示も不完全なようです。 実行例:rxvt -pixmap /home/user/rosamexl.xpm & o XDMの見栄えをよくする。 ソース:xdm_setup_files.tar.gz 実行例:上記ページを参照 関連:"Linux" Japan Vol.3 p.120 XBanner + xdm o ハイライトメント: ヴィンドウマネージャの見栄えを良くします(フレーム枠なども)。 FVWM-XPM、ppmtile(背景に貼り付けるイメージの処理)。 o その他: ppm2ansi.tar.gz 、xflame.tar.gz、xripple.tar.gzなど。 [ 訳者 : 伊佐治 哲 isaji@mxu.meshnet.or.jp 校正 : 中野さん NAKANO Takeo nakano@apm.seikei.ac.jp ]