Just started playing around with the idea of setting the back ground
image on the desktop using GTK and I've been trying it using the code
listed below.
Unfortunately I have bit of a problem, blanks the screen and only
displays the image. After that windows are not displayed till
something is done to cause them to re-draw them selves.
Any ideas?
use Gtk2;
use warnings;
use strict;
my $file='/tmp/bg.jpg';
Gtk2->init;
my $screen=Gtk2::Gdk::Screen->get_default;
my $window=$screen->get_root_window;
my $pixbuf=Gtk2::Gdk::Pixbuf->new_from_file($file);
my ($pixmap, $mask)=$pixbuf->render_pixmap_and_mask(1);
my $atom_root=Gtk2::Gdk::Atom->intern("_XROOTMAP_ID", 1);
my $atom_eroot=Gtk2::Gdk::Atom->intern("ESETROOT_PMAP_ID", 1);
my $XA_PIXMAP=Gtk2::Gdk::Atom->intern('PIXMAP', 0);
#if the atoms already exist we need to do something...
if (defined($atom_root) && defined($atom_eroot)) {
my $any=Gtk2::Gdk::Atom->intern("AnyPropertyType", 0);
my ($type, $format, $data)=$window->property_get($atom_root,
$any, 0, 1, 0); }
$atom_eroot=Gtk2::Gdk::Atom->intern("_XROOTMAP_ID", 0);
$atom_eroot=Gtk2::Gdk::Atom->intern("ESETROOT_PMAP_ID", 0);
$window->property_change($atom_root, $XA_PIXMAP, 32, 'replace',
$pixmap, 1); $window->property_change($atom_eroot, $XA_PIXMAP, 32,
'replace', $pixmap, 1);
$window->set_back_pixmap($pixmap);
#$window->show_all;
$window->clear;
Gtk2->main_iteration while Gtk2->events_pending;
Attachment:
signature.asc
Description: PGP signature