web-dev-qa-db-ja.com

「インポート:Xウィンドウイメージを読み取れません:リソースが一時的に利用できません」

Lubuntu 18.04では、現在フォーカスされているウィンドウのスクリーンショットを撮ろうとしています。 https://stackoverflow.com/a/32165476 に従ってImagickのimportを使用しています。

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.

xtermウィンドウで成功します

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

問題が発生する理由を知っていますか?どうすれば問題を解決できますか?ありがとう。

誰かが同様のスクリプトを持っている

#!/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

前にも言ったように、これは完全には機能しませんが、とにかく投稿したいと思いました。電卓、辞書、Atomixなどの小さなプログラムで動作するようになりました。Firefox、geditなどのようなものはありません。大規模なプログラムで実行しようとすると、実際には次のようなエラーが発生します。

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

これは、これらのプログラムが実際に複数のウィンドウIDを生成するという事実から生じると思います。

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

Kubuntu 18.04にいます。私は試した

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

そして

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

xdotool getactivewindowを使用する後者のコマンドは、konsole(バージョン17.12.3)およびlxterminal(バージョン0.3.1)で機能します。

sleepは、ターミナルから別のアプリケーションのウィンドウに切り替えることを許可します。このコマンドは、Firefoxとgeanyのアクティブなウィンドウをキャッチします。

はどうかと言うと

問題が発生する理由を知っていますか?

よくわかりませんが、man xdotoolwindowfocusを検索すると、

XSetInputFocusを使用します。これは、一部のウィンドウマネージャーまたはプログラムで無視される場合があります。

それがgetwindowfocusにも当てはまるかどうかは明示的に言及されていません。

2
DK Bose