如何将 Java 应用程序捆绑到 Gnome/Ubuntu 中的关联 .desktop 文件?
Posted
技术标签:
【中文标题】如何将 Java 应用程序捆绑到 Gnome/Ubuntu 中的关联 .desktop 文件?【英文标题】:How to bundle Java App to associated .desktop file in Gnome/Ubuntu? 【发布时间】:2020-06-13 03:05:33 【问题描述】:抱歉,我还没有找到任何解决方案。我有一个可执行的 jar 文件(基于 JavaFx 的应用程序),我可以轻松地从 bash 开始:
java -jar myapp.jar
我希望这个应用程序从 Ubuntu 的侧面板启动,所以我正在创建 .desktop 文件并将其放在 /usr/share/applications 目录中。它成功了,我在应用程序列表中看到了我的应用程序,将其标记为收藏,它出现在侧面板中以供快速访问。但是当我运行它时,Gnome 会创建另一个关联的 .desktop 文件(临时)并在其下放置一个点,而不是使用我的。
那么,如何将我的应用与 .desktop 文件捆绑在一起?因此,当我运行我的应用程序时,我希望 Gnome 在正确的 .desktop 文件下放置一个点(我从中运行它!!)。例如,在运行 Visual Code 或 Intellij Idea 时,我在它们下面有一个点,即使我是从 bash 中执行的。真的,我搜索 idea.desktop 文件,查看它使用哪个可执行文件,转到该可执行文件,然后从 bash 运行它,它会链接到 idea 的图标!
/snap/bin/intellij-idea-ultimate
当然,我不确定它是否是通常的可执行文件,但无论如何它是如何工作的?我认为 .desktop 文件负责这种链接,但是如果我从 bash 运行可执行文件并且 gnome 会在右侧图标下放置一个点,而无需从此图标开始...
【问题讨论】:
@NomadMaker 以及它如何适用于我的问题? 首先有一个不错的 gradle 插件,它可以构建运行应用程序的脚本,它被称为应用程序插件。 此外,为 java 应用程序构建桌面文件应该没有区别。只需使用 java 可执行文件并给它 -jar your.jar 参数。 developer.gnome.org/integration-guide/stable/… 阅读此文告诉你如何创建一个。 【参考方案1】: [Desktop Entry]
....
StartupWMClass=<fully qualified Application class name>
例子:
[Desktop Entry]
....
StartupWMClass=org.mycompany.app.Application
【讨论】:
【参考方案2】:-
打开终端
运行:xprop WM_CLASS
点击您的应用程序窗口
复制终端中生成的字符串之一
将其添加到您的 .desktop 文件中。关键是“StartupWMClass”。所以它看起来像 StartupWMClass="你之前复制的字符串。
应该可以的。
例如,这就是我的 firefox .desktop 的样子
[Desktop Entry]
...
StartupWMClass=Firefox
StartupNotify=true
【讨论】:
以上是关于如何将 Java 应用程序捆绑到 Gnome/Ubuntu 中的关联 .desktop 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 jnlp 与 OSX 停靠图标捆绑在一起;这在 java 首选项中似乎不再可能