运行真正的 gnome-terminal 多进程实例

运行真正的 gnome-terminal 多进程实例

如果您已经gnome-terminal运行并想要该程序的新实例,您可能会认为gnome-terminal &从 shell 运行就可以了。

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

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

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

答案1

由于新的客户端/服务器架构(详情这里) 您必须启动 的单独实例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 秒的时间使用客户端在新服务器内创建终端”

答案2

根据man gnome-terminal,您正在寻找的选项似乎是名称令人困惑的

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

然而,这个选项显然是在较新版本中已删除所以不应该依赖。

答案3

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

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

这个人(克里斯·欧文)在他的邮件例程中解决了这个问题。我对 mc 做了同样的事情,除了 alt-tab 中的 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 图标。

相关内容