Viewports versus espaços de trabalho
Como apontado em esta resposta , há uma diferença essencial entre o Compiz / Unity e outros gerenciadores de janelas.
Se olharmos para o Xubuntu (XFCE), todos os espaços de trabalho são espaços autônomos. Tudo o que precisamos saber é o espaço de trabalho em que está uma janela e as coordenadas x e y. Basicamente, não há matriz em que os espaços de trabalho são ordenados, além da ordem "lineair" 1, 2, 3, etc.
Isso é diferente no Unity, onde há apenas um um espaço de trabalho. O espaço de trabalho (abrangendo) é dividido em várias seções, chamadas de viewports. Essas viewports são organizadas em linhas e colunas.
Dessa forma, é possível que uma janela seja parcialmente visível em todas as viewports:
ao contrário dos espaços de trabalho:
Diferenças na saída de wmctrl -d e como interpretar
Para entender a saída de wmctrl -lG
, devemos entender sua "anatomia":
- número da área de trabalho (primeiro = 0)
- marca de área de trabalho atual ("*" se for a área de trabalho atual (área de trabalho), "-" se não for)
- geometria da área de trabalho (o tamanho da área de trabalho x-y)
- posição da janela de visualização (posição na área de trabalho; consulte Unidade )
- geometria da área de trabalho como (tamanho "utilizável" da área de trabalho, menos painéis etc.; a primeira coluna é px da esquerda / superior)
- nome da área de trabalho (possivelmente contendo vários espaços)
Como o Unity tem apenas um espaço de trabalho, a saída sempre mostra um *
on [2]
. Como sabemos como as viewports são organizadas e qual é a viewport atual?
As informações estão em VP: 1680,0
( [4]
). Não simplesmente como um número de viewport, mas como uma coordenada xey. Essas coordenadas podem ser zero ou x
* da resolução da tela. Para saber como as viewports estão configuradas, precisaremos saber também a re-geração da tela (com a ajuda de xrandr
).
Como descobrir:
-
quantas visões existem atualmente e como elas são organizadas:
Observando o
DG: 3360x2100
no exemplo "Unity" e sabendo que a resolução da nossa tela é de 1680x1050, podemos concluir que há duas colunas de viewports (3360/1680) e duas linhas (2100/1050). -
qual é o espaço de trabalho atual:
Um exemplo
A tela tem uma resolução de 1680x1050. A informação da janela de visualização saisVP: 1680,0
. Cordinates são exibidos como o canto superior esquerdo, Então estamos na segunda coluna, primeira linha. -
em que uma janela está localizada em um sentido absoluto :
Assim que soubermos qual porta de visualização é a atual, podemos localizar as janelas, observando suas coordenadas na saída de
wmctrl -lG
[3]
:
- janela - id
- número da área de trabalho (em Unity: sempre 0 conforme indicado)
- coordenadas da janela, da perspectiva da viewport atual (x-y)
- tamanho da janela, da perspectiva do (w-h)
- nome do computador
-
nome da janela
Podemos simplesmente localizar a janela, com a origem no topo esquerdo da janela atual.
Abaixo de um exemplo de uma resolução de tela de 1680x1050, viewports 2x2:
Coordenadas da janelada perspectiva da janela de visualização 1
da perspectiva da janela de visualização 4
- , que são as janelas na área de trabalho atual:
Com as informações acima e com a ajuda de
wmctrl -lG
(as coordenadas da janela, seção[3]
), bem simples:
se
- a coordenada x de uma janela está entre 0 e a resolução (horizontal) da tela, e
- a coordenada y de uma janela está entre 0 e a resolução (vertical) da tela
então uma janela está localizada na viewport atual.