java - 如何将 Java 应用程序捆绑到 Gnome/Ubuntu 中的关联 .desktop 文件?

标签 java linux ubuntu javafx gnome

抱歉,我还没有找到任何解决方案。我有一个可执行的 jar 文件(基于 JavaFx 的应用程序),我可以轻松地从 bash 开始:

java -jar myapp.jar

我希望这个应用程序从 Ubuntu 的侧面板开始,所以我正在创建 .desktop 文件并将其放在/usr/share/applications 目录中。它成功了,我在应用程序列表中看到了我的应用程序,将其标记为 Collection ,它出现在侧面板中以供快速访问。但是当我运行它时,Gnome 会创建另一个关联的 .desktop 文件(临时)并在其下放置一个点,而不是使用我的。

那么,如何将我的应用程序与 .desktop 文件捆绑在一起?因此,当我运行我的应用程序时,我希望 Gnome 在正确的 .desktop 文件下放置一个点(我从中运行它!!)。例如,在运行 Visual Code 或 Intellij Idea 时,我在它们下面有一个点,即使我是从 bash 中执行的。真的,我搜索 idea.desktop 文件,查看它使用哪个可执行文件,转到该可执行文件并从 bash 运行它,它会链接到 idea 的图标!
/snap/bin/intellij-idea-ultimate

当然,我不确定它是否是通常的可执行文件,但无论如何它是如何工作的?我认为 .desktop 文件负责这种链接,但是如果我从 bash 运行可执行文件并且 gnome 在正确的图标下放置一个点,而不需要从这个图标开始......

enter image description here

最佳答案

  • 打开终端
  • 运行:xprop WM_CLASS
  • 点击您的申请窗口
  • 复制终端中生成的字符串之一
  • 将其添加到您的 .desktop 文件中。关键是“StartupWMClass”。所以它看起来像 StartupWMClass="你之前复制的字符串。

  • 那应该这样做。
    例如,这就是我的 firefox .desktop 的样子
     [Desktop Entry]
    ...
        StartupWMClass=Firefox
        StartupNotify=true
    

    关于java - 如何将 Java 应用程序捆绑到 Gnome/Ubuntu 中的关联 .desktop 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60461397/

    相关文章:

    java - GC 分配的堆空间为 2048 mb 后,堆内存未释放小于 1200 mb

    java - 透明背景上的文物

    java - 如何解析Sub JSONArray并显示图像?

    linux - 新的 kubernetes 部署 (kubernetes-cli) 自动创建 1000 个副本

    c - Linux 上的 Breakpad 测试示例错误

    c# - 如何使用 Mono 查看 .Net/C# 中的 Unicode 规范化算法?

    java - 将外部资源文件夹添加到 Spring Boot

    linux - 用 bash 脚本解析 `ls -l` 的结果

    ubuntu - 允许用户通过 ssh 连接到 EC2 Ubuntu 实例?

    php - 如何在 Linux PHP 中使用 require/include