編集:これはウィンドウがいつ表示されるかを検出します。ただし、その中のすべてのメニュー/ウィジェットが配置/レイアウトで終了したことを検出しません
では、まず次のスクリプトを実行します。
audacity &
pid=$!
while [ "1" ] ; do
xwininfo -name 'Audacity'
sleep 0.1
done
...完全なログを取得するには、次のように実行する必要があります。
bash testscript.sh 2>&1 | tee testscript.log
xwininfo
...そして、いわば「遷移」からのダンプがあるポイントを見ることができます:
xwininfo: Window id: 0x3a000b5 (has no name)
Absolute upper-left X: 0
Absolute upper-left Y: 0
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 200
Height: 200
Depth: 24
Visual: 0x21
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsUnMapped
Override Redirect State: no
Corners: +0+0 -824+0 -824-400 +0-400
-geometry 200x200+0+0
xwininfo: Window id: 0x4c00587 "Audacity"
Absolute upper-left X: 50
Absolute upper-left Y: 59
Relative upper-left X: 0
Relative upper-left Y: 18
Width: 830
Height: 540
Depth: 24
Visual: 0x21
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +50+59 -144+59 -144-1 +50-1
-geometry 830x540+50-1
したがって、基本的grep
にxwininfo
「名前がありません」を含まない出力、または「Map State: IsViewable」を含む出力を作成できます...
だから、私はついにこれを試してみました-そしてそれはうまくいくようです:
audacity &
pid=$!
WINREP=""
while [[ ! "`echo $WINREP | grep -l 'Map State: IsViewable'`" ]] ; do
WINREP=$(xwininfo -name 'Audacity')
#echo $WINREP
sleep 0.1
done
echo Exited
# must use -F here for case-insensitive, to ensure proper window targetting
wmctrl -v -F -r "Audacity" -e 0,0,0,800,600