電池の残りを通知する
use strict; use warnings; use AnyEvent; use AnyEvent::WebService::ImKayac; use Config::Pit; my $charging = `ioreg -l | grep "IsCharging"`; my $capacity = `ioreg -l | grep "Capacity"`; my ($max_capacity) = $capacity =~ /"MaxCapacity" = (\d+)/; my ($current_capacity) = $capacity =~ /"CurrentCapacity" = (\d+)/; my $is_charging = $charging =~ /Yes/; exit 0 if $is_charging; my $rate = ($current_capacity / $max_capacity) * 100; if ( $rate < 20 ) { my $cv = AE::cv; my $imkayac = AnyEvent::WebService::ImKayac->new(%{ pit_get("im.kayac.com") }); $imkayac->send( message => sprintf("remain battery capacity rate: %.2f%%", $rate), cb => sub { $cv->send; }); $cv->recv; }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>hogehoge.hogehoge.hogehoge</string> <key>ProgramArguments</key> <array> <string>/bin/zsh</string> <string>-c</string> <string>exec perl /path/to/battery_imkayac.pl</string> </array> <key>StartInterval</key> <integer>1800</integer> </dict> </plist>
適当にこんな感じで、launchctl loadしておくと、電源につないでない時にmacbookairの電池が残り20%を切ると、imkayacに通知してくれるので、酔っ払った後に放置しても0%になる前に気づくかもしれないです。