Гид по технологиям

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

7 min read Linux Обновлено 13 Apr 2026
Создать ярлык приложения .desktop в Linux
Создать ярлык приложения .desktop в Linux

Рабочий стол с ноутбуком, книгой и табличкой с надписью YOU GOT THIS.

Зачем это нужно

Если вы запускаете приложения как автономные исполняемые файлы (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 и вложенные каталоги.

Важно: путь в .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.

Десктоп Ubuntu с открытым терминалом и окном Bitwarden.

Поиск WMClass в Wayland (GNOME)

Wayland не поддерживает xprop так же просто. В GNOME можно использовать Looking Glass:

  1. Нажмите Alt+F2, введите lg и нажмите Enter.
  2. Перейдите на вкладку Windows.

Там вы увидите список открытых окон и их поля, включая wmclass.

GNOME Shell Looking Glass с вкладкой 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

Некоторые десктопные окружения требуют дополнительного «доверия» для ярлыков, если вы открываете их впервые через файловый менеджер — следуйте подсказкам среды.

Панель задач Ubuntu с Bitwarden закреплённым в Dock и видимым в меню приложений.

Обработка пробелов в путях

Если в пути к иконке или исполняемому файлу есть пробелы, заключайте значение в кавычки. Пример неправильной записи:

Exec=/home/Username/Application Directory/Application Executable.extension

Правильно:

Exec="/home/Username/Application Directory/Application Executable.extension"

Важно: используйте обычные прямые кавычки ".

Обработка версий в именах файлов

Если исполняемый файл содержит номер версии, то при обновлении придётся править .desktop. В KDE можно использовать подстановочный символ *:

Exec=/home/Username/ApplicationDirectory/ApplicationExecutable-v*.extension

GNOME обычно не поддерживает такие подстановки в .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 шага)

  1. Включите скрытые файлы и перейдите в ~/.local/share/applications.
  2. Запустите приложение и найдите WMClass (xprop или Looking Glass).
  3. Создайте .desktop-шаблон, заполните поля и сохраните в каталоге.
  4. Установите флаг выполнения и проверьте появление пункта в меню.

Этот цикл можно выполнять для каждого автономного приложения, которое вы хотите интегрировать.

Ролевые чеклисты

Для обычного пользователя:

  • Включил показ скрытых файлов
  • [ ] Создал ~/.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).

Тест-кейсы

  1. Создать .desktop, нажать в меню — приложение запускается.
  2. Перезагрузить окружение — ярлык остаётся.
  3. Поменять Exec на несуществующий путь — меню показывает ошибку при запуске.
  4. Установить кавычки в 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 и распакованные приложения в меню и закреплять их в панели так же легко, как установленные через пакетный менеджер.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Защита файлов и папок паролем в Linux
Security

Защита файлов и папок паролем в Linux

Как добавить поиск на сайт: Adsense и бесплатные альтернативы
Веб

Как добавить поиск на сайт: Adsense и бесплатные альтернативы

Как zip-овать папку в Linux — руководство
Linux

Как zip-овать папку в Linux — руководство

Подбор параметра и Поиск решения в Excel
Excel

Подбор параметра и Поиск решения в Excel

Камера в Godot: следование, границы и эффекты
Разработка игр

Камера в Godot: следование, границы и эффекты

Как создать и оптимизировать LinkedIn Page для бизнеса
Социальные сети

Как создать и оптимизировать LinkedIn Page для бизнеса