wmctrl diz que eu tenho um espaço de trabalho quando eu realmente tenho quatro

5

Estou tentando criar um gvim por espaço de trabalho usando este script como ponto de partida: link

Eu sei que quando encontrei este script pela primeira vez meses atrás, wmctrl -d listou quatro espaços de trabalho. Mas agora, quando eu tento, ele mostra apenas um:

$ wmctrl -d
0  * DG: 7208x1003  VP: 0,0  WA: 0,0 1802x976  Workspace 1

Listar as janelas mostra que todas estão na mesma área de trabalho, mas com largura de tela espaçada:

$ wmctrl -lGx
0x02200003  0 0    1952 1802 27   gnome-panel.Gnome-panel  ned-vbox Bottom Expanded Edge Panel
0x0260001e  0 0    0    1802 1003 desktop_window.Nautilus  ned-vbox x-nautilus-desktop
0x04600004  0 332  140  1169 722  gnome-terminal.Gnome-terminal  ned-vbox Terminal
0x046000c6  0 116  288  1433 512  gnome-terminal.Gnome-terminal  ned-vbox Terminal
0x0480001e  0 388  48   1604 948  gvim.Gvim             ned-vbox .bashrc (~) - GVIM
0x04604c55  0 784  48   1214 948  gnome-terminal.Gnome-terminal  ned-vbox Terminal

Este é o Ubuntu 10.10 executando compiz em uma caixa virtual (é por isso que a tela tem 1802 pixels de largura).

Por que minhas áreas de trabalho não são visíveis no wmctrl? Eles se comportam adequadamente na GUI, todas as teclas de atalho funcionam como deveriam, e os itens de menu para mover janelas entre espaços de trabalho são bons. Como obtenho wmctrl para me mostrar o que eu quero? Existe outra maneira de obter informações do espaço de trabalho com precisão?

    
por Ned Batchelder 30.03.2011 / 03:59

1 resposta

8

O Compiz implementa viewports em vez de desktops. Você pode calcular o número de viewports com base na largura da área de trabalho:

$ wmctrl -d
0  * DG: 7680x1200  VP: 0,0  WA: 0,0 1920x1175  Workspace 1

Isso diz que eu tenho quatro viewports (7680/1920 = 4) e atualmente estou procurando no primeiro. (Infelizmente eu não vejo uma maneira em wmctrl para buscar de forma confiável a largura de uma janela de visualização, porque a área de trabalho diminuirá se você tiver um painel tomando espaço em uma borda. Você pode usar números difíceis ou usar xdpyinfo para encontrar as dimensões em pixels da sua tela.)

Para mudar para a segunda viewport:

$ wmctrl -o 1920,0

Se você está querendo analisar essas coisas no bash, aqui está um exemplo:

$ dimensions=$(xdpyinfo | awk '$1=="dimensions:"{print $2}')
$ screen_width=${dimensions%x*}
$ info=( $(wmctrl -d | awk '{print $4, $6}') )
$ desktop_width=${info[0]%x*}
$ viewports=$(( desktop_width / screen_width ))
$ current_vp=$(( ${info[1]%,*} / screen_width ))
    
por 30.03.2011 / 18:17