Atribuir áreas de trabalho no i3 a vários monitores

15

Eu liguei o i3 no meu laptop Linux. Normalmente, estou usando apenas o monitor interno do laptop eDP1, mas quando estou no trabalho, conecto um monitor secundário à porta HDMI do computador HDMI2. Até agora, eu fiz esse trabalho bem adicionando esses comandos ao meu arquivo de configuração do i3:

# use workspaces on different monitors
workspace "1: P1" output eDP1
workspace "2: P2" output eDP1
workspace "3: P3" output eDP1
workspace "4: P4" output eDP1
workspace "5: P5" output eDP1
workspace "6: S1" output HDMI2 
workspace "7: S2" output HDMI2
workspace "8: S3" output HDMI2
workspace "9: S4" output HDMI2
workspace "10: S5" output HDMI2

# add HDMI monitor when connected
exec --no-startup-id xrandr --output HDMI2 --right-of eDP1
bindsym $mod+m exec --no-startup-id xrandr --output HDMI2 --auto --right-of eDP1

Em outras palavras, quando conecto meu monitor HDMI, basta pressionar Mod+ Mpara obter o i3 para detectá-lo, posicioná-lo à direita no meu monitor principal e delegar 5 espaços de trabalho nomeados (6 a 10).

Aqui está o problema: Em casa, tenho outro monitor que posso conectar com o VGA (monitor DP2). Também posso executar o xrandrcomando acima para colocar essa tela à direita da minha tela principal, mas não consigo atribuir os espaços de trabalho a essa tela por padrão, a menos que substitua as regras que já tenho para o meu monitor HDMI. Gostaria que esses dois espaços de trabalho funcionassem da mesma forma, não importa qual monitor eu use, portanto, essa não é uma opção.

TL; DR Existe uma maneira de atribuir áreas de trabalho a dois monitores diferentes, dependendo de qual monitor estiver conectado (supondo que eles nunca serão conectados ao mesmo tempo)?

Frxstrem
fonte

Respostas:

21

Você não pode atribuir várias saídas ao espaço de trabalho único, consulte: https://github.com/i3/i3/issues/555

Portanto, a única maneira é alterar a configuração do i3 dinamicamente. Você pode atribuir ao script de teclas de atalho que fará duas coisas: alterando as saídas do monitor xrandre movendo os espaços de trabalho com i3-msg:

xrandr --output DP2 --auto --right-of eDP1
i3-msg "workspace 6, move workspace to output DP2"
...
i3-msg "workspace 10, move workspace to output DP2"

Com o script acima, você moverá de 6 a 10 áreas de trabalho para o DP2 e acabará ficando na área de trabalho 10.

Atualização 2019: A atribuição de várias saídas foi implementada a partir da v4.16, consulte https://i3wm.org/docs/userguide.html#workspace_screen . Agora você pode usá-los assim:

workspace "6: S1" output HDMI2 VGA

A primeira saída disponível será usada.

anlar
fonte
2

De acordo com o guia do usuário , sintaxe:

workspace 1 output eDP1
...
workspace 6 output HDMI2 VGA

Deveria trabalhar.

Ou você pode definir a saída primária em suas máquinas, se não estiver definido ( xrandr --output <output> --primary), e usar esta sintaxe:

workspace 1 output primary
...
workspace 6 output secondary
caseneuve
fonte