Xfce
如何確定桌面視窗在 Xfce 中是否可見?
我有一個 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
存在和/或是否有子視窗相對簡單