diff -ru a/gtk-recordmydesktop/ChangeLog b/gtk-recordmydesktop/ChangeLog --- a/gtk-recordmydesktop/ChangeLog 2008-11-23 16:05:38.000000000 +0100 +++ b/gtk-recordmydesktop/ChangeLog 2009-06-05 18:26:52.000000000 +0200 @@ -1,3 +1,7 @@ +/*VERSION 0.3.9 unreleased*/ +* Fix selection of window (including frame) on compiz +* ... + /*VERSION 0.3.8*/ * nl.po added Dutch translation by Jos Poortvliet * Applied patch by freedo, to Replace GtkFileSelection with diff -ru a/gtk-recordmydesktop/src/rmdSimple.py b/gtk-recordmydesktop/src/rmdSimple.py --- a/gtk-recordmydesktop/src/rmdSimple.py 2008-07-12 19:45:50.000000000 +0200 +++ b/gtk-recordmydesktop/src/rmdSimple.py 2009-06-05 18:26:52.000000000 +0200 @@ -39,7 +39,9 @@ import gtk.gdk import gobject import gc +import sys import re +from subprocess import Popen,PIPE import rmdPrefsWidget as pW import rmdSelectThumb as sT from rmdStrings import * @@ -217,14 +219,39 @@ self.__fileSelQuit__() def __select_window__(self,button): - xwininfo_com=['xwininfo','-frame'] - if self.values[21]==1: - xwininfo_com=['xwininfo'] - (stdin,stdout,stderr)=os.popen3(xwininfo_com,'t') - wid=stdout.readlines() - stdin.close() - stdout.close() - stderr.close() + # check user has not disabled capture of window decoration + if self.values[21]!=1: + # else work out the size including decoration (also taking into account compiz) + p = Popen(['xwininfo','-frame'],stdout=PIPE) + pattern = re.compile('^xwininfo: Window id: (0x[0-9a-fA-F]+)') + + while True: + o = p.stdout.readline() + if o == '' and p.poll() != None: break + match = pattern.search(o) + if match: + fid = match.group(1) + break + + p = Popen(['xprop','-id',fid,'_NET_FRAME_WINDOW'],stdout=PIPE) + pattern = re.compile('^_NET_FRAME_WINDOW\(WINDOW\): window id # (0x[0-9a-fA-F]+)') + + while True: + o = p.stdout.readline() + if o == '' and p.poll() != None: break + match = pattern.search(o) + if match: + wid = match.group(1) + break + else: + print pattern + print o + + if wid: xwininfo_com = ['xwininfo','-id',wid] + else: xwininfo_com = ['xwininfo'] + p = Popen(xwininfo_com,stdout=PIPE) + wid=p.stdout.readlines() + x=y=width=height=None for i in wid: if i.lstrip().startswith('Absolute upper-left X:'):