本を読む

読書やコンピュータなどに関するメモ

PerlでGNOMEに通知ポップアップ(はこれでいい?)

 「1234567890」のエントリーでは、GNOME(/KDE/Xfce)上でD-BUSのGalagoを使ってデスクトップに通知ポップアップを表示してみました。

 Perlでは同じことをやるのにDesktop::Notifyモジュールを使うようです。Ubuntuの8.10以降やDebianの5.0以降では、libdesktop-notify-perlパッケージとしてインストールできるので、試してみました。が、いまいちわからなかったので疑問エントリー。

#!/usr/bin/perl
use strict;
use warnings;
use Desktop::Notify;

my $notify = Desktop::Notify->new;
my $notification = $notify->create(summary=> 'test message',
                                   body=> 'Hello, World!',
                                   timeout => 5000 );
$notification->{id} = 0;
$notification->show;

 最初は「$notification->{id} = 0;」を入れていませんでした。が、入れないと、通知ポップアップは表示されるものの、以下のような警告が端末に出力されます。

Argument "" isn't numeric in subroutine entry at /usr/lib/perl5/Net/DBus/Binding/Iterator.pm line 445.

 これは、Desktop::Notify::Notificationのnew()で以下のように記述されているためのようです(よくわかっていない)。

    $self->{id} = undef;

 このundefが、Net::DBus::Binding::Iteratorのappend()で空文字列になっているように見えます。

        $value = '' unless defined $value;

 Galagoの仕様を「9.1.2. org.freedesktop.Notifications.Notify」で見てみると、replaces_idはUNIT32型で、"A value of value of 0 means that this notification won't replace any existing notifications."と書かれています。そこで、上のように「$notification->{id} = 0;」を入れたところ、警告が出なくなりました。

 これってこれでいいんでしょうか? バグ?

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/553-1b95e5dc

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad