como determinar em qual viewport (compiz/unity) uma janela é colocada?

como determinar em qual viewport (compiz/unity) uma janela é colocada?

Estou escrevendo um script que exige determinar em qual janela de visualização uma janela é colocada.

Minha área de trabalho é 2x2 (4 viewports); geralmente é pensado como sendo 4 desktops virtuais, mas no compiz/unity, é na verdade uma janela de visualização e apenas um desktop, baseado em xdotool get_num_desktops.

Apenas para facilitar a explicação, veja estas viewports (embora não tenha certeza se esses seriam realmente seus IDs):

0 1  
2 3  

Coloque sua janela na viewport 2, execute xwininfo -alle clique na sua janela; você obterá seu ID e verá que os valores "superior esquerdo" são todos pequenos, como estar na janela de visualização 0, mas na verdade são relativos à janela de visualização 2.

Além disso, você não encontra informações sobre qual janela de visualização está.

Mais informações você pode encontrar em:
wmctrl -dque mostra informações precisas sobre qual janela de visualização somos.
xdotool get_desktop_viewportnão será preciso para as viewports 2 e 3.

Responder1

Na verdade, é muito simples: as informações de posição da janela de visualização são relativas à janela de visualização atual.

Então, basta digitar xwininfoe selecionar uma janela.
Agora, altere a viewport e o tipo xwininfo -id 0x...(0x... é o ID que você coletou para a janela), os valores de posição serão exibidos fora dos limites atuais da viewport, com valores relativos baseados na viewport atual como:

Absolute upper-left X:  -1270
Absolute upper-left Y:  62

Com base nisso é possível determinar onde está a janela.
Neste caso eu estava na viewport 1 e a janela na viewport 0.

informação relacionada