#!/usr/bin/perl use POSIX qw(setsid); chdir '/'; umask 0; open STDIN, '/dev/null' || die "Can't read /dev/null: $!"; open STDOUT, '>/dev/null' || die "Can't write /dev/null: $!"; open STDERR, '>/dev/null' || die "Can't write /dev/null: $!"; defined(my $pid = fork) || die "Can't fork: $!"; exit if $pid; setsid or die "Can't start new session: $!"; $ENV{'PATH'} = $ENV{'PATH'} . ":/usr/local/opt/sbin"; system 'rmmod powermate'; system 'grifcat --led-pulse'; open GRIFFIN, "grifcat --minimal|" || die "Failed to open grifcat: $!"; while() { chomp; ($b, $d) = split(/ /); if($b && !$lb) { system "mpc next\n"; } if($d && !$b) { $d*=3; $d=~s/^(\d)/+$1/; system "mpc volume $d\n"; } ($lb, $lt) = ($b,$t); }