Tips on X11
Copyright (C) 1998-2000,2012 Taiji Yamada <taiji@aihara.co.jp>
国際化された xclip version 1.0 with viewer
Conrad Parker 作の xsel や Kim Saunders 作の xclip は、どちらも X11 のクリップボードであるセレクションの入出力をコマンドラインで扱うものです。しかし、どちらも国際化が不十分なので、マルチバイトテキストが扱えません。そこで、これらを置き換えるものとして、いちから C++ で作り直したものが、この xclip version 1.0 です。
簡単な使い方を図解します。
まず、Emacs 等で領域を選択します。
そして、ロカール LC_ALL=ja_JP.UTF-8
であるような端末(例えば xterm, mlterm)や、ロカール LC_ALL=ja_JP.eucJP
であるような端末(例えば kterm) で「xclip -o
」を実行すると、 Emacs の先のセレクションが表示されます。
一方、ロカール LC_ALL=ja_JP.eucJP であるような端末、例えば kterm で
$ iconv -f UTF-8 -t EUC-JP README.ja.txt | xclip
を実行すると、xclip がその標準入力の内容のセレクションを所有します。ちなみに、この場合 xclip のロカールと標準入力の文字コードの組み合わせが重要なので
$ LANG=ja_JP.UTF-8 xclip < README.ja.txt
でも構いません。
そして、Emacs で中ボタンペーストすると、xclip の先のセレクションが貼付けられます。
自動的に変換される文字エンコーディング形式はロカールに依存しますので、うまく行かない場合は、ロカールを変更したり、文字コード変換したりしてください。その他にも以下の機能があります。
- 「
-f
」オプションで、刻々と追加される標準入力の内容に追従します。
- 「
-t
」オプションで、刻々と追加される標準入力の内容に追従しますが、追加された内容のみセレクションを所有します。
- 「
-a
」オプションで、既にあるセレクションの内容に標準入力の内容を追記して、セレクションを所有します。先の「-f
」「-t
」オプションと組み合わせることが出来ます。
- 「
-s SECONDARY
」でセカンダリセレクション、「-s CLIPBOARD
」でクリップボードセレクションを指定できます。
- 「
-c 0〜7
」でセレクションの代わりにカットバッファを指定できます。こちらはセレクションとは異なり、文字エンコーディング形式の変換などはされませんので注意が必要です。
- 「
-x
」オプションで、プライマリセレクションとセカンダリセレクションを交換します。「-c
」オプションと併用した時にはカットバッファ0と1を交換します。
- 「
-r number
」オプションで、プライマリ、セカンダリ、クリップボードセレクションを回転します。「-c
」オプションと併用した時にはカットバッファ0〜7を回転します。
また、プライマリ、セカンダリ、クリップボードセレクション及びカットバッファ0〜7の入出力を簡単に可視化する xclipview
が付属しています。
以下の内容は、10年以上前に書かれたものあり、大部分は私も既に使用していませんので、お問い合わせを頂いても十分なお返事が出来ないものもあります。何卒ご了承下さい。
Xaw3d-1.5 ベースの XawXpm version 1.5
Xaw-XPM-1.1 は Xaw3d-1.1 をベースに作られていますが、Xaw3d-1.5 をベースにした XawXpm-1.5 を作成しました。しかし、もともとの Xaw-XPM-1.1 の効果音が Linux しか考慮されていないので FreeBSD, SunOS や Solaris などでは動きません。もっと移植性の高いものに仕上げてから正式バージョンとして作者にコンタクトを取りたいと考えており、以下に公開しているものは非公式かつ α バージョンです。Xaw3d-1.5.tar.gz に対するパッチとして提供しています。
また、libXaw.soでコンパイルしてあるアプリケーションは libXawXpm.so を libXaw.so としてリンクさせても、コンパイル時に -lXpm を付けていないのですから、やはり再コンパイルが必要になってしまいます。そこで、XawXpm-1.5 では Xpm のコードをスタティックに組み込んでしまうコンパイルオプションを付けました。これで、全く再コンパイル無しに XawXpm を利用することが出来ます。
但し、別の理由で再コンパイルが必要になるアプリケーションはあります。Xaw-XPM-1.1 のオフィシャルページでも記されていますが、xclock, xarchie や xxgdb のように自分の composite widget を作成しているものは再コンパイルしないと core を吐きます。
Xaw3d-1.5-XPM-a.patch.gz はテクスチャの pixmaps は含まれてません。オリジナルの Xaw-XPM-1.1.tar.gz から取得して下さい。
xv-3.10a の Japanese Extension 5.3.3 をさらに PNG 対応にしよう
xv を PNG(Portable Network Graphics) フォーマット対応にするパッチ(xv-3.10a-png-1.2d.tar.gz)は、すでに Japanese Extension パッチ(xv310a-jp-extension-rev5.3.3.tar.gz)を当ててしまっていると正しく適用できません。そこで、xv- 3.10a-png-1.2d.tar.gz をもとに Japanese Extension パッチがすでに当てられている xv に対する PNG パッチ xv-3.10a-jp-extension-5.3.3-png-1.2d.patch.gz を作成しました。PNG フォーマットにはlibpng-1.0.2.tar.gz が必要です。コンパイルには、jpegsrc.v6b.tar.gz, tiff-v3.4beta037.tar.gz が必要です。
[2000/10/13 更新] インストール済み libjpeg, libtiff, libpng でも簡単にコンパイルできるように修正。
xv-3.10a の Japanese Extension 5.1.13 をさらに PNG 対応にしよう
xv を PNG(Portable Network Graphics) フォーマット対応にするパッチ(xv-3.10a-png-1.2d.tar.gz)は、すでに Japanese Extension パッチ(xv310a-jp-extension-rev5.1.13.tar.gz)を当ててしまっていると正しく適用できません。そこで、xv- 3.10a-png-1.2d.tar.gz をもとに Japanese Extension パッチがすでに当てられている xv に対する PNG パッチ xv-3.10a-jp-extension-5.1.13-png-1.2d.patch.gz を作成しました。PNG フォーマットにはlibpng-1.0.2.tar.gz が必要です。 コンパイルには、jpegsrc.v6b.tar.gz, tiff-v3.4beta037.tar.gz が必要です。
[2000/10/13 更新] インストール済み libjpeg, libtiff, libpng でも簡単にコンパイルできるように修正。
mgdiff 国際化パッチ
diff コマンドの出力を Motif で視覚的にわかりやすく見ることが出来る mgdiff ですが、国際化されていないので、日本語などはバイナリファイルであると判断され、diff の結果を見ることが出来ません。
よって、mgdiff を国際化するためのパッチ mgdiff-i18n.patch.gz を作成しました。
日本語の実行例については、mgdiff のスクリーンショットを御覧下さい。
xclock/xarclock 関係
xclock の国際化及び strftime 拡張
xclock で日本語の日付を表示出来るように国際化しました。
xclock のソースに xclock-taiji-i18n.patch.gz のパッチをあてて下さい。このパッチによって、ディジタルモードでは、以下のように表示されるようになります。 [1999/1/29] 以前のパッチは free を怠けるなどのバグがありました。今後は xclock-format-i18n.patch.gz をお使い下さい。古川@慶應大学大学院さん、ご指摘有難うございました。
また、-fn オプションはフォントリストを指定できます。さらに、-format オプションによって strftime(3C) のフォーマットの指定が出来ます。
% xclock -digital -format "只今の時刻は%H時%M分%S秒、今日の日付は%Y年%m月%d日です。"
[1999/1/29] さらに X11R6.3 の xclock 用のパッチ xclock-r6.3-format-i18n.patch.gz を作成しておきました。
xarclock の国際化及び strftime 拡張
xarclock で日本語の日付を表示できるように国際化しました。上記の xclock への国際化及び strftime 拡張に加えて、kanji モードで漢数字のアナログ時計が表示できます。
xclock のソースに xarclock-taiji-i18n.patch.gz のパッチをあてて下さい。このパッチによって以下のように表示されるようになります。 [1999/1/29] 以前のパッチは free を怠けるなどのバグがありました。今後は xarclock-format-i18n.patch.gz をお使い下さい。
% xarclock -kanji -north -geometry 200x200
xon 関係
xon for DHCP クライアント
ノートパソコン上の UNIX だと、IP アドレスを DHCP で取得する方が何かと便利なのですが、別のマシンの X クライアントを立ち上げようと xon を使っても、そのままでは動きませんし、IP アドレスをいちいち調べるのも面倒です。そこで、X サーバ側であるDHCP クライアントの IP アドレスを調べてリモートの X クライアントを起動してくれるように xon を修正しました(xon, xon-1.8-for_dhcp.tar.gz)。 ifconfig で調べた IP アドレスを X サーバ側のホスト名の代わりに指定しているだけです。 ちなみに、もとの xon は X11R6 付属の v.1.8 です。
xon for SSH
xon で想定しているリモートシェルは /usr/bin/remsh, /usr/bin/rcmd, rsh ですが、これらに /usr/local/bin/ssh を加え、それが存在すれば優先的に ssh を使うように xon を修正しました。
しばらくこの xon for SSH を使っていましたが、さすがに遅いので、同じドメインでは rsh、別のドメインでは ssh を使うようにさらに修正しました。
X IP Messenger って違う人に届く時ありませんか?
IP Messenger の X クライアントである xipmsg ですが、なんと、しばしば別の人に届く時があったので、おそるおそる使ってました。いつかは直そうと思っていましたが、原因も特定できず困っていました。すると、「メッセージの編集中、宛先上位のメンバーのエントリ変更があるときに別の人に届く」との報告、そして、それを対処するパッチを作成してもらいました。ブラボー! 以下のサイトを御覧下さい。
http://www.aihara.co.jp/~junt/tools/
ちなみに、このパッチと、以下で紹介されているパッチは独立にあてることが可能です。
X IP Messenger のちょっとした改造
UNIX, Windows, Mac, Java などの混在環境でも便利な IP Messenger ですが、UNIX の X クライアントである xipmsg から使っていると、Windows クライアントのホスト名は NetBIOS のホスト名なので、しばしば対応する実際の IP アドレスやホスト名を知りたい時があります。そこで、オプションで付加情報として IP アドレスとホスト名をメインウィンドウに表示するように改造しました(xipmsg-8087-amateras.patch.gz)。 ``-add_info'' オプションやリソース ``*addinfo: True'' で有効になります。
xpbiff-1.27 用の pixmap の色と座標関係のパッチ
xpbiff-1.27 を使っていると、本当は下図の左のような感じにしたいのに、特に 256 カラーのディスプレイだと、色の取得で失敗して、右の図のようにデフォルトのピックスマップになってしまうことがあります。
(こうしたいのに) (ピックスマップが読まれなかった!)
また、本当は下図の左のような感じにしたいのに、アイコンは左上ぴっちりに描かれるので、右の図のようになってしまいます。
(こうしたいのに) (左上に寄ってしまう!)
そこで、以下を実現するパッチ(xpbiff-1.27-youbin+taiji.patch.gz) を作成しました。
- Xpm ライブラリの closeness 属性を用いて、色の取得に失敗するような場合、カラーマップ中のなるべく近い色を使用する。
- '-center' オプションもしくは '*center: True' リソースで、アイコンを中央に描く。
このパッチは、xpbiff-1.27 に youbin プロトコル拡張をしたものに、さらに、 http://jaguar.kuee.kyoto-u.ac.jp/~tanaka/software/software.html#xpbiff のパッチをあてたものに対してあてて下さい。
xfm-1.3.2 用の pixmap の色関係のパッチ
xfm-1.3.2 はしばしば、特に 256 カラーのディスプレイだと、ピックスマップの色の取得に失敗して、デフォルトのビットマップが表示されてしまいます。そこで、Xpm ライブラリの closeness 属性を用いて、使用可能な色を使うようにするパッチ(xfm-1.3.2-color.patch.gz)を作成しました。これで以下のスクリーンショットのように xfm でカラフルなピックスマップをたくさん使うことが出来ます。
xcalendar の休日ファイルの拡張
xcalendar では /usr/X11R6/lib/X11/xcalendar/xcalendar.hol ファイルに休日ファイルを記述できます。しかし、「国民祝祭日」と「所属機関などの休日」とを色分けして表示したいものです。そこで、2つ目の休日ファイル /usr/X11R6/lib/X11/xcalendar/xcalendar.hol2 にも休日を記述できるようにし、別の色で表示するように改造するパッチを作成しました。このパッチによって以下のようになります。
このパッチは xcalendar- 4.0 の X11R6 用の国際化パッチをあてたものに対して適用する必要があります。
このサイトについてのご意見ご要望は taiji@aihara.co.jp までお願いします。
Copyright (C) 1998-2000,2012 Taiji Yamada, All rights reserved.