i3wm: como fazer com que vários monitores alternem espaços de trabalho em uma única ligação

3

Com o Unity, ambos os meus monitores estão sempre no mesmo espaço de trabalho. Se eu começar no espaço de trabalho 1 e, em seguida, pressionar ctrl + alt + right, ambos dos meus monitores mudam para o novo espaço de trabalho à direita. Esse comportamento é importante para o meu fluxo de trabalho.

Eu gostaria de mudar para o i3, mas parece que os dois monitores nem sempre são necessários para apontar para o mesmo espaço de trabalho. Existe uma maneira de alterar esse comportamento para que, em i3, quando pressiono $ mod + Shift + num, AMBOS as telas mudem em vez de apenas a que tem foco?

    
por johnny_boy 15.06.2016 / 16:55

1 resposta

5

É (um pouco) possível emular esse "recurso" (para mim, o comportamento do espaço de trabalho de i3 é um dos principais recursos, por isso não recomendo fazer isso, a menos que você realmente não consiga trabalhar sem espaços de trabalho abrangendo todos os monitores enquanto ainda deseja usar i3 ).

Você pode vincular vários comandos a atalhos, para poder simplesmente alternar espaços de trabalho em ambos os monitores de uma só vez. Por exemplo:

# Default modifier key
set $mod Mod4

# variables for left and right monitor 
# (assuming names DP-1 and DP-3 with DP-1 being left of DP-3)
set $monL DP-1
set $monR DP-3

# variables for workpacenames; 
set $ws1L 1:A
set $ws1R 11:A
set $ws2L 2:B
set $ws2R 12:B
set $ws3L 3:C
set $ws3R 13:C

# assign workspaces to specific outputs
workspace $ws1L output $monL
workspace $ws1R output $monR
workspace $ws2L output $monL
workspace $ws2R output $monR
workspace $ws3L output $monL
workspace $ws3R output $monR

# do not toggle automatically between the current and previous 
# workspace on repeated calls to 'workspace NAME' (with identical NAME)
workspace_auto_back_and_forth no

# Toggle between both monitors 
# (focus output left wraps from the leftmost to the rightmost output)
bindsym $mod+Tab focus output left

# switch two workspaces at once (the need to be on different outputs)
bindsym $mod+1 workspace $ws1L, workspace $ws1R
bindsym $mod+2 workspace $ws2L, workspace $ws2R
bindsym $mod+3 workspace $ws3L, workspace $ws3R

# move a window to a specific workpace; 
# $mod+Shift for left side, $mod+Control for right side
bindsym $mod+Shift+1 move workspace $ws1L
bindsym $mod+Control+1 move workspace $ws1R
bindsym $mod+Shift+2 move workspace $ws2L
bindsym $mod+Control+2 move workspace $ws2R
bindsym $mod+Shift+3 move workspace $ws3L
bindsym $mod+Control+3 move workspace $ws3R

bar {
    # [...]
    # Do not show workspace numbers (optional)
    strip_workspace_numbers yes
}

Isso usa variáveis para manter os nomes da área de trabalho e da saída consistentes. Os nomes do espaço de trabalho para o monitor esquerdo e direito precisam ser diferentes. Nesse caso, escolhi usar números diferentes porque eles podem ser ocultados, se desejado. Quando estas configurações Super + 1 mudam para a área de trabalho 1:A no monitor da esquerda e 11:A no monitor da direita. workspace_auto_back_and_forth deve ser desativado para evitar um comportamento possivelmente confuso e indesejado.

Advertências:

  • Isso funciona apenas para os atalhos de teclado, se você clicar em um botão de espaço de trabalho no i3bar, somente a área de trabalho em um monitor será alterada e não sua complementar.
  • Qualquer comando que focalize uma janela em uma área de trabalho não visível no momento ( [criteria] focus ) só focalizará essa área de trabalho sem a da outra saída
  • Ao alternar dois espaços de trabalho com uma ligação, o segundo espaço de trabalho será sempre o focalizado (no exemplo acima, o direito).
  • A focagem e o movimento nas bordas da exibição podem exigir diferentes comandos / atalhos de teclado em alguns casos. (Embora esse também seja o caso dos espaços de trabalho não sincronizados, talvez seja mais perceptível / interrompido quando se espera um grande espaço de trabalho)

Algumas, se não todas as advertências, provavelmente poderiam ser resolvidas utilizando a interface IPC, por exemplo, para alternar automaticamente para a área de trabalho complementar também.

Pessoalmente, sugiro, pelo menos, adotar uma abordagem híbrida: Use espaços de trabalho sincronizados onde você absolutamente precisa deles para o seu fluxo de trabalho, mas use a abordagem de exibição única padrão (para i3 ) em qualquer outro lugar. Caso contrário, se você realmente precisar / quiser áreas de trabalho sincronizadas o tempo todo, pode ser que i3 simplesmente não seja o gerenciador de janelas que você está procurando.

    
por 16.06.2016 / 02:38