web-dev-qa-db-fra.com

"import: impossible de lire l'image de la fenêtre X: ressource temporairement indisponible"

Sur Lubuntu 18.04, j'essaie de prendre une capture d'écran de la fenêtre active en cours. J'utilise import d'Imagick après https://stackoverflow.com/a/32165476 .

Il échoue dans un onglet de lxterminal

$ import -window "$(xdotool getwindowfocus -f)" /tmp/file.png
import-im6.q16: unable to read X window image `31457284': Resource temporarily unavailable @ error/xwindow.c/XImportImage/4982.
import-im6.q16: missing an image filename `/tmp/file.png' @ error/import.c/ImportImageCommand/1287.

cela réussit dans une fenêtre xterm

$ import -window "$(xdotool getwindowfocus -f)" /tmp/file.png
$

Savez-vous pourquoi le problème se produit? Comment puis-je résoudre le problème? Merci.

Quelqu'un a un script similaire

#!/bin/sh
echo "Enter the name of the window:"
read window
window_id=`xwininfo -name $window | awk '{print $4}' | grep -i 0x`
import -window $window_id $window.jpg

Comme je l'ai déjà dit, cela ne fonctionne pas complètement, mais je pensais le publier de toute façon. Je l’ai fait fonctionner pour de petits programmes tels que Calculator, Dictionary, Atomix ... rien comme Firefox, gedit, etc. Si vous essayez de le faire pour des programmes plus volumineux, vous obtiendrez en réalité une erreur du type suivant:

import: unable to read X window image `0x3200efb': Resource temporarily unavailable.

Je pense que cela provient du fait que ces programmes produisent en réalité plusieurs identifiants de fenêtre:

dill@LAMP:~$ xwininfo -tree -root | grep gedit | awk '{print $1}'
0x3000071
0x3000003
0x3000001
0x300001e
1
Tim

Je suis sur Kubuntu 18.04. j'ai essayé

$ sleep 5s && import -window "$(xdotool getwindowfocus -f)" ~/Desktop/file.png
import-im6.q16: unable to read X window image `83886084': Resource temporarily unavailable @ error/xwindow.c/XImportImage/4982.
import-im6.q16: missing an image filename `/home/dkb/Desktop/file.png' @ error/import.c/ImportImageCommand/1287.

et

$ sleep 5s && import -window "$(xdotool getactivewindow)" ~/Desktop/file.png
$ 

La dernière commande qui utilise xdotool getactivewindow fonctionne dans konsole (version 17.12.3) et dans lxterminal (version 0.3.1).

sleep consiste à me laisser passer du terminal à la fenêtre d'une autre application. La commande intercepte les fenêtres actives de Firefox et geany.

Pour ce qui est de

Savez-vous pourquoi le problème se produit?

Je ne sais pas vraiment mais chercher man xdotool pour windowfocus nous dit que

Utilise XSetInputFocus qui peut être ignoré par certains gestionnaires de fenêtres ou programmes.

Que cela s'applique également à getwindowfocus n'est pas explicitement mentionné.

2
DK Bose