我正在使用两个不同版本的 Eclipse。由于插件之间存在冲突,我决定分别安装这两个版本,除了一个小问题外,它运行良好。我正在使用 Ubuntu-Gnome (14.04 LTS),我编辑了一个版本的 .desktop 文件,如下所示:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Custom Eclipse
Icon=custom-icon
Path=/opt/custom-eclipse/
Exec=/opt/custom-eclipse/custom-eclipse
StartupNotify=true
StartupWMClass=custom-eclipse
现在,让我烦恼的是:
应用程序按预期以自定义名称、WM_Class 和图标启动,但是,当应用程序完成启动时,这些属性由于某种原因发生变化,并且它与 gnome-shell 的其他 eclipse 安装分组在一起。
如果我进入xprop WM_CLASS
终端并单击窗口,它会返回WM_CLASS(STRING) = "Eclipse", "Eclipse"
。
编辑: 我最近刚刚从 Unity 桌面切换到 GNOME shell,并且使用 Unity 时窗口没有组合在一起。
另一项编辑: 我将 ubuntu 版本更新为 15.04,将 gnome-shell 更新为 3.14.4,但不幸的是问题仍然存在。我开始认为这只能通过编辑 Eclipse 源代码来修复...
答案1
StartupWMClass
不会改变实际的应用程序窗口类,而只是告诉桌面管理器应该使用什么窗口类来识别应用程序窗口。
问题是 EclipseEclipse
不管其版本如何都使用它作为窗口类。
如果您想要同时使用多个 Eclipse 版本并正确对窗口进行分组,并且能够将应用程序图标固定为收藏,则应该编辑plugin.xml
您正在使用的软件包。
对于 Eclipse Java EE IDE,我成功编辑plugin.xml
了
<eclipse-root>/plugins/org.eclipse.epp.package.jee_<current-version>
改变属性
plugin/extension/product/@name
plugin/extension/product/property[@name=appName]/@value
(不确定哪一个就足够了)设置为您喜欢的任何值。您应该将相同的值放入.desktop
文件中StartupWMClass
。
答案2
我想这不是答案,但你可以测试我的桌面文件。两个文件都以日食火星在一个Ubuntu 15.04和GNOME 3.16环境。
有了这个桌面文件,我有两个正在运行的实例不是分组。
cat ~/.local/share/applications/opt_eclipse_cpp.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Eclipse C++
Comment=Eclipse Integrated Development Environment
Icon=eclipse
Exec=/opt/eclipse-cpp/eclipse/eclipse
StartupNotify=true
StartupWMClass=Eclipse-CPP
cat ~/.local/share/applications/opt_eclipse.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Eclipse JEE
Comment=Eclipse Integrated Development Environment
Icon=eclipse
Exec=/opt/eclipse-jee/eclipse/eclipse
StartupNotify=true
StartupWMClass=Eclipse-Java
但
xprop WM_CLASS
给出
WM_CLASS(STRING) = "Eclipse", "Eclipse"
这是真的
答案3
StartupWMClass 仅用于对具有相同类名的窗口进行分组。如果程序支持 gtk 选项,则需要考虑使用 exec 命令更改类。
我刚刚在以应用模式运行的浏览器上尝试了此操作,目前类选项在 chrome 或 chromium 中不起作用,因此我使用了 Epiphany。这是我的 Trello 桌面启动器的一个示例。
[Desktop Entry]
Version=1.0
Type=Application
Exec=epiphany https://trello.com/ -a --profile=/epiphany/trello --class=trello
Icon=/MyIcons/trello.png
StartupNotify=true
Terminal=false
Name=Trello
StartupWMClass=trello