KDE4、バックグラウンドからの通知メッセージ

タグ: KDE4.10   Linux  

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 自分のユーザー名で実行しましょう。