01 #!/usr/local/bin/perl -w 02 use strict; 03 use Net::DBus; 04 use Net::DBus::Reactor; 05 use App::Daemon; 06 use FindBin qw($Bin); 07 use Log::Log4perl qw(:easy); 08 09 use App::Daemon qw( daemonize ); 10 daemonize(); 11 12 INFO "Starting up"; 13 14 my $BACKUP_STICK = 15 "file:///media/A840-E2B3"; 16 my $BACKUP_PROCESS = "$Bin/gtk2-backup"; 17 18 my $notifications = Net::DBus->session 19 ->get_service( 20 "org.gtk.Private.GduVolumeMonitor" ) 21 ->get_object( 22 "/org/gtk/Private/RemoteVolumeMonitor", 23 "org.gtk.Private.RemoteVolumeMonitor", 24 ); 25 26 INFO "Subscribing to signal"; 27 28 $notifications->connect_to_signal( 29 'MountAdded', \&mount_added ); 30 31 ########################################### 32 sub mount_added { 33 ########################################### 34 my( $service, $addr, $data ) = @_; 35 36 INFO "Found mount point $data->[4] "; 37 38 if( $data->[4] eq $BACKUP_STICK ) { 39 my $cmd = "DISPLAY=:0.0 " . 40 "$BACKUP_PROCESS $data->[4] &"; 41 INFO "Launching $cmd"; 42 system( $cmd ); 43 } 44 } 45 46 my $reactor = Net::DBus::Reactor->main(); 47 $reactor->run();