Как создать ярлыки для AppImage и tarball-приложений в Linux

В Linux многие приложения распространяются не в виде DEB/RPM, а как автономные исполняемые файлы — AppImage или распакованные tarball. Такие файлы запускаются без «официальной» установки, поэтому система не создаёт записи в меню и не интегрирует их в панель задач. В этом руководстве показано, как вручную интегрировать такие приложения в рабочее окружение, чтобы они вели себя как привычные установленные программы.
Важно: инструкции ориентированы на современные окружения рабочего стола, которые следуют спецификациям freedesktop.org (GNOME, KDE, XFCE и другие). Никаких сторонних менеджеров пакетов мы не используем — только пользовательский уровень (~/.local).
Почему это работает — короткое объяснение
.desktop-файлы — это стандартизированные описатели приложений. Рабочая среда читает их и создаёт записи в меню, иконки, а также умеет связывать запущенные окна с ярлыками через поле StartupWMClass. Чтобы значок объединялся с открытыми окнами, нужно указать правильный WM_CLASS (или wmclass на Wayland/GNOME).
Краткое определение: WMClass — строковый идентификатор окна приложения, используемый оконным менеджером для связывания окон с ярлыком.
Содержание
- Пошаговое руководство
- Показать скрытые файлы и папки
- Найти WMClass приложения (X11 и Wayland)
- Создать .desktop-файл — шаблон и пример
- Обработка пробелов и номеров версий
- Проверка и отладка
- Альтернативы и инструменты для автоматизации
- Чек-листы и критерии приёмки
- Частые ошибки и их исправление
- Примеры и готовые сниппеты
Шаг 1: Показать скрытые файлы и папки
Пользовательские ярлыки хранятся в:
/home/username/.local/share/applicationsОткройте файловый менеджер и включите показ скрытых файлов (обычно опция «Показать скрытые файлы» в меню — значок с тремя полосками или комбинация Ctrl+H). В корне домашнего каталога появится папка .local. Перейдите .local → share → applications. Если папки нет, создайте её вручную.
Шаг 2: Найти WMClass приложения
Чтобы значок приложения объединял открытые окна под одной иконкой в панели, нужно знать WMClass приложения.
На X11
- Запустите ваше приложение (AppImage или исполняемый из tarball).
- В терминале выполните:
xprop WM_CLASSКурсор превратится в прицел. Кликните по окну приложения — в терминале появится строка формата:
WM_CLASS(STRING) = "appname", "AppName"Запомните второе значение в кавычках (обычно это то, что нужно вставить в StartupWMClass).
На Wayland (GNOME)
Wayland не поддерживает xprop. В GNOME используйте Looking Glass:
- Нажмите Alt+F2, введите lg и нажмите Enter.
- Перейдите на вкладку Windows.
Там перечислены открытые окна с полем wmclass. Запишите его значение и используйте в StartupWMClass.
Примечание: в других окружениях для Wayland инструментов может не быть; иногда приходится полагаться на последнее значение WM_CLASS под XWayland или проверять документацию приложения.
Шаг 3: Создание .desktop-файла
Откройте любой текстовый редактор и вставьте шаблон. Сохраните файл как ApplicationName.desktop в ~/.local/share/applications/.
[Desktop Entry]
Type=Application
Name=ApplicationName
GenericName=ApplicationType
Icon=/home/Username/.local/share/applications/ApplicationIcon.extension
Exec=/home/Username/ApplicationDirectory/ApplicationExecutable.extension
Terminal=false
Categories=ApplicationSubCategory;ApplicationCategory;
Keywords=Keyword1;Keyword2;Keyword3;
StartupWMClass=ApplicationWMClassПояснения по ключевым полям:
- [Desktop Entry] — идентификатор файла как ярлыка.
- Type — обычно Application.
- Name — имя приложения, отображаемое в меню.
- GenericName — краткое описание типа (например, “Текстовый редактор“).
- Icon — путь к файлу иконки (PNG или SVG). Можно положить иконку в ~/.local/share/icons/ или в ту же папку, где лежит исполняемый файл.
- Exec — команда запуска приложения. Указывайте полный путь или используйте wrapper-скрипт.
- Terminal — true для консольных приложений, false для GUI.
- Categories — используйте категории freedesktop.org, чтобы приложение появилось в нужном разделе меню.
- Keywords — слова для поиска.
- StartupWMClass — значение WMClass, найденное на предыдущем шаге.
Пример для Bitwarden AppImage (путь — папка Загрузки):
[Desktop Entry]
Type=Application
Name=Bitwarden
GenericName=Password Manager
Icon=/home/adam/Downloads/Bitwarden.png
Exec=/home/adam/Downloads/Bitwarden-22.6.2-x86_64.AppImage
Terminal=false
Categories=Security;System;
Keywords=Bitwarden;Crypto;Passwords;Security;
StartupWMClass=bitwardenСохраните как: /home/adam/.local/share/applications/bitwarden.desktop
После этого Bitwarden появится в меню и его можно закрепить в доке:
Дополнительные советы по Exec и правам
- Сделайте AppImage исполняемым:
chmod +x /home/adam/Downloads/Bitwarden-22.6.2-x86_64.AppImageЕсли приложение требует рабочий каталог, добавьте поле Path=/home/adam/Downloads
Если нужно передать параметры, используйте Exec с ними: Exec=/home/adam/приложение %u
Для обработки пробелов в путях берите путь в кавычки в Exec и Icon:
Exec="/home/Username/Application Directory/Application Executable.extension"
Icon="/home/Username/Application Directory/Icon File.png"- Обёртка-скрипт: если приложение сложно запускать напрямую (переменные окружения, предварительная подготовка), создайте скрипт /home/username/bin/run-myapp.sh, сделайте его исполняемым и укажите Exec=/home/username/bin/run-myapp.sh.
Пример wrapper:
#!/bin/sh
cd /home/username/AppDir
export MYAPP_CONFIG=/home/username/.config/myapp
./MyAppExecutable "$@"Обработка версий и масок
Если исполняемый файл содержит номер версии в имени и обновляется часто, KDE поддерживает символ * (звёздочка) в Exec для подстановки. Пример:
Exec=/home/Username/ApplicationDirectory/ApplicationExecutable-v*.extensionGNOME не поддерживает wildcards в .desktop-файлах; в GNOME проще переименовать исполняемый файл (убрать версию) или использовать wrapper-скрипт с фиксированным именем.
Проверка и отладка
Если приложение не отображается или не запускается из меню:
- Убедитесь, что .desktop-файл имеет корректный синтаксис и кодировку UTF-8.
- Проверьте права: файл .desktop не обязательно должен быть исполняемым, но сам исполняемый файл (AppImage) должен иметь bit +x.
- Проверьте Exec: полный путь и имя файла должны быть верными.
- Убедитесь, что StartupWMClass совпадает с тем, что вернул xprop или Looking Glass.
- Перезапустите сессию рабочего стола (выйдите и зайдите снова) или выполните:
update-desktop-database ~/.local/share/applications || true(Не все окружения используют эту команду, но она полезна для обновления локальной базы .desktop.)
Частые ошибки и их решения
- Приложение запускается, но значок не объединяется с его окнами: проверьте StartupWMClass — часто нужны строчные/прописные буквы.
- Меню не видит новое приложение: проверьте синтаксис .desktop, особенно присутствие строки [Desktop Entry] и Type=Application.
- Иконка не отображается: используйте абсолютный путь к PNG/SVG или положите файл в ~/.local/share/icons и укажите имя без расширения.
- Приложение требует терминала: установите Terminal=true.
Альтернативы и автоматизация
Если вручную не хочется управлять множеством AppImage, есть инструменты:
- AppImageLauncher — интегрирует AppImage в систему, создаёт .desktop и папку в ~/Applications.
- desktop-file-install — утилита для установки .desktop с проверками.
- appimaged — демон, который автоматически регистрирует AppImage при запуске.
Эти инструменты экономят время, но ручной подход даёт тонкий контроль и подходит для любых tarball/неформатных пакетов.
Чек-лист перед распространением ярлыка среди пользователей
Для создателя пакета или администратора:
- Проверен полный путь Exec и Icon.
- Исполняемый файл имеет +x.
- StartupWMClass верный (проверено xprop/Looking Glass).
- Categories выбраны корректно.
- Присутствует GenericName и Keywords для поиска.
- Протестировано закрепление в панели/доке в целевом DE.
Ролевая разбивка:
- Пользователь: создать ~/.local/share/applications, сохранить .desktop, сделать AppImage исполняемым.
- Системный администратор: при необходимости установить .desktop в /usr/share/applications для всех пользователей.
- Поставщик ПО: включить информацию о StartupWMClass в документацию приложения.
Критерии приёмки
- Запуск приложения из меню — выполняется.
- Значок отображается в меню и в доке.
- Запущенное окно объединяется с ярлыком одного приложения (активный пин/группа).
- Поиск по ключевым словам находит приложение.
- Иконка выглядит корректно на разных масштабах дисплея (рекомендуется SVG).
Примеры и сниппеты
Простой .desktop для графического приложения:
[Desktop Entry]
Type=Application
Name=MyApp
GenericName=Utilities
Icon=/home/username/.local/share/icons/myapp.svg
Exec=/home/username/Apps/MyApp.AppImage
Terminal=false
Categories=Utility;
Keywords=myapp;tool;utility;
StartupWMClass=MyAppЕсли путь содержит пробелы (пример с кавычками):
Exec="/home/username/Applications/My App Folder/MyApp.AppImage"Wrapper-скрипт + .desktop:
# /home/username/bin/run-myapp.sh
#!/bin/sh
cd "/home/username/Applications/My App Folder"
./MyApp.AppImage "$@".desktop:
[Desktop Entry]
Type=Application
Name=MyApp
Exec=/home/username/bin/run-myapp.sh
Icon=/home/username/Applications/My App Folder/myapp.png
Terminal=false
StartupWMClass=MyAppКогда это может не сработать
- Окружение рабочего стола не соблюдает freedesktop стандарты — редкие кастомные DE могут игнорировать ~/.local/share/applications.
- Приложение запускает дочерние процессы с другими WM_CLASS — тогда ярлык не будет объединять все окна.
- Wayland-специфические ограничения: некоторые инструменты для поиска wmclass недоступны вне GNOME.
Быстрый сценарий отладки (Runbook)
- Проверьте, запускается ли AppImage вручную из терминала.
- Выполните xprop WM_CLASS и сохраните значение; для Wayland — используйте lg в GNOME.
- Создайте .desktop в ~/.local/share/applications/ с StartupWMClass.
- Убедитесь, что AppImage +x; если нет — chmod +x.
- Перезапустите сессию или выполните update-desktop-database.
- Если окно не объединяется — протестируйте различные варианты WMClass (в одном приложении может быть несколько).
Небольшая таблица совместимости (ориентир)
- GNOME (X11): xprop работает, .desktop поддерживается
- GNOME (Wayland): Looking Glass для wmclass, .desktop поддерживается
- KDE Plasma: xprop работает, wildcard в Exec поддерживается, .desktop поддерживается
- XFCE: похож на X11, .desktop поддерживается
- Сторонние окружения: поведение может отличаться
Заключение
Создание пользовательских .desktop-файлов — надёжный способ интегрировать AppImage и распакованные tarball-приложения в вашу систему. Процесс включает показ скрытых файлов, определение WMClass, создание корректного .desktop с Exec, Icon и StartupWMClass, а также учёт нюансов пробелов и версий. Для массового управления рассмотрите AppImageLauncher или автоматизацию через системные средства.
Важно сохранять аккуратность: используйте абсолютные пути, проверяйте права и тестируйте поведение в целевом окружении.
Дополнительная быстрая шпаргалка (cheat sheet):
- Путь к ярлыкам пользователя: ~/.local/share/applications/
- Сделать AppImage исполняемым: chmod +x path/to/app.AppImage
- Узнать WMClass (X11): xprop WM_CLASS -> клик по окну
- GNOME Wayland: Alt+F2 → lg → Windows
- При пробелах: берите Exec и Icon в кавычки
Конец руководства.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента