시작하기 전에 지연을 추가하기 위해 항상 업데이트하는 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
존재하는지 및/또는 하위 창이 있는지 확인하는 것이 상대적으로 간단합니다.