Antoine: Responses in-line.
On Tue, Nov 3, 2015 at 9:57 AM, Antoine Martin <[email protected]> wrote: > On 02/11/15 20:02, Dan DaCosta wrote: > > Xpra Experts: > > > > I have hacked a little code into Xpra that takes screenshots of all > windows > > managed by Xpra and stores them locally as files. Specifically, I > > accomplished this by adding a bit of code to the x11/server.py file. It > is > > nothing pretty; > Can you post this code? > We now have code that achieves something similar in trunk: > http://xpra.org/trac/ticket/988 I added the following two functions to XpraServer and then started the thread on class initialization. def schedule_pictures_thread(self): while True: self.idle_add(self.get_pictures) time.sleep(1) def get_pictures(self): for wid in sorted(self._id_to_window.keys()): if wid <= 1: continue window = self._id_to_window[wid] try: w, h = window.get_dimensions() image = window.get_image( 0, 0, w, h,logger=log.info) if (image == None): continue rgb = { "XRGB" : "RGB", "BGRX" : "RGB", "RGBA" : "RGBA", "BGRA" : "RGBA", }.get(image.get_pixel_format(), image.get_pixel_format()) img = Image.frombuffer(rgb, (w, h), image.get_pixels(), "raw",image.get_pixel_format(), image.get_rowstride()) img.save("/tmp/%d-%d.png" % (wid,self._image_count), "PNG") self._image_count = self._image_count + 1 except: traceback.print_exc() > I was just interested in doing a little experimentation. I > > have two issues that seemingly should be easy to fix but I have yet to > > figure out how to hack around them: > > 1) The server seems to be ignorant of any window pixmaps until the first > > client attaches. Specifically, from my naive perspective, it seems like > > Xpra cannot find the pixmap for any windows until the first attachment. > Windows are not mapped onto the virtual screen until a client maps them > somewhere on their desktop. > And unmapped windows do not have pixmaps.. > 2) If, after an initial attach there are no attached clients, I can get > > access to the window pixmaps but they are not updated unless someone is > > attached, i.e, they remain in the same state as the last time there was > an > > attachment. Conceptually, it makes sense to avoid updating the pixmaps if > > no one is attached but, for the life of me, I cannot find the switch that > > turns pixmap updating on/off according to whether a client is attached or > > not. > If you share your code it will be easier to talk about it. > What I would like to do is keep the window mapped until its destruction. This way, I can take accurate screenshots of running programs regardless of if I am attached to them. I believe I have found that calling the setup() window method when it is initially created by the wm in _manage_client creates the pixmap. Now, I would like to change a bit of code that will a) map a window as soon as it is created by the wm and b) only unmap windows on destruction. I am looking for some hints on where I should be making these changes. Thanks! Dan DaCosta > Cheers > Antoine > > > > Thanks in Advance! > > Dan DaCosta > > _______________________________________________ > > shifter-users mailing list > > [email protected] > > http://lists.devloop.org.uk/mailman/listinfo/shifter-users > > > _______________________________________________ > shifter-users mailing list > [email protected] > http://lists.devloop.org.uk/mailman/listinfo/shifter-users > _______________________________________________ shifter-users mailing list [email protected] http://lists.devloop.org.uk/mailman/listinfo/shifter-users
