デスクトップに備忘録を

たまにはこっちも更新しないとな!


ということで、最近はXPが入っているPCは専ら電源を入れず、Ubuntuをいじって楽しんでいます。


Macは持っていませんがMacOSでいうところのGrowl、つまりデスクトップにポップアップメッセージを出してみようと思い、こんなperlのコードを書きました。動作はUbuntu 10.04(ウインドウシステムはGnome)とperl 5.10.1で動作を確認しました。

#!/usr/bin/perl
use Net::DBus;

my $bus = Net::DBus->find;
my $svc = $bus->get_service("org.gnome.ScreenSaver");
my $mtd = $svc->get_object("/org/gnome/ScreenSaver","org.gnome.ScreenSaver");

(@ARGV == 1) or die "usage : $0 filename \n";
open (my $fh, "<" ,$ARGV[0]) or die "ファイルが開けません";

@hyouji = <$fh>;
$lst = @hyouji;
chomp @hyouji;
$n = 0;

close($fh);

while(1){
	if(!($mtd->GetActive)){
		$cmd = "notify-send ".qq("$hyouji[$n]");
		$result = `$cmd`;
		$n++;
		$n = $n % $lst;
	}
	sleep(15);

}

事前に

$ sudo apt-get install libnotify-bin

をやっておいてください。
また、cpanでNet::DBusモジュールをインストールしておいてください。


仮に上のperlスクリプトをuza.pl、忘れずにおきたい事を一行おきに書いたテキストをdontforget.txtとした場合…

$ perl uza.pl dontforget.txt &

とすると以下のように、モニターの右上に15秒に一度、ポップアップが出ます。

ポップアップが画面の上に現れたと思うと消え、消えたと思ったら新たなメッセージが出る。
ウザいです。実にウザい。
でも、忘れない。そんなライフハックです(??)。


ちなみに、Net::DBusモジュールで何をやっているかというと、スクリーンセーバーの状態を見て、スクリーンセーバー起動中はポップアップの動作を止めているだけです。
はっきり言って、いらないモジュールですが、後学の為に入れておきました。