デスクトップに備忘録を
たまにはこっちも更新しないとな!
ということで、最近は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モジュールで何をやっているかというと、スクリーンセーバーの状態を見て、スクリーンセーバー起動中はポップアップの動作を止めているだけです。
はっきり言って、いらないモジュールですが、後学の為に入れておきました。