【问题标题】:How to bundle Java App to associated .desktop file in Gnome/Ubuntu?如何将 Java 应用程序捆绑到 Gnome/Ubuntu 中的关联 .desktop 文件?
【发布时间】: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/… 阅读此文告诉你如何创建一个。

标签: java linux ubuntu javafx gnome


【解决方案1】:
   [Desktop Entry]
   ....
   StartupWMClass=<fully qualified Application class name>

例子:

   [Desktop Entry]
   ....
   StartupWMClass=org.mycompany.app.Application

【讨论】:

    【解决方案2】:
    1. 打开终端
    2. 运行:xprop WM_CLASS
    3. 点击您的应用程序窗口
    4. 复制终端中生成的字符串之一
    5. 将其添加到您的 .desktop 文件中。关键是“StartupWMClass”。所以它看起来像 StartupWMClass="你之前复制的字符串。

    应该可以的。

    例如,这就是我的 firefox .desktop 的样子

     [Desktop Entry]
    ...
        StartupWMClass=Firefox
        StartupNotify=true
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 2015-12-04
      • 1970-01-01
      • 2018-06-01
      • 2011-08-26
      • 1970-01-01
      • 2011-05-12
      • 2018-05-10
      相关资源
      最近更新 更多