Имя .desktop файла для Java-приложения

Вопрос или проблема

Приложение на Java, которое я написал, должно запускаться с помощью файла .desktop, чтобы я мог добавить его в ubuntu-dash.

Оно работает только тогда, когда имя файла .desktop совпадает с полным именем моего стартового класса: имя должно быть точно org-mypackage-MyMainClass.desktop.

Если, например, имя только MainClass.desktop, приложение запускается, но значок в ubuntu-dash не отображается, и нельзя прикрепить его на панель.

Почему, и как этого избежать?

Я нашёл решение здесь: https://stackoverflow.com/a/69404254: установите поле StartupWmClass с полным именем класса java (но с дефисами вместо точек) в файле .desktop:

Name=My application name
StartupWMClass=org-mypackage-MyMainClass

Благодаря этому решению, сам файл .desktop может иметь любое имя: приложение всегда будет известно как “My application name”.

Ответ или решение

Для создания .desktop-файла для вашего Java-приложения в Ubuntu, необходимо учитывать несколько важных моментов, чтобы обеспечить его корректное отображение и использование в ubuntu-dash.

Проблема с названием файла

Вы столкнулись с ситуацией, когда .desktop-файл должен иметь имя, точно соответствующее полностью квалифицированному имени класса-старта вашего Java-приложения. Однако, имени, состоящего только из названия класса, недостаточно, что приводит к некорректному отображению и невозможности закрепления иконки приложения на панели.

Решение проблемы с использованием StartupWMClass

Как вы уже заметили, решение заключается в использовании параметра StartupWMClass внутри .desktop-файла. Этот параметр позволяет системе правильно идентифицировать окно вашего приложения и связывать его с иконкой. Вот как это сделать:

  1. Создание .desktop-файла: Вы можете создать файл с любым названием, например, MyApp.desktop.

  2. Структура .desktop-файла: Определите параметры внутри файла следующим образом:

    [Desktop Entry]
    Version=1.0
    Type=Application
    Name=Имя вашего приложения
    Exec=java -jar /путь/к/вашему/приложению.jar
    Icon=/путь/к/значку.png
    Terminal=false
    StartupWMClass=org-mypackage-MyMainClass
  3. Описание параметров:

    • Name — имя вашего приложения, которое будет отображаться.
    • Exec — команда для запуска Java-приложения.
    • Icon — путь к иконке вашего приложения.
    • Terminal — указывает, нужно ли запускать в терминале (обычно false для графических приложений).
    • StartupWMClass — важный параметр: замените точки в полностью квалифицированном имени вашего класса на дефисы. Это связывает окно вашего приложения с иконкой.

Как это работает?

Ubuntu использует WM_CLASS для идентификации окон приложений. Задав правильное значение StartupWMClass, вы гарантируете, что ваше приложение распознается корректно. Таким образом, система сможет отобразить правильную иконку и позволит закрепить приложение на панели.

Вывод

Это небольшое уточнение позволяет сделать ваш .desktop-файл более гибким и независимым от названия самого файла. Использование StartupWMClass — это ключевой аспект обеспечения правильного функционирования Java-приложений в среде GNOME. Таким образом, вы можете обеспечить профессиональный вид и функциональность вашего приложения в Ubuntu.

Оцените материал
Добавить комментарий

Капча загружается...