#!/usr/local/bin/perl -w
###########################################
# mount-watcher
# Mike Schilli, 2010 (m@perlmeister.com)
###########################################
use strict;
use Net::DBus;
use Net::DBus::Reactor;
use App::Daemon;
use FindBin qw($Bin);
use Log::Log4perl qw(:easy);

use App::Daemon qw( daemonize );
daemonize();

INFO "Starting up";

my $BACKUP_STICK = 
     "file:///media/A840-E2B3";
my $BACKUP_PROCESS = "$Bin/gtk2-backup";

my $notifications = Net::DBus->session
  ->get_service( 
      "org.gtk.Private.GduVolumeMonitor" )
  ->get_object( 
    "/org/gtk/Private/RemoteVolumeMonitor",
    "org.gtk.Private.RemoteVolumeMonitor",
  );

INFO "Subscribing to signal";

$notifications->connect_to_signal(
    'MountAdded', \&mount_added );

###########################################
sub mount_added  {
###########################################
  my( $service, $addr, $data ) = @_;

  INFO "Found mount point $data->[4] ";

  if( $data->[4] eq $BACKUP_STICK ) {
    my $cmd = "DISPLAY=:0.0 " .
      "$BACKUP_PROCESS $data->[4] &";
    INFO "Launching $cmd";
    system( $cmd );
  }
}

my $reactor = Net::DBus::Reactor->main();
$reactor->run();
