![Gnome:是否可以获取与用于启动该应用程序的图标关联的应用程序的每个实例?](https://linux22.com/image/153411/Gnome%EF%BC%9A%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%8F%96%E4%B8%8E%E7%94%A8%E4%BA%8E%E5%90%AF%E5%8A%A8%E8%AF%A5%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%9B%BE%E6%A0%87%E5%85%B3%E8%81%94%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%AF%8F%E4%B8%AA%E5%AE%9E%E4%BE%8B%EF%BC%9F.png)
我使用的是 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
选项对于使用我们的服务名称而不是内置服务名称至关重要。