use X11::Protocol;
my $x = X11::Protocol->new();
my $desktop;
my ($root,undef,@kids)=$x->QueryTree($x->{'root'});
printf "%10x:\tRoot\n", $root;
foreach (@kids){
my $gdkw = Gtk2::Gdk::Window->foreign_new($_);
printf ("%10x:\tDesktop\n",$gdkw->get_xid),$desktop=$gdkw,last if $gdkw->get_type_hint eq 'desktop';
}
$desktop=Gtk2::Gdk::Window->foreign_new($root) if ! $desktop;
#------------------------------------------
Я могу найти рабочий стол, подтвержденный xwininfo.
Но я потерял код, который может рисовать на рабочем столе, кажется, используется "set_back_pixmap".
Теперь Каир может рисовать в любых окнах очень просто, просто используйте
$cr = Gtk2::Gdk::Cairo::Context->create ($drawable);
Но на рабочем столе это не работает.
Возможно, из-за обновления ядра? Или я сейчас испортил Ubuntu 10.04-3.