Re: Gtk2::Gdk::Window->foreign_new, help needed



I've already received your messsage through the list and it was a great
help. Maybe you've some suggestions for my next step i've explained in
my last mail today.


Am Donnerstag, den 03.07.2008, 07:19 -0400 schrieb zentara:
On Wed, 02 Jul 2008 20:23:32 +0200
Mario Kemper <mario kemper googlemail com> wrote:

Hello folks, 

i am trying to get the native window ids of my running x-session and
handle them in my perl code using Gtk2::Gdk::Window->foreign_new but
this is misleading into an error:
Gdk-CRITICAL **: gdk_window_foreign_new_for_display: assertion
`GDK_IS_DISPLAY (display)'

Here is my code snippet:

I think a am doing something totally wrong here, but i can't figure it
out.
I've already had that code running, but i do not know what changed :-(

Thanks in advance
Mario

Sorry if this is a multiple post, my mailer seemed to send it, but I never
received it from the list?  Maybe the magic pixel fairy deemed it useless? :-)

This rings a little bell, reminding me of when I tried grabbing screenshots
thru wininfo ids.  And since you said it was working, but now it dosn't, may be a clue
that you have the same glitch.  The glitch was you needed to run the capture script from the
same virtual desktop as the window to-be-captured.  Now Gnome2::Wnck
does have the ability to switch you to the virtual desktop, I was using X11::WMCtrl

This was my hacking script when I did it

#!/usr/bin/perl
use warnings;
use strict;
use Image::Magick;
use X11::WMCtrl;
use Data::Dumper;

my $wmctrl = X11::WMCtrl->new;

printf("window manager is %s\n", $wmctrl->get_window_manager->{name});

my @windows = $wmctrl->get_windows;

my $wid;  # x window id
my $host; # virtual desktop

foreach my $app(@windows){
         my $title = $app->{title};
          if( $title =~ /Mozilla/i){
          print "$title\n";
          print Dumper(\$app),"\n\n";
          
          $wid = $app->{id};
          $host = $app->{host};

         }
   }

$wmctrl->switch($host);
#must be on same virtual desktop as the browser

#works
my $blob = `import -window $wid jpg:`;   

#my $blob = `import -`;  #postscript produced
#print "$blob\n";
# now $blob is in memory and you can do what you
# want with it.

my $output = Image::Magick->new(magick=>'jpg');
$output->BlobToImage( $blob );
$output->Resize(geometry=>'160x120');
$output->Write( $0.'.jpg');

exit;
# png works too


__END__

zentara






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]