始める前に遅延を追加するために常に更新するConkyスクリプトがあります。遅延時間は、少なくとも背景が表示されるのを待つ時間でなければなりません。それ以外の場合、Conkyは壁紙の後ろに隠されます。悪い。
これでログインすると、これが起こります。すでにログインしている場合は、スクリプトが待たずにすぐに起動したいと思います。
私のデスクトップ環境はXfce 4.12存在する万座路16。デスクトップが準備/表示される時期を確実に確認する方法はありますか?
編集する:次のようなエドガー・グリアの答え、スクリプトを更新しました。内容は次のとおりです。
#!/bin/sh
# Try to detect screen width to correctly position Conky
# to the right of the first monitor
eval $(xdpyinfo | sed -e '/screen\s\+#0/,+1!d' \
-e '/screen/d' \
-e 's@\s\+dimensions:\s\+\([0-9]\+\)x\([0-9]\+\).*@WIDTH=\1; HEIGHT=\2@g') 2>/dev/null \
|| WIDTH=1920
# Wait till the desktop window is ready (more or less)
# Method 1:
#while ! xwininfo -name Bureau 2>&1 > /dev/null; do sleep 1s; done
# Method 2:
while ! xwininfo -tree -root | \
grep -qE '\("xfdesktop"\s+"\w+"\)\s+'${WIDTH}x${HEIGHT}'\+0\+0'; \
do sleep 1s; done
cd $HOME/.conky
exec /usr/bin/conky ${WIDTH:+-x $WIDTH -y 48} "$@"
これは次のように保存され、/usr/local/bin/conky.sh
通常は次のように呼び出されます.config/autostart
。
conky.sh -p 2 -q -c ringrc
この場合、2秒では不十分です。
ベストアンサー1
デスクトップの背景パターンが子ウィンドウによって生成された可能性があることを知っている場合は、xfdesktop
次のコマンドを使用してXウィンドウリストの内容をナビゲートすることが次の手がかりになる可能性があります。
xwininfo -tree -root
出力抜粋(「Scrivania」は英語で「デスクトップ」を意味します):
0x800744 (has no name): () 4x538+736+30 +755+50
0x800743 (has no name): () 4x541+0+30 +19+50
0x8005f9 (has no name): () 1920x1080+0+0 +0+0
16 children:
0x1400003 "Scrivania": ("xfdesktop" "Xfdesktop") 1920x1080+0+0 +0+0
1 child:
0x1400004 (has no name): () 1x1+-1+-1 +-1+-1
0x800608 (has no name): () 1x1+0+0 +0+0
0x800607 (has no name): () 1x1+0+0 +0+0
この仮定に基づいて、スクリプトに自分が属するウィンドウがxfdesktop
存在するか、および/または子ウィンドウがあるかどうかを確認するのは比較的簡単です。