utiliser plusieurs terminaux x-windows avec une seule session tmux

19

Je travaille généralement avec 2 moniteurs qui ne sont pas assez alignés verticalement (j'ai une alimentation de paillasse sous mon moniteur gauche), mais je veux avoir 4 fenêtres de terminal côte à côte sur mes écrans que je peux parcourir facilement, comme ceci:

entrez la description de l'image ici

Cet arrangement me rend très triste car je ne peux pas facilement parcourir les 4 d'une manière saine en utilisant uniquement mon clavier (alt-tab ne le coupe pas pour moi car il ne conserve pas "l'ordre" des 4 fenêtres - si J'appuie plusieurs fois sur alt-tab, il rebondit simplement entre mes 2 fenêtres les moins récemment utilisées)

Existe-t-il un moyen de faire en sorte que tmux génère une deuxième x-fenêtre afin que je puisse avoir 2 x-fenêtres, chacune ayant 2 volets tmux à l'intérieur?

johnny_boy
la source
Donc, votre problème est (était) que vos fenêtres sont réparties sur deux moniteurs et que les cycles alt + tab entre les deux fenêtres les plus récentes au lieu des quatre? Cela semble être un travail pour un tiling window manager. En avez-vous essayé? Il y en a plein. awesome, i3, wmii, xmonadEt dwmsont parmi les meilleurs. Bien que pour vos besoins, je suggère i3(1), car il est simple à comprendre (la lecture du fichier de configuration vous apprend les commandes et les bases de la configuration) et est adapté aux configurations multi-moniteurs (xinerama / xrandr).
Braden Best
J'ai essayé i3 et je l'ai vraiment adoré, mais cela a provoqué des plantages sur ma configuration ubuntu environ une fois par heure :( Cela ne fonctionnait pas non plus avec mes moniteurs pour une raison quelconque.
johnny_boy
vraiment? Et les autres? wmii et xmonad seraient les prochains sur ma liste de suggestions, car ils sont également des wms de mosaïque "fantaisie", suivis de dwm (mon préféré). Bien qu'ils ne soient pas aussi largement présentés que i3, ils gèrent plusieurs moniteurs assez élégamment IMO.
Braden Best

Réponses:

15

tmux vous permet de créer des "groupes de sessions" - plusieurs sessions qui peuvent toutes être attachées au même ensemble de fenêtres.

(Merci à https://gist.github.com/chakrit/5004006 :)

Dans le terminal de gauche, créez un nouveau groupe session + fenêtre.

tmux new-session -s left

Divisez-le en volets comme d'habitude.

:split-window -v

Dans l'autre terminal (à droite), connectez-vous à ce groupe de fenêtres existant. Vous devrez lui donner l'ancien nom auquel se connecter et son propre nom de session pour le distinguer.

tmux new-session -t left -s right

Dans cette session, créez une autre fenêtre et divisez

:new-window
:split-window -h

Vous pouvez maintenant voir toutes les tmuxfenêtres ( ) dans chaque fenêtre (terminal), mais la vue dans chacune est indépendante de l'autre.

Pour passer de l'un à l'autre (sans utiliser les raccourcis de votre gestionnaire de fenêtres), vous pouvez utiliser par exemple. xdotool .

xdotool search --name 'left:0:' windowactivate
xdotool search --name 'right:1:' windowactivate

Ceux-ci supposent que vous avez activé tmuxl' set-titlesoption, afin de donner au terminal un nom consultable; et que vous n'utilisez qu'une seule tmuxfenêtre (ensemble de volets) dans chacune.

JigglyNaga
la source
Pour terminer cela, j'ai besoin d'un script qui interroge de manière fiable le volet actuel et passe au "suivant", en utilisant la commande "activer la fenêtre" le cas échéant. Mais je n'ai pas encore compris comment le faire - je pense qu'il aura besoin d'un magasin de données supplémentaire en dehors de ce qui est disponible tmux.
JigglyNaga
Notez que vous devrez peut-être activer le redimensionnement agressif (setw -g agressif-redimensionnement activé), sinon les fenêtres ne s'adapteront pas au plein écran
dgmora
0

Ne pouvez-vous pas faire la méthode low-tech de redimensionner un terminal (en faisant glisser les bords) pour couvrir les deux moniteurs, de sorte que le séparateur central soit à la limite des deux moniteurs?

Walf
la source
1
Cela ne fonctionne pas si les deux moniteurs sont de hauteurs différentes, ou si vous utilisez OS X.
James
0

Vous souhaiterez démarrer une tmuxsession distincte dans chaque terminal, puis diviser la tmuxfenêtre unique de chaque session en deux volets verticalement.

Donc, dans chaque terminal:

$ tmux new-session \; split-window -h

Ou plus court, dans chaque terminal:

$ tmux new \; splitw -h

Vous avez besoin de deux sessions, car avec une session, les deux terminaux seraient toujours synchronisés et afficheraient la même tmuxfenêtre.

Utilisez ensuite les raccourcis de votre bureau pour basculer entre les deux terminaux.

Personnellement, j'aurais opté pour un seul moniteur, une tmuxsession et deux (ou autant de tmuxfenêtres ) divisées "derrière" les unes les autres, et j'échangerais entre elles avec Ctrlb- n, mais c'est une question de goût.

$ tmux new \; splitw -h \; neww \; splitw -h
Kusalananda
la source