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
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é.