运行gnome-terminal的真实多个流程实例


17

如果您gnome-terminal正在运行,并且想要该程序的新实例,则可能会认为gnome-terminal &从外壳程序运行将达到目的。

令人惊讶的是,这个新实例的行为就像一些平淡的Windows或Mac程序一样。它仅向现有消息发送消息,并运行gnome-terminal以创建新窗口。如果该gnome-terminal进程崩溃,则将丢失所有终端窗口!

(当然,每个窗口都有自己的外壳程序,这是一个独立的过程,但是实际的终端仿真器及其GUI是从应用程序的单个实例管理的。)

我们如何创建独立的实例gnome-terminal,每个实例都在各自的进程中运行,所以杀死该进程只会破坏与该进程关联的窗口?


可能会成功gnome-terminal --disable-factory,但是对它的支持显然已被废
drawn了-steeldriver

@steeldriver似乎正在工作;想要回答吗?我不在乎撤回支持。为什么这么难找到?因为的文档--disable-factory没有使用任何标准术语,如“在新进程(或地址空间)中启动;请勿重复使用现有实例”。
哈兹2015年


2
我无法相信运行这些项目的人会不断做出如此糟糕的决定。我们什么都不学吗?谁在乎保留几千字节的RAM?有人会认为,使终端不相互崩溃应该是第一要务。回到rxvt我猜。
托比亚

实际上,我可以rxvt向任何想要真正的多进程终端的人推荐。它具有Truetype字体支持,长行重新包装以及现代终端的大多数其他功能。
托比亚

Answers:


9

根据man gnome-terminal,您正在寻找的选项似乎是名称混乱的

   --disable-factory
             Do not register with the activation name server, do 
             not re-use an active terminal.

但是,该选项显然在较新的版本中已删除,因此不应依赖该选项。


这很好。等到笨蛋删除此功能时,我可能就不再在乎了。我在打开十多个终端窗口的测试设置中需要此设置:一些正在运行的minicom连接到嵌入式设备的各种串行线路,而另一些则位于测试脚本目录中,等等。gnome-terminal具有最好的功能,可以使用各种尺寸的美观,可读字体来调整大小。不幸的是,它会疯狂地泄漏内存,并在一周内增长到2GB。单独的流程将有助于解决此问题,使其更易于管理。
哈兹2015年

我尝试了rxvt,aterm,eterm,xterm,Terminator和其他一些工具。当然,它们都可以轻松地作为单独的进程运行,但是会以其他方式带来麻烦。记录在案的rxvt大小调整热键不起作用。Aterm和xterm简单地吸纳了那个部门。终结者奇怪的调整大小,可以更改字体大小而无需窗口大小。ETerm只是用四种固定字体完全改变了大小。我玩了大约30分钟的选件,然后将其卸载。
哈兹2015年

@Kaz xterm + xdotool --window "$WINDOWID"吗?
吉尔斯(Gilles)'“ SO-别再邪恶了”

@Kaz您可能已经过去了,但我强烈建议您urxvt结束rxvt。是的,gnome-terminal它在图形上仍然很出色,但是我以某种方式学会了不要错过它。这可能与新的窗口管理器有很多关系(i3现在使用,但并不适合所有人)。
cprn

查看其他基于libvte的终端中的任何一个吗?Gnome-terminal只是一个应用程序,最终与后端上的该库接口,这与上面提到的其余使用自己的终端实现的应用程序不同。
dragon788

17

由于采用了新的客户端/服务器架构(此处有详细信息),因此您必须启动的单独实例gnome-terminal-server。为此,您可以使用--app-id开关:

/usr/lib/gnome-terminal/gnome-terminal-server --app-id my.first.Terminal

然后使用客户端(具有相同的app-id)在新服务器内创建终端1

gnome-terminal --app-id my.first.Terminal
gnome-terminal --full-screen --app-id my.first.Terminal
......

另一个实例:

/usr/lib/gnome-terminal/gnome-terminal-server --app-id my.second.Terminal

和终端:

gnome-terminal --geometry 80x24+200+200 --app-id my.second.Terminal
gnome-terminal --app-id my.second.Terminal
.....

系统上的路径gnome-terminal-server可能不同。


1:请注意,“您有10秒钟的时间使用客户端在新服务器内创建终端”


您能举一个工作的例子还是看看这个问题?:unix.stackexchange.com/questions/304269/…–
cprn

@CyprianGuerra-在gnome终端中打开两个选项卡:在第一个选项卡中运行示例中的第一个命令(即启动新服务器),然后在不到10秒的时间内切换到第二个选项卡并运行第二个命令(以启动新客户)根据您的需求进行定制...
don_crissti

标签...我会尽力的。现在我可以知道它在内部不起作用screen
cprn

是否需要制表符?如:客户终端进程必须是服务器的子级吗?
cprn

@CyprianGuerra-只是一个例子,我所看到的并不需要它们……
don_crissti

1

我一直在努力使mc与其他终端窗口位于同一个alt-tab组中,并找到了该解决方案。

https://chrisirwin.ca/posts/multiple-instances-of-gnome-terminal/

这个人(克里斯·欧文)解决了他的邮件例程。除了alt-tab中的mc图标外,我对mc进行了同样的操作,获得了全部成功,但这很好。

您将需要3个文件:

/usr/share/dbus-1/services/org.gnome.Terminal-mc.service

[D-BUS Service]
Name=org.gnome.Terminal-mc
SystemdService=gnome-terminal-server-mc.service
Exec=/usr/lib/gnome-terminal-server --class=org.gnome.Terminal-mc --app-id org.gnome.Terminal-mc

/usr/lib/systemd/user/gnome-terminal-server-mc.service

[Unit]
Description=GNOME mc Terminal Server
[Service]
KillMode=process
Type=dbus
BusName=org.gnome.Terminal-mc
ExecStart=/usr/lib/gnome-terminal-server --class=org.gnome.Terminal-mc --app-id org.gnome.Terminal-mc

/usr/local/share/applications/mc.desktop

这是午夜指挥官的桌面条目。可以直接对其进行编辑/usr/share/applications/...,也可以/usr/local/share/applications/mc.desktop从中移出以强调它是您自己的修改副本。无论如何,Exec应将条目修改为具有gnome-terminal --app-id org.gnome.Terminal-mc -e mc

Exec=gnome-terminal --app-id org.gnome.Terminal-mc --hide-menubar --geometry=102x35 -e mc

以上全部存档

https://we.tl/t-6rH5jduMG7 这是.tar.gz,用于解压缩您的/。它将从上方创建文件,并为mc创建.svg图标。

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.