Eu tive muita sorte com o xwd. Eu faço o screenshot de todo o desktop e uso o imagemagick para cortar apenas a parte que eu quero.
Eu também tenho usado a capacidade da ferramenta de extrair títulos de janelas específicos.
Usando as informações contidas nessa postagem do blog, criei a seguinte função python que uso para tirar screenshots de uma janela com "mywindow" na barra de título.
def store_mywindow_screenshot():
command = 'xdotool windowraise 'xdotool search --title ".*mywindow.*"''
os.system(command)
command = 'xwd -id 'xdotool search --title ".*mywindow.*"' -out mywindow_screenshot.xwd'
os.system(command)
command = "convert mywindow_screenshot.xwd mywindow_screenshot_%s.png" % datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
os.system(command)
Como eu tenho capturado uma janela que é um aplicativo 3d open, eu imagino que o xwd seria robusto o suficiente para o seu aplicativo