web-dev-qa-db-fra.com

Attribuer des espaces de travail sur i3 à plusieurs écrans

J'ai activé l'utilisation d'i3 sur mon ordinateur portable Linux. J'utilise généralement uniquement le moniteur interne de l'ordinateur portable (affichage eDP1), mais lorsque je suis au travail, j'ai tendance à connecter un moniteur secondaire au port HDMI de mon ordinateur (afficher HDMI2). 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+M pour que i3 le détecte, placez-le à droite de mon affichage principal et déléguez-y 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 (afficher DP2). Je peux exécuter la commande xrandr ci-dessus pour placer également cet affichage à droite de mon affichage principal, mais je ne peux pas obtenir les espaces de travail à affecter à cet affichage par défaut, sauf si je remplacer 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)?

16
Frxstrem

Vous ne pouvez pas attribuer 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 xrandr et 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'affectation 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.

22
anlar

Selon la 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 utilisez cette syntaxe:

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