カテゴリー別アーカイブ: X11

ASTEC-X の日本語入力

ASTEC-X 8.0 で Windows の IME 使って日本語入力するための設定。IME は Google 日本語入力を使用。ASTEC-X のコントロールパネルの「日本語入力」で XIM プロトコルは有効にしておく。

Emacs24 なら環境変数 LANG と XMODIFIERS を設定する。XMODIFIERS に何を設定するのだったかをよく忘れる。正解は @im=ASTEC_IMS 。LANG は ja_JP.eucJP とかでも可。

export LANG=ja_JP.UTF-8
export XMODIFIERS=@im=ASTEC_IMS
emacs

gedit なら、上記に加えて GTK_IM_MODULE の設定が必要。

export LANG=ja_JP.UTF-8
export XMODIFIERS=@im=ASTEC_IMS
export GTK_IM_MODULE=xim
gedit

PuTTY と X

タイトルには PuTTY って書いたけど、実は PuTTY はそれほど関係ない。SSH ネタ。NetBSD 限定かも。

Windows 上で動く X サーバでリモートの NetBSD の X クライアント(たとえば xterm)を動かすとする。

やり方は複数あるけど、今やっている方法は、 X サーバの方で接続はローカルからのみ受け付けるように設定。

そして PuTTY の方で X11 フォワ-デングを有効にする設定をしておく。リモート X11 認証プロトコルは MIT-Magic-Cookie-1 だ。

putty.exe からリモートの xterm を起動しようとすると、不要な putty.exe のウィンドウが Window 上に現れるので、plink.exe を使う。下のような VB スクリプトを作っておくと、アイコンをダブルクリックするだけで リモートの xterm が起動する。余計なウィンドウは現れない。もちろん、事前に X サーバは実行しておく。ここで “apricot” というのは PuTTY に登録したセッションの名前だ。

Set sh = CreateObject("WScript.Shell")
sh.Run "plink apricot xterm",0,False

ここからが本題。

起動した xterm から、さらに別のマシンの xterm を実行しようとするとエラーになる。

apricot$ ssh -f blackberry xterm
Warning: No xauth data; using fake authentication data for X11 forwarding.
PuTTY X11 proxy: MIT-MAGIC-COOKIE-1 data did not match

原因は見ての通り、xauth のデータがうまく設定されていないこと。

apricot$ ssh -v -X blackberry xterm
(略)
debug1: No xauth program.
Warning: No xauth data; using fake authentication data for X11 forwarding.
(略)

? いやいやいや、sshd_config でちゃんと xauth のパス設定してるし。ほら、

(略)
# If you use xorg from pkgsrc then uncomment the following line.
XAuthLocation /usr/pkg/bin/xauth
(略)

とこれまで思ってたのだけれど、実は ssh クライアント(ここでは apricot)の方の ssh_config でも xauth の設定をしないといけないということだった。なんだってー。

つまり、

  1. apricot で実行する ssh がローカルの xauth を使って X11 の認証情報(MIT Magic Cookie)を読み取る
  2. apricot から blackberry へ X11 認証情報を送信する
  3. blackberry の sshd が X11 認証情報を xauth を使ってローカルファイルに格納する
  4. blackberry の xterm がローカルファイルの X11 認証情報を読み取る

という流れ。

sshd_config の設定は 3 のためのもので、 1 が正しく実行されるために ssh_config の設定も必要ということ。

xauth のパスが SSH のデフォルトと一致していたらこんな問題に当たらないので、関係するのは NetBSD で X を pkgsrc で入れてる人くらいかな?

Astec-X と Emacs

Emacs-24.2 を Astec-X 7.0 で表示させようとすると Bad Request で異常終了する。

Astec-X のコントロールパネルで、拡張機能 RENDER のチェックを外したら異常終了しなくなった。

ld: cannot find -lXaw

昔作った自作の X アプリケーションを再コンパイルしようとしたら imake がなくなっていた。X11R7 では GNU configure ベースになったことを思い出して、pkgsrc/devel/imake をインストールして xmkmf -a; make を実行したら ld: cannot find -lXaw だと。/usr/pkg/lib の中を見たら、libXaw6.a と libXaw7.a があって libXaw.a がない(たぶんどちらかへのシンボリックリンクが期待されてるはず)。 ちくしょう。

とりあえず修正してコンパイルできるようにするのは簡単だが、現状がこんな有様だと imake を使っている意味がない。pkgsrc で imake を使っているようなのは、pkgsrc システムの中でなんとかするのだろうけど、(pkgsrc にしていない)自前のアプリケーションはそれじゃあついていけない。

ということは、GNU configure 化を考えないといけないのか。めんどくさいなあ。

Gnome の背景色

最近 Gnome (2.10.2) を使い始めたのですが、kterm とか多くの X アプリケーションの背景がグレーになってしまいました。appres(1) でみると、リソースに *background が「勝手に」追加されています。
私のところでは .xsession で xrdb -merge .Xresources を実行して、そのあとで gnome-session を exec しているのですが、gnome のほうでリソースが上書きされてしまうので、.Xresources に *background: white を記述しても有効になりません。
調べると、/usr/X11R6/share/gnome/control-center-2.0/xrdb/General.ad に設定されている内容があるようです。個人の設定としては ~/.gnome2/xrdb/General.ad を作成してそこに *background: white とかを記述すれば「Gnome のデフォルトの設定」を上書きすることができるようです。
本当は「上書き」じゃなくて「削除」したいんですけど、リソースファイルの記述だけで何とかするのは無理そうでした。gnome のセッション開始時に xrdb を動かすしかないのかな?