Как вручную создать ярлык приложения (.desktop) в Linux

Зачем это нужно
Если вы запускаете приложения как автономные исполняемые файлы (AppImage) или распакованные из tarball, они часто не добавляют себя в системное меню. Без этого не будут пункты в меню приложений и возможности закреплять программу на панели задач. Создав .desktop-файл, вы интегрируете такое приложение в среду рабочего стола почти так же, как если бы оно было установлено системой.
Важно: большинство современных окружений рабочего стола следуют спецификациям freedesktop.org. Поэтому .desktop-файлы работают одинаково в GNOME, KDE, XFCE и других.
Содержание этой статьи
- Краткое руководство: шаги 1–3
- Подробные объяснения полей .desktop
- Как найти WMClass для X11 и Wayland
- Советы по пробелам в путях и версиям
- Чеклисты для пользователей и админов
- Типичные ошибки и исправления
- Мини-методология и шаблоны .desktop
- Краткий глоссарий и рекомендации по безопасности
Шаг 1: Показать скрытые файлы и папки
Пользовательские пункты меню создаются из .desktop-файлов в скрытом каталоге в домашней папке:
/home/username/.local/share/applicationsОткройте файловый менеджер и включите отображение скрытых файлов. В большинстве FM это делается через меню (иконка с тремя горизонтальными полосками) → «Показать скрытые файлы» или клавишей Ctrl+H.

После включения в домашней папке появятся элементы, начинающиеся с точки, включая .local. Перейдите в .local → share → applications. Если каталога нет, создайте его сами — это нормальная практика для локальных ярлыков.

Важно: путь в .local специфичен для каждого пользователя. Не помещайте пользовательские .desktop в системные каталоги (например, /usr/share/applications), если вы не управляете системой.
Шаг 2: Как найти WMClass приложения (для корректной группировки окон)
WMClass — это идентификатор окна приложения. Окружения рабочего стола используют его, чтобы группировать окно с ярлыком: одна иконка для иконки запуска и для открытых окон приложения. Без StartupWMClass в .desktop вы получите только ярлык для запуска, а открытые окна могут отображаться отдельными значками.
Поиск WMClass в X11
Если ваша сессия использует X11, выполните в терминале:
xprop WM_CLASSКурсор превратится в прицел. Кликните по окну приложения. Терминал выведет строку вида:
WM_CLASS(STRING) = "appname", "AppName"Второе значение в кавычках — это StartupWMClass, которое обычно используют в .desktop. Запомните его.
Пример: для Bitwarden вывод может выглядеть как "bitwarden", "Bitwarden" — используйте bitwarden.

Поиск WMClass в Wayland (GNOME)
Wayland не поддерживает xprop так же просто. В GNOME можно использовать Looking Glass:
- Нажмите Alt+F2, введите
lgи нажмите Enter. - Перейдите на вкладку Windows.
Там вы увидите список открытых окон и их поля, включая wmclass.

Заметка: этот метод работает в GNOME. Другие окружения под Wayland могут не иметь аналогичного инструмента.
Шаг 3: Создание .desktop-файла
Откройте текстовый редактор и вставьте шаблон .desktop:
[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Сохраните файл под именем ApplicationName.desktop в ~/.local/share/applications/.
Пояснения по полям (коротко и ясно):
- [Desktop Entry] — обязательная шапка файла. Оставьте без изменений.
- Type — тип объекта; для приложений используйте
Application. - Name — отображаемое имя приложения в меню.
- GenericName — общий тип приложения, например «Текстовый редактор» или «Менеджер паролей».
- Icon — путь к файлу иконки (PNG/SVG предпочтительны). Можно использовать системное имя иконки без пути.
- Exec — полный путь к исполняемому файлу или команда запуска.
- Terminal —
falseдля GUI-приложений,trueдля консольных. - 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После сохранения рекомендуется установить разрешение на выполнение для .desktop-файла, чтобы файловый менеджер пометил его как надёжный ярлык:
chmod +x ~/.local/share/applications/ApplicationName.desktopНекоторые десктопные окружения требуют дополнительного «доверия» для ярлыков, если вы открываете их впервые через файловый менеджер — следуйте подсказкам среды.

Обработка пробелов в путях
Если в пути к иконке или исполняемому файлу есть пробелы, заключайте значение в кавычки. Пример неправильной записи:
Exec=/home/Username/Application Directory/Application Executable.extensionПравильно:
Exec="/home/Username/Application Directory/Application Executable.extension"Важно: используйте обычные прямые кавычки ".
Обработка версий в именах файлов
Если исполняемый файл содержит номер версии, то при обновлении придётся править .desktop. В KDE можно использовать подстановочный символ *:
Exec=/home/Username/ApplicationDirectory/ApplicationExecutable-v*.extensionGNOME обычно не поддерживает такие подстановки в .desktop. Решения:
- Переименовать исполняемый файл и удалить номер версии.
- Создать символьную ссылку на текущую версию:
ln -s ApplicationExecutable-v2.3 ApplicationExecutableи использовать ссылку в Exec.
Частые ошибки и способы их исправления
- Ярлык не отображается в меню: проверьте, что файл в
~/.local/share/applicationsи имеет корректный синтаксис. Запуститеdesktop-file-validate(если доступно) для проверки. - Иконка не отображается: проверьте путь и формат (PNG/SVG). Попробуйте перезапустить окружение рабочего стола или выполнить
gtk-update-icon-cacheдля системных иконок. - Окно не группируется с ярлыком: убедитесь, что поле
StartupWMClassсовпадает с WMClass приложения. - Файловый менеджер просит подтвердить доверие: пометьте .desktop как исполняемый (
chmod +x) и подтвердите действие в UI.
Совет: иногда помогает выйти и войти в сессию или выполнить команду update-desktop-database --user.
Безопасность и права
- Никогда не используйте незнакомые .desktop-файлы, полученные из ненадёжных источников. Они содержат команды Exec, которые могут выполнить произвольный код.
- Храните пользовательские .desktop в
~/.local/share/applications/, а системные оставьте в/usr/share/applications/для централизованного управления. - Привычная команда для установки прав:
chmod 644 ~/.local/share/applications/ApplicationName.desktop
chmod +x ~/.local/share/applications/ApplicationName.desktop # для доверия/выполненияПрава 644 делают файл читаемым для пользователя и системы; метка на выполнение требуется только для некоторых FM/DE.
Альтернативные подходы
- Менеджеры значков/композеров: некоторые окружения позволяют создавать пункт меню через графический интерфейс (например, KDE Menu Editor). Это безопасно и удобно.
- Скрипт-обёртка: если приложение требует окружения, вы можете создать оболочку-скрипт, который устанавливает переменные среды и запускает исполняемый файл; в .desktop укажите путь до скрипта.
- Использовать AppImage с интеграцией: некоторые AppImage поддерживают автоинтеграцию в меню (AppImageLauncher).
Мини-методология: быстрый SOP для создания .desktop (4 шага)
- Включите скрытые файлы и перейдите в
~/.local/share/applications. - Запустите приложение и найдите WMClass (xprop или Looking Glass).
- Создайте .desktop-шаблон, заполните поля и сохраните в каталоге.
- Установите флаг выполнения и проверьте появление пункта в меню.
Этот цикл можно выполнять для каждого автономного приложения, которое вы хотите интегрировать.
Ролевые чеклисты
Для обычного пользователя:
- Включил показ скрытых файлов
- [ ] Создал
~/.local/share/applications, если отсутствует - Записал WMClass
- Заполнил .desktop и присвоил права на запуск
- Проверил отображение в меню
Для системного администратора (в корпоративной среде):
- Убедиться, что политика безопасности разрешает локальные .desktop
- Для массовой выдачи использовать /usr/share/applications с управляемыми правами
- Проверить, что Exec не вызывает нежелательных команд через sudo
Примеры шаблонов .desktop (несколько вариантов)
Обычный GUI-приложение:
[Desktop Entry]
Type=Application
Name=MyApp
GenericName=Example App
Icon=/home/user/.icons/myapp.png
Exec=/home/user/Apps/MyApp/myapp
Terminal=false
Categories=Utility;Application
Keywords=example;tool;myapp
StartupWMClass=MyAppWMClassЕсли нужно вызвать скрипт с аргументами:
[Desktop Entry]
Type=Application
Name=MyScript
Exec=/home/user/scripts/run-my-script.sh --option
Terminal=true
Icon=/home/user/.icons/script.png
Categories=UtilityПример с кавычками для пробелов:
[Desktop Entry]
Type=Application
Name=Weird Name
Exec="/home/user/My Apps/Weird App/WeirdExecutable"
Icon="/home/user/My Apps/Weird App/icon.svg"
Terminal=falseКритерии приёмки
- Ярлык появляется в системном меню под указанным Name.
- Иконка отображается корректно или доступна через системную тему.
- Запуск из меню открывает приложение.
- Открытые окна приложения группируются с ярлыком (если задан StartupWMClass).
Тест-кейсы
- Создать .desktop, нажать в меню — приложение запускается.
- Перезагрузить окружение — ярлык остаётся.
- Поменять Exec на несуществующий путь — меню показывает ошибку при запуске.
- Установить кавычки в Exec для пути с пробелами — приложение запускается.
Маленький глоссарий (1 строка)
- .desktop — текстовый файл, описывающий пункт меню и способ запуска приложения.
- WMClass / StartupWMClass — идентификатор окна для группировки иконок.
- AppImage — автономный исполняемый формат для Linux.
Советы по локали и совместимости
- Пути и имена в .desktop чувствительны к регистру.
- Для совместимости используйте абсолютные пути.
- Если хотите локализовать имя и описание, используйте
Name[ru]=МоёПриложениеиComment[ru]=Короткое описание.
Пример локализованного поля:
Name=MyApp
Name[ru]=МоёПриложение
Comment[ru]=Простой пример ярлыкаЗамечания по конфиденциальности
Если ваше приложение работает с личными данными, убедитесь, что Exec не запускает процессы с повышенными правами без контроля. Локальные .desktop-файлы видимы только пользователю, если созданы в ~/.local.
Итог и краткое резюме
Создание .desktop-файла — простой и мощный способ интегрировать автономные приложения в рабочее окружение Linux. Процесс сводится к трём основным шагам: показать скрытые файлы, узнать WMClass (при необходимости) и составить .desktop-файл с корректным Exec и Icon. В дополнение, учитывайте права на исполнение, обработку пробелов и возможные версии в именах файлов.
Важно: всегда проверяйте команды Exec перед тем, как доверять .desktop-файлу. Для массовых или корпоративных установок предпочтительнее использовать системные каталоги и автоматизированные инструменты развертывания.
Спасибо — теперь вы можете добавлять AppImage и распакованные приложения в меню и закреплять их в панели так же легко, как установленные через пакетный менеджер.
Похожие материалы
Защита файлов и папок паролем в Linux
Как добавить поиск на сайт: Adsense и бесплатные альтернативы
Как zip-овать папку в Linux — руководство
Подбор параметра и Поиск решения в Excel