KDE4、バックグラウンドからの通知メッセージ
LinuxのディスクトップマネージャーにKDE4を使用して場合、通知メッセージは標準的なエリアに表示されます。別々のツールでアチラコチラに表示されるより、統一感があります。
自分でこの共通のデフォルト表示エリアにメッセージを出したい場合、kdialogで簡単に表示できます。
kdialog --title "タイトル" --passivepopup "表示内容" 1
最後の1
は、タイムアウト秒数ですが、うまく働かないようです。指定した秒数ではなく、どうも別の設定が優先されているようで、値を変えても変化しません。
これだけなんですが、起動時にバックグラウンドで立ち上げておくスクリプトやcron実行からですと、うまく動作しないことがあります。(動作することもあったので、かなり迷いました。)
cronであれば、実行結果がメールで残ると思います。その中を見るとXサーバーが見つからないと表示されています。
原因は単純で、自分でデスクトップ環境の端末から起動をかけた場合と異なり、必要な環境変数が設定されていないためです。ですから、これを設定すれば動作します。
export DISPLAY=:0.0
ネット上の情報ではexportしなくても動作できているものも確認できます。また、:0
だけで、マイナー番号を省略しているものもあります。当方の環境では、マイナー番号を付けなくても動作しますが、exportしないと動きませんでした。
日本語で情報を表示すると文字化けします。ですから、LANG
変数を指定する必要もあります。
kdialogのオプションも覚えるには長いですから、簡単なシェルを作成し、実行パスが通っているディレクトリーに設置しておくことをおすすめします。
#!/bin/bash export DISPLAY=:0.0 export LANG=ja_JP.UTF-8 /usr/bin/kdialog --title "${1}" --passivepopup "${2}" 8
実行はタイトルと内容をそのまま指定するだけです。例えばpopupという名前でスクリプトを作成し、実行権限を付けた場合は、以下のように使用します。
popup "タイトル" "表示内容"
シンプルで簡単で便利な方法です。
尚、ルート権限のcronジョブから実行する場合、動作しないかも知れません。その場合はsudo -u 自分のユーザー名
で実行しましょう。