Xfce

如何確定桌面視窗在 Xfce 中是否可見?

  • January 13, 2019

我有一個 Conky 腳本,我總是在它開始之前更新它以增加延遲。延遲必須至少要等多久才能顯示背景,否則 Conky 將隱藏在牆紙後面。壞的。

現在,當我登錄時就會發生這種情況。當我已經登錄時,我希望腳本不要等待而是立即啟動。

我的桌面環境是Manjaro 16上的Xfce 4.12。有沒有辦法可靠地確定桌面何時準備好/可見?


編輯:按照Edgar Gril 的回答,我更新了我的腳本。內容如下:

#!/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 秒是不夠的。

知道桌面牆紙可能是由 創建的子視窗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存在和/或是否有子視窗相對簡單

引用自:https://unix.stackexchange.com/questions/288232