DSO版をとりあえずコミットしておいた。
uimのpluginを使用することも考えたのだけど、 このやりかたは柔軟すぎるので、 もう少しrigidな実装を自前で用意した。
いまのところagentとして、stderrと、libnotifyと、KDEが対象(KDEはちょっと自信なし)。 stderrだけは特別扱いで、DSOではなく、libuim組み込みになっている。
uim-pref-*を実行すると"Notify"が選べるようになるので、 そこでagentを切り替えてくださいな。
notify-pluginはかなり簡素な作りなので、 どんどん修正して頂きたいところ。 わたしゃKDEのプログラミングなんて知らないので、だれか詳しい人、おながいします。
以下、uim開発者向けの情報。
使いかた
利用者側APIはいまのところ2つの関数しか存在しない(infoとfatal)。
libuim側
printf(3)と同じように使える。
uim_notify_info("%s", error); /* 処理が継続可能なときに出す警告 */ uim_notify_fatal("%s", error); /* 回復不可能なときに出す警告 */
scheme側
こちらはCと違って1引数。
(uim-notify-info "error") ;; 処理が継続可能なときに出す警告 (uim-notify-fatal "error") ;; 回復不可能なときに出す警告
ToDo
- knotifyとか全然テストできてない。KApplicationをライブラリ側から呼んでいいのか、とか、きちんとKPassivePopup使えとか。
- agentの挙動をカスタマイズできるようにすること。タイムアウトとか警告音とかをユーザサイドで設定できないとかっこわるい。
- non-ascii charsetの扱い。libnotifyはutf8決め打ち、KDEはlocaleから指定、だったはず……