Percorra seus viewports
Com um pequeno script, é muito possível navegar pelas áreas de trabalho (na verdade, viewports):
-
encaminhamento :
(Seaúltimajaneladevisualizaçãoforatingida,oscriptémovidoparaaprimeira)
...ouparatrás:
(Seaprimeirajaneladevisualizaçãoforatingida,oscriptémovidoparaaúltima)
Oscript
#!/usr/bin/env python3
import subprocess
import sys
move = sys.argv[1]
# get the needed info from wmctrl -d
wsdata = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
# retrieve total size of workspace
ws = [int(n) for n in wsdata[3].split("x")]
# panel/launcher height/width
pans = [int(n) for n in wsdata[7].split(",")]
# work area
wa = [int(n) for n in wsdata[8].split("x")]
# x/y resolution
res_h = pans[0]+wa[0]; res_v = pans[1]+wa[1]
# current position in the spanning workspace
VP = [int(n) for n in wsdata[5].split(",")]
def last_h():
# test if we are on the last viewport horizontally
return VP[0]+res_h == ws[0]
def first_h():
# test if we are on the first viewport horizontally
return VP[0] == 0
def last_v():
# test if we are on the last viewport vertically
return VP[1]+res_v == ws[1]
def first_v():
# test if we are on the first viewport vertically
return VP[1] == 0
if move == "next":
if last_h() == False:
command = str(VP[0]+res_h)+","+str(VP[1])
elif last_v() == True:
command = "0,0"
else:
command = "0,"+str(VP[1]+res_v)
if move == "prev":
if first_h() == False:
command = str(VP[0]-res_h)+","+str(VP[1])
elif first_v() == True:
command = str(ws[0]-res_h)+","+str(ws[1]-res_v)
else:
command = str(ws[0]-res_h)+","+str(VP[1]-res_v)
subprocess.Popen(["wmctrl", "-o", command])
Como usar
-
O script precisa de wmctrl :
sudo apt-get install wmctrl
-
Copie o script em um arquivo vazio, salve-o como
through_viewports.py
-
Adicione dois comandos a duas teclas de atalho diferentes:
python3 /path/to/through_viewports.py next
para ir para a próxima viewport e:
python3 /path/to/through_viewports.py prev
para ir para a viewport anterior
Abra as configurações do sistema > Teclado > Atalhos > Atalhos Personalizados. Clique no
+
e adicione os dois comandos aos atalhos que você gosta.
É isso O script detecta como suas viewports são configuradas e circula por elas.
Como funciona, o conceito
No Unity, as viewports são organizadas em uma matriz grande, que juntas formam a única área de trabalho , a área de trabalho Unity existe.
Usando o comando:
wmctrl -d
na saída, podemos ler todas as informações de que precisamos para descobrir onde estamos atualmente na matriz.
0 * DG: 5120x2400 VP: 0,0 WA: 65,24 1215x776 N/A
-
5120x2400
é o tamanho total de todas as viewports (matriz) -
0,0
é a posição x / y da viewport atual na matriz (canto superior esquerdo, pixels) - de
WA: 65,24 1215x776
, podemos derivar a resolução da tela (65,24
são a largura / altura do Iniciador / painel,1215x776
é a área restante)
Quando tivermos as informações corretas, o script calcula a posição de destino na matriz e a define com o comando:
wmctrl -o x,y