Espace de travail séparé pour le deuxième écran

16

J'aimerais obtenir un comportement comme celui-ci: lorsque j'utilise l'écran de mon ordinateur portable, mon premier espace de travail est utilisé. Lorsque je branche un deuxième écran (via HDMI), un deuxième espace de travail est utilisé et toutes les nouvelles fenêtres ouvertes sur ce deuxième écran atterriront dans le deuxième espace, sauf que je bascule l'espace de travail du deuxième écran vers un autre espace de travail.

Lorsque je débranche mon deuxième écran, toutes les fenêtres restent dans les espaces de travail dans lesquels elles ont été créées et je peux basculer les espaces de travail sur mon ordinateur portable pour les voir.

Ce comportement est-il déjà possible?

velop
la source
J'ai déjà réussi à activer les espaces de travail avec Apparence -> Behvior et désactivé les espaces de travail verticaux avec le Gestionnaire de paramètres CompizConfig. Il existe également des plugins Expo et Viewport Switcher qui semblent être capables de faire ce que je veux, mais j'ai peur de changer les paramètres sans le savoir.
velop
Votre question est un peu déroutante. Si vous demandez de faire des affichages en deux espaces de travail distincts, la réponse est non, impossible. Si vous demandez de changer automatiquement le nombre d'espaces de travail lors de la connexion du deuxième écran, c'est possible. Veuillez clarifier / simplifier ce que vous demandez
Sergiy Kolodyazhnyy
2
J'ai trouvé l'option Compiz -> Desktop Wall -> Viewport Switching -> Multimonitor bahvior -> Switch séparément. Mais apparemment, cela ne fonctionne pas.
velop
@velop, pouvez-vous modifier ces commentaires dans la question?
SDsolar

Réponses:

1

Ce comportement est-il déjà possible?

Tout est possible sous Linux. Vous aurez besoin de quelques connaissances de base sur le Xserver , du temps et un système pour tester, car vous jouez avec votre X et vous avez certainement besoin du navigateur en cours d'exécution si vous avez besoin d'aide :-)

À mon avis, il existe trois solutions possibles:

  • Les configurations multi-écrans utilisent Xinerama . La solution la plus simple à laquelle je peux penser est d'ajouter un troisième écran virtuel à votre configuration et de simplement y déplacer les fenêtres en utilisant xdotool. Il y a quelques inconvénients à cette solution, mais elle ne nécessiterait pas l'effort de déplacer des fenêtres entre différents serveurs X, ce qui n'est généralement pas possible.

  • Comme il est impossible de déplacer les fenêtres entre les différentes Xservers , nous avons besoin d' une sorte de procuration comme xmove ou XPRA de le faire pour nous. Je pense que les fenêtres vivent alors dans une session Xfvb distincte pour cacher les fenêtres. Vous pouvez attacher et détacher à la session.

  • Quelle que soit la méthode que vous utilisez, vous avez besoin d'un événement lorsque le moniteur est débranché. L'événement doit être déclenché lorsque l'écran est déconnecté et également lorsqu'il est reconnecté. Vous pouvez démonifier le script pour surveiller l'événement.

Je préférerais la solution utilisant Xpra pour diverses raisons. Je ne peux que vous donner quelques conseils sur la façon de procéder. Les solutions ne sont pas complètes mais devraient vous aider à démarrer.

Xinerama Solution

Installer

La configuration de Xinerama doit être étendue pour avoir une configuration statique: voir https://help.ubuntu.com/community/XineramaHowTo

voir aussi faux troisième écran et Xdummy

obtenir les fenêtres affectées

Nous pouvons utiliser xdotool pour rechercher des fenêtres. Ensuite, nous pouvons vérifier leur position et les déplacer. Je suppose que deux moniteurs avec 1920x1080configuration. Les éléments suivants déplaceront toutes les fenêtres de la droite vers la gauche de l'écran xinerama.

while read xwindowid; do
    eval $(xdotool getwindowgeometry --shell "$xwindowid")
    if (( X > 1920 && X <= (1920 * 2))); then
        xdotool windowmove --relative $WINDOW -1920 y
    fi
done <<< "$(xdotool search --screen 0 '.*')"

Vous pouvez maintenant déplacer toutes les fenêtres de l'écran de votre ordinateur portable (screen0) vers un troisième écran (virtuel) si un moniteur est connecté. En même temps, vous pouvez déplacer n'importe quelle fenêtre stockée sur le troisième écran vers le premier écran.

Solution XPRA

Afin d'utiliser Xpra pour déplacer les fenêtres, toutes les fenêtres doivent être gérées par Xpra au préalable. Vous devez démarrer l'ensemble du bureau à l'aide de Xpra au démarrage du système. Deux fois, l'un est votre bureau principal sur lequel vous travaillez et l'autre est principalement un bureau virtuel.

xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach

Vous pouvez maintenant avoir Windows pour l'écran déconnecté exécuté dans une session xpra distincte et l'attacher / le détacher lorsque le moniteur bascule.

xpra attach :99
xpra detatch :99

Il existe également une extension de shell gnome discontinue qui pourrait être utile si vous souhaitez déplacer manuellement une fenêtre de la fenêtre cachée :99à la normale :0entre les affichages xpra démarrés.

L'événement

  • Vous pouvez surveiller la déconnexion / reconnexion d'un écran spécifique

  • surveillez peut-être les dimensions modifiées de votre xinerama en utilisant xwininfo pour le rendre indépendant du moniteur non branché si vous voulez par exemple étendre votre configuration à 3 moniteurs et débrancher un appareil arbitraire. Notez que cela ne fonctionnera que pour la solution xpra.

    xwininfo -display :0 -root | grep -e "-geometry"

    -geometry 5760x2160+0+0

ukos
la source