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