Como posso determinar se a janela da área de trabalho está visível no Xfce?

1

Eu tenho um script Conky que sempre atualizo para aumentar o atraso antes de começar. O atraso tem que ser pelo menos quanto tempo deve esperar até que o fundo seja exibido, caso contrário, Conky está escondido atrás do papel de parede. Ruim.

Agora isso deve acontecer quando eu fizer logon. Quando eu já estou logado, eu gostaria que o script não esperasse, mas comece imediatamente.

Meu ambiente de trabalho é o Xfce 4.12 no Manjaro 16 . Existe uma maneira de determinar com segurança quando a área de trabalho está pronta / visível? (Fique comigo se a minha pergunta não usar os termos técnicos adequados, pois não os conheço).

EDITAR : Depois da resposta de Edgar Gril , atualizei meu roteiro. Ele diz o seguinte:

#!/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=; HEIGHT=@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} "$@"

Ele é salvo como /usr/local/bin/conky.sh e é normalmente chamado da seguinte forma em .config/autostart :

conky.sh -p 2 -q -c ringrc

com 2 segundos não sendo suficiente neste caso.

    
por Community 07.06.2016 / 19:53

1 resposta

0

Sabendo que o papel de parede da área de trabalho poderia ser uma janela filha criada por xfdesktop , um lead a seguir poderia estar explorando o conteúdo da lista do X windows com o comando:

xwininfo -tree -root

trecho da saída ("Scrivania" significa simplesmente "Desktop" em inglês):

    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

Seguindo essa hipótese, é relativamente simples em seu script verificar se a janela pertencente a xfdesktop existe e / ou tem filhos

    
por 07.06.2016 / 20:21