Attribuer des espaces de travail sur i3 à plusieurs écrans

15

J'ai activé l'utilisation d'i3 sur mon ordinateur portable Linux. J'utilise généralement uniquement le moniteur interne (écran eDP1) de l'ordinateur portable , mais lorsque je suis au travail, j'ai tendance à connecter un moniteur secondaire au port HDMI (écran HDMI2) de mon ordinateur . Jusqu'à présent, j'ai bien fait ce travail en ajoutant ces commandes à mon fichier de configuration 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

En d'autres termes, lorsque je connecte mon écran HDMI, j'appuie simplement sur Mod+ Mpour que i3 le détecte, le place à droite de mon écran principal et lui délègue 5 espaces de travail nommés (6-10).

Voici le problème: à la maison, j'ai un autre moniteur que je peux connecter avec VGA (affichage DP2). Je peux également exécuter la xrandrcommande ci-dessus pour placer cet écran à droite de mon écran principal, mais je ne peux pas attribuer les espaces de travail à cet écran par défaut, sauf si je remplace les règles que j'ai déjà pour mon moniteur HDMI. J'aimerais que ces deux espaces de travail fonctionnent de la même manière quel que soit le moniteur que j'utilise, ce n'est donc pas une option.

TL; DR Existe-t-il un moyen d'affecter des espaces de travail à deux écrans différents, en fonction de l'écran connecté (en supposant qu'ils ne seront jamais connectés en même temps)?

Frxstrem
la source

Réponses:

21

Vous ne pouvez pas affecter plusieurs sorties à un seul espace de travail, voir: https://github.com/i3/i3/issues/555

La seule façon est donc de changer dynamiquement la configuration i3. Vous pouvez affecter un script de raccourci clavier qui fera 2 choses: changer les sorties de moniteur avec xrandret déplacer les espaces de travail avec 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"

Avec le script ci-dessus, vous déplacerez 6 à 10 espaces de travail vers DP2 et finirez par rester sur l'espace de travail 10.

Mise à jour 2019: l' attribution de plusieurs sorties a été implémentée à partir de la version 4.16, voir https://i3wm.org/docs/userguide.html#workspace_screen . Maintenant, vous pouvez les utiliser comme ça:

workspace "6: S1" output HDMI2 VGA

La première sortie disponible sera alors utilisée.

anlar
la source
2

Selon le guide de l' utilisateur , syntaxe:

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

devrait marcher.

Ou vous pouvez définir la sortie principale sur vos machines, si elle n'est pas définie ( xrandr --output <output> --primary), et utiliser cette syntaxe:

workspace 1 output primary
...
workspace 6 output secondary
caseneuve
la source