在一个tmux会话中使用多个终端x-windows


19

我通常使用2个垂直排列不完全的监视器(左侧监视器下方有台式电源),但我希望屏幕上并排有4个终端窗口,我可以轻松地在它们之间循环,例如:

在此处输入图片说明

这种安排让我感到非常难过,因为我无法仅靠键盘轻松地以理智的方式循环浏览所有4个窗口(alt-tab不会为我剪裁,因为它不能保持所有4个窗口的“排序”-如果我反复按alt-tab,它只是在我最近使用的2个窗口之间反弹)

有没有办法让tmux生成第二个x窗口,以便我可以有2个x窗口,每个窗口都在其中有2个tmux窗格?


因此,您的问题是(让)您的窗口在两个监视器之间平铺,并且在两个最近的窗口之间而不是所有四个窗口之间进行alt + tab循环?这似乎是一份工作tiling window manager。你有尝试过吗?有很多。awesomei3wmiixmonad,和dwm都名列前茅。虽然出于您的目的,但我还是建议您使用i3(1),因为它很容易上手(读取配置文件可以教您控件和配置基础知识),并且适合多监视器(xinerama / xrandr)设置。
Braden Best

我尝试过i3,我绝对喜欢它,但是它导致我的ubuntu设置大约每小时崩溃一次:(由于某种原因,它在我的显示器上也表现
不佳。– johnny_boy

真?其他的呢?wmii和xmonad将是我的建议队列中的下一个,因为它们也是“花哨”的平铺wms,其次是dwm(我个人最喜欢的)。虽然没有i3那样广泛地使用,但它们可以优雅地处理IMO的多台显示器。
Braden Best

Answers:


15

tmux 允许您创建“会话组”-可以都附加到同一组窗口的多个会话。

(感谢 https://gist.github.com/chakrit/5004006 :)

在左侧终端中,创建一个新的会话+窗口组。

tmux new-session -s left

照常将其拆分为窗格。

:split-window -v

在另一个(右侧)终端中,连接到该现有窗口组。您将必须为其提供旧名称以进行连接,并为其提供自己的会话名称以进行区分。

tmux new-session -t left -s right

在该会话中,创建另一个窗口并拆分

:new-window
:split-window -h

现在,您可以tmux在每个(终端)窗口中看到所有()窗口,但是每个窗口中的视图都是彼此独立的。

要从一个切换到另一个(不使用窗口管理器自己的快捷方式),可以使用例如。xdotool

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

这些假设您已启用tmuxset-titles选项,以便为终端提供可搜索的名称;并且您tmux在每个窗口中仅使用一个窗口(一组窗格)。


要完成此操作,我需要一个脚本,该脚本可靠地查询当前窗格,并在适当时使用“激活窗口”命令前进到“下一个”窗格。但是我还没有弄清楚该怎么做-我认为除了可用的内容之外,还需要一些其他的数据存储tmux
JigglyNaga

请注意,您可能需要打开“主动调整大小”(setw
-ggressive

0

您是否可以通过低技术的方法来调整一个终端的大小(通过拖动边缘)以覆盖两个显示器,以使中心分隔线位于两个显示器的边界?


1
这不工作,如果两个显示器都不同的高度,或者如果您使用的OS X.
詹姆斯

0

您将要tmux在每个终端中启动一个单独的会话,然后将每个会话的单个tmux窗口垂直拆分为两个窗格。

因此,在每个终端中:

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

或更短一点,在每个终端中:

$ tmux new \; splitw -h

您需要两个会话,因为在一个会话中,两个终端将始终同步并显示相同的tmux窗口。

然后,使用桌面的快捷方式在两个终端之间切换。

就我个人而言,我本来应该只用一个监视器,一个tmux会话和两个(或许多个)分割tmux窗口彼此“隔离”,然后用Ctrlb- 交换它们n,但这是有问题的。

$ tmux new \; splitw -h \; neww \; splitw -h
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.