2006年01月18日
taskselとdebconf
taskselのタスクチェックをしていたところ、debconfの各タスク翻訳が使われなくなっていることに気付いた。#278186のパッチで消されちゃったようだ。
過去のものではChoices: ${CHOICES}で作っており、SUBSTによってCHOICESに翻訳「済み」のテキストが挿入されていた。debconfデータベースにも翻訳済みのものが入るために、preseedでも言語を知った上でその言語の翻訳済みのテキストを入れる必要があった。これは確かに良くない。いずれにせよ、この状態だとLANGを変えたとたんにdebconfデータベースと整合性が合わなくなってしまうので、はなはだ問題ではある。
が、しかし、英文文字列からだいたい推測できるラテン系ならともかく、これではかなり嬉しくない言語圏は多そうだ。多言語化したときのSUBST処理ができないというのはdebconf-i18nのかなり大きな問題で、またしてもこれに頭を悩ますことになりそうだ。
ん、待てよ。_Choices "${ORIGCHOICES}"として、poのほうではmsgid "${ORIGCHOICES}"に対してmsgstr "${CHOICES}"とすればいいんじゃないのか? なんとなくこれでよさそうな気がする。
skkinput
徹底本への質問メールを期に。
OpenOffice.orgやmlterm、あるいは一般的なGTK+2アプリケーションをGNOME上で使っており、これにskkinputで入力している場合、OvertheSpotやOntheSpotで変換時に表示されるポップアップウィンドウが後ろに隠れてしまうという問題がある。ちなみにkinput2ではちゃんと最上段に表示される。
IMmoduleなuimやscimを使うというのもまぁ解決の1つなのだが、kinput2でできてskkinputにできないというのはちょっと妙ではある。ということで、tagohさんに最上段に表示するにあたってのアドバイスを頂き、昨日ハックしてみた。
deb http://kmuto.jp/debian/mtu debian_dic main deb-src http://kmuto.jp/debian/mtu debian_dic main
解法はわりあい簡潔で、要は_NET_WM_STATE_ABOVEにしてやれば最上段にウィンドウがやってくる。
Atom net_wm_state = XInternAtom(XtDisplay(gw), "_NET_WM_STATE", False); Atom state_above = XInternAtom(XtDisplay(gw), "_NET_WM_STATE_ABOVE", False); Atom prop[1]; prop[0] = state_above; XChangeProperty(dpy, win, net_wm_state, XA_ATOM, 32, PropModeReplace, (unsigned char*)prop, 1);
ただ、skkinputのウィンドウ作成箇所はけっこう入り組んでいて、Spotごとにコード分かれてる(デフォルトはOnなのだがmltermではOver)し、デバッガがなぜか落ちちゃうので思わぬ苦戦。fprintfでひたすら当たりをつけていく。Raise&updateしているところでコードをうまく入れてやることで、なんとか希望の動作になった。XChangePropertyの2つめの引数もちょっとトラップが存在。詳しくはdiff.gzにて。
![[hatena]](http://d.hatena.ne.jp/images/b_entry_de.gif)

![[RSS]](/d/rss10.png)
Debian GNU/Linux徹底入門 Sarge対応
Debian辞典