Предыстория:
Я бы хотел:
- Доставить приложение в виде простого TAR, который пользователи извлекают и запускают
- Чтобы у этого приложения был правильный значок приложения.
Нет менеджера пакетов, нет sudo, нет установочного скрипта.
Из стандартных и различных статей я вижу, что для значков приложений требуется файл .desktop
которому требуются абсолютные пути к исполняемому файлу (ugh) и значку приложения. Я также вижу, что Ubuntu Unity (возможно, другие) поддерживает файлы .desktop
в ~/.local/share/applications
Windows поддерживает это, встраивая иконки в исполняемые файлы. Mac OS X имеет относительную структуру каталогов для приложений, включающую значок.
«Взломанное» решение:
Мое «хакерское» решение заключается в том, чтобы при запуске приложения определить, существует ли файл myApp.desktop
в ~/.local/share/applications/
, и, если нет, написать его (включая полный абсолютный путь к исполняемому файлу и значку), запустить новое приложение myApp. обработать и выйти.
Надеюсь, что новый процесс myApp поднимет значок приложения. и иногда это так.
Эта проблема:
Эта проблема, я должен sleep 2
секунды, прежде чем запускать новый процесс. Если я это сделаю, значок поднят. Если я этого не сделаю, для моего приложения нет значка.
Я попытался перезагрузить кеш иконок GTK вместо сна (с помощью gtk-update-icon-cache /usr/share/icons/hicolor
), но это не сработало.
Кто-нибудь знает, как я могу избежать этой задержки и обеспечить сбор только что записанного файла .desktop
? (Я сбрасываю и закрываю файл.) Или есть идея получше моего хакерского решения?
Обновление: Интересно, что при тестировании простого скрипта, который записывает файл .desktop
(вручную или с помощью xdg-desktop-menu) и запускает приложение, ему также требуется 2-секундная задержка, иначе значок не появится. Захватывающий.