É possível percorrer espaços de trabalho no Unity (14.04+)?

0

Configurei meus atalhos de teclado para que o Alt + left me leve para o espaço de trabalho restante, e Alt + direito me leve para o espaço de trabalho à direita, mas prefiro ter um conjunto de chaves para alternar. Idealmente, algo como

workspace 1 + Alt + tab ---> worskspace 2
workspace 2 + Alt + tab ---> worskspace 3
workspace 3 + Alt + tab ---> worskspace 4
workspace 4 + Alt + tab ---> worskspace 1

O problema é a última linha. Eu não vejo nenhuma maneira de ir do espaço de trabalho 4 de volta ao espaço de trabalho 1. Como ir para o módulo 4 correto?

    
por uhuola 01.03.2016 / 15:37

2 respostas

3

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

  1. O script precisa de wmctrl :

    sudo apt-get install wmctrl
    
  2. Copie o script em um arquivo vazio, salve-o como through_viewports.py

  3. 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
    
por Jacob Vlijm 05.03.2016 / 15:51
2

Em 12.04 eu tinha resolvido este problema editando uma chave com gconf-editor, mas não tinha a mesma chave em 16.04, então aqui está o que funcionou para mim:

sudo apt-get install compizconfig-settings-manager

que instala um utilitário de configurações avançadas de GUI, então

ccsm

que lança isso. E então fui para Desktop Wall > Comutação de viewport > Permitir Wrap-Around e marque a caixa.

    
por ph7four 24.09.2016 / 21:48