#!/usr/bin/perl # G19 screen demo use strict; use warnings; # Load in the Net::DBus core module. use Net::DBus; use Data::Dumper; use Time::HiRes qw[sleep]; # Get the session object my $bus=Net::DBus->session(); # Connect to the service my $service=$bus->get_service("org.gnome15.Gnome15"); #Get the service object my $g19=$service->get_object("/org/gnome15/Service", "org.gnome15.Service"); # Just dump some server information my @xresult; @xresult=$g19->GetServerInformation(); print "ServerInformation: " . join('|', @xresult) . "\n"; # Try to connect to the first available screen (and hope it's a G19) @xresult=$g19->GetScreens(); my $g19screenname = $xresult[0]->[0]; print "Using screen $g19screenname\n"; my $g19screen = $service->get_object($g19screenname, "org.gnome15.Screen"); # Now, create a page and get its handle my $pagename = $g19screen->CreatePage('Perltest', 'Perl test!', 50); my $page = $service->get_object($pagename, "org.gnome15.Page"); sleep(1); my $linesize = 30; # Create a drawing surface $page->NewSurface(); for(my $i = 0; $i < 500; $i++) { # limit number of loops for(my $l = 0; $l < (240 / ($linesize + 2)); $l++) { my $offs = $l * ($linesize + 2); # Paint alternate color "table" lines if(($l+$i) %2 == 0) { $page->Foreground(40,40,40,255); } else { $page->Foreground(0,0,0,255); } $page->Rectangle(0, $offs, 320, $linesize + 2, 1); } # paint the "hypnotic eye for(my $l = 0; $l < 100; $l+=20) { my $radius = 120 - $l; # paint from large to small my $grey = 255 - int((($i * 5) + $l) % 255); $page->Foreground($grey,0,0,255); $page->Circle(160, 120, $radius, 0); } # Update screen $page->DrawSurface(); $page->Redraw(); sleep(0.1); } # Cleanup (delete the page) $page->Delete(); exit 0;