GTK+ でポップアップウィンドウを作ってみる

とある用途に任意のテキストを表示するポップアップウィンドウが欲しくなった。日本語はもちろん、Latin-1 あたりも表示したい。画像も貼れるとベター。ボタンは特に要らなくて一定時間後に勝手に閉じてくれればいい。さて、どっかに出来合いのツールがありそうなんだけど…

xmessage
X 標準添付。画像が出ないのは我慢するとしても日本語が化けるのはちょっと…。
gxmessage
GTK2 ベースの xmessage クローン。なので日本語でもなんでもオッケー。ただテキスト量に応じてウィンドウの大きさが自動的に変わってくれないのが辛い。
http://soliton.science.uva.nl/~wijnhout/kmessage/
こっちは KDE 版の xmessage。ちょっと試してみたけど日本語が化ける。なんか設定がいるのかなあ。KDE はよく判らん。
xv
こいつはテキストも表示できるんだっけ。でもテキストと画像を同時には表示できなさそうな。今更 xv って気もするし、なによりポップアップウィンドウとして使うのはさすがに無理があるか。

ほかにもありそうな気がするが探すのにも疲れたので自分で作ることにした。このあいだ DigitalDJ のソースを追っ掛けたときに GTK をちょっとかじったので練習がてらに GTK+2 で。ホントは Ruby/Gtk とか PyGTK あたりを使って楽しようと思ってたんだけど、やってみると予想以上に遅かったのでおとなしく C で書いた。

んで、この間も思ったけど GTK って Widget が沢山あって、他にも GDK とか Pango とかいろいろ複雑なのね。最初の頃は一度見つけた API Reference に再度辿り着くのに一苦労してました。ってか C 自体がもう全然判んないな…。

四苦八苦しながらなんとかモノは出来あがった。使ってみて感じたんだけど、視点のあるポイントにこいつがポップアップしてくると作業の邪魔なので、こんなやつこそ半透明にしたいよなあ。今の GTK+ だと無理…なのかな? Qt だとできたりするんだっけ? そもそも X.org でないと駄目? う〜ん、今迄半透明には興味がなかったので全然ワカンないな。今後の課題か。

それと autoconf/automake を初めて使ってみた。最初の設定が(判ってないので)ちょっと大変だったけど、一旦設定してしまえば確かにこりゃ楽だ。もっとも本当にポータブルにできあがってるのか不安ではありますが。


当初予定してた用途とは違うけど、新着メールのサブジェクトを screen に表示させる - (((memo))) とやってたのも

:0i
| formail -c -z -x "Subject" | nkf -m -e | gpopwin -timeout 4 -center -font "bold 12" -bg "lemon chiffon" -image /usr/share/emacs/22.0.50/lisp/toolbar/mail.xpm -file -

こんな感じに変えて以下のようなウィンドウ表示にしてみた。

spam Uzeeeee

[追記:2006-02-18] せっかく画像が貼れるんだから Emacs からメールのアイコン借りて貼ってみた。

screen 上に msgwait 付きで echo を入れるとターミナルがブロックされてわりとウザかったのだが、それがなくなって快適になった。

下らないブツですが、こちらに転がしときます→ http://www.geocities.jp/emacsjjjj/gpopwin/