我正在使用 Gnome 3.30 及更高版本的 org.gnome.Terminal.desktop,我有两个额外的 .desktop 文件Exec=gnome-terminal --window-with-profile=XXX
,其中 profile XXX 使用自定义命令ssh kalle@XXX
,因此我可以轻松打开终端以在其他机器上工作。
我不喜欢的是,尤其是在为每台本地和其他机器使用多个终端窗口时,所有窗口都与 org.gnome.Terminal.desktop 的图标相关联。
有没有办法让每个窗口与它所属的图标相关联?
顺便说一句:当我开始使用仍在开发中的 Eclipse 版本时,我遇到了同样的问题。为了安全起见,我保留了以前的稳定版本,并为新版本创建了另一个 .desktop 文件。当我开始将软件站点从旧站点复制并粘贴到新站点时,两个窗口都与旧站点的图标相关联,尽管与 gnome-terminal 问题相反,这些是不同的应用程序。即使重命名两个可执行文件之一也没有改变任何东西。
我找到了解决方案。因为 'org.gnome.Terminal' 听起来像是 D-Bus 服务名称,所以我在打开终端后查看了系统日志。重要的部分是:
dbus-daemon:通过 systemd 激活:service name='org.gnome.Terminal' unit='gnome-terminal-server.service'
我推测创建一个名为 'org.gnome.Terminal.XXX' 的新服务并将机器 XXX 的 .desktop 文件重命名为 'org.gnome.Terminal.XXX.desktop' 可以解决问题,但实际上,名称.desktop 文件无关紧要。步骤如下:
sudo cp /usr/share/dbus-1/services/org.gnome.Terminal{,.XXX}.service
Name=org.gnome.Terminal.XXX
SystemdService=gnome-terminal-server-XXX.service
Exec=/usr/lib/gnome-terminal/gnome-terminal-server --app-id org.gnome.Terminal.XXX
sudo cp /usr/lib/systemd/user/gnome-terminal-server{,-XXX}.service
Description=GNOME Terminal Server XXX
BusName=org.gnome.Terminal.XXX
ExecStart=/usr/lib/gnome-terminal/gnome-terminal-server --app-id org.gnome.Terminal.XXX
Exec=gnome-terminal --window-with-profile=XXX --app-id org.gnome.Terminal.XXX
该
--app-id
选项对于使用我们的服务名称而不是内置名称至关重要。