Как создать .desktop‑файл в Linux

Быстрая навигация
- Desktop файлы
- Структура .desktop‑файла
- Пошаговый пример
- Проверьте и установите файл
- Частые проблемы и решения
- Дополнительно: шаблоны, чеклисты, тесты
Desktop файлы
Desktop файлы содержат метаданные о приложении или скрипте и позволяют рабочей среде интегрировать приложение: показать его в поиске, закрепить на доке, показать значок и подсказку. Чаще всего они используются для бинарных исполняемых файлов, но подходят и для скриптов.
Если у приложения нет корректного .desktop‑файла, оно не появится в результатах поиска приложений и не всегда будет доступно для закрепления. На некоторых окружениях рабочего стола файл можно поместить прямо на рабочий стол — он будет работать как ярлык и запускать приложение по двойному щелчку.
Desktop файлы хранятся в стандартизованных местах, поэтому среда рабочего стола надёжно их находит:
- Для единственного пользователя: ~/.local/share/applications
- Для всех пользователей: /usr/share/applications/
Провести интеграцию вручную бывает полезно, если приложение было собрано из исходников или установлено нестандартным способом.
Структура .desktop‑файла
.desktop‑файл — обычный текстовый файл. Его можно создать любым текстовым редактором. По конвенции файл называется как приложение и имеет расширение .desktop.
Формат состоит из комментариев, заголовков групп и пар «ключ=значение».
- Комментарии начинаются с символа #.
- Заголовки групп — строки в квадратных скобках, например [Desktop Entry]. Обязательная группа — [Desktop Entry].
- Ключ‑значение: Type=Application — ключ Type, значение Application.
Ниже приведён минимальный набор ключей и краткое объяснение каждого.
Основные ключи
- [Desktop Entry] — обозначает, что это .desktop‑файл.
- Name — отображаемое имя приложения (видно под иконкой и в подсказках).
- GenericName — общее описание типа приложения (например, «Редактор текста»).
- Comment — однолинейное описание или подсказка.
- Exec — команда для запуска. Может быть просто имя исполняемого файла или полный путь.
- Path — рабочая директория, из которой будет запущено приложение.
- Icon — путь к файлу иконки или имя темы иконок.
- Terminal — true/false, указывает, нужно ли открывать терминал.
- Type — «Application» для обычных программ.
- Categories — список категорий, разделённых точкой с запятой; обязательно завершается ;
- Version — версия спецификации desktop‑файла (опционально).
Полезные дополнительные ключи
- MimeType — список MIME‑типов, которые поддерживает приложение.
- StartupNotify — true/false, показывает ли система индикатор загрузки.
- StartupWMClass — класс окна для привязки значка к уже запущенному окну.
- Actions — определяет быстрые действия в контекстном меню и их описание.
Пошаговый пример
Перед созданием .desktop‑файла всегда убедитесь, что приложение запускается из терминала. Откройте терминал, перейдите в каталог приложения и запустите его напрямую.
Пример: у нас есть исполняемый файл taf в /usr/local/bin/taf/.
./tafЕсли приложение запускается, продолжайте. Если нет — сначала исправьте проблему запуска. .desktop‑файл не исправит неполадку в самом приложении.
Создадим файл taf.desktop (временно в текущей директории):
[Desktop Entry]
Name=Text Adventure Framework
GenericName=Interpreter for GDL Adventure Scripts
Comment=Game Description Language interpreter
Version=1.0
Exec=/usr/local/bin/taf/taf
Path=/usr/local/bin/taf/
Icon=/usr/local/bin/taf/taf_icon.png
Terminal=false
Type=Application
Categories=GNOME;GTK;Game;Сохраните файл. Этот пример служит шаблоном — замените значения на свои.

Советы по Exec
Exec может содержать заменители:
- %f — один файл
- %F — несколько файлов
- %u — один URL
- %U — несколько URL
- %i — добавляет строку с –icon
если задан Icon - %c — локализованное имя приложения
- %k — путь к .desktop‑файлу
Если команда и аргументы содержат пробелы, используйте кавычки в самой команде. Лучше указывать полный путь к исполняемому файлу.
Не ставьте перенаправления оболочки (>, |) напрямую в Exec; для сложных команд используйте скрипт‑обёртку.
Работа с иконками
- Icon может быть абсолютным путём к картинке или именем иконки из темы.
- Рекомендуемые форматы: PNG, SVG (векторные иконки лучше для масштабирования).
Проверка и установка
Вы можете проверить файл на синтаксические и семантические ошибки утилитой desktop-file-validate:
desktop-file-validate taf.desktopНекоторые ключи устарели — валидатор сообщит об этом. Например, категория Application в списке Categories была помечена устаревшей.
Чтобы поместить .desktop‑файл в общую базу:
- Для одного пользователя:
cp taf.desktop ~/.local/share/applications/- Для всех пользователей (требуются права root):
sudo cp taf.desktop /usr/share/applications/
sudo update-desktop-databaseКоманда update-desktop-database обновляет кэш, который используют некоторые окружения рабочего стола, чтобы найти приложения и MIME‑ассоциации.
На некоторых окружениях (например, если вы кидаете файл на рабочий стол) файл должен иметь разрешение на исполнение, чтобы работать при двойном клике:
chmod +x ~/Рабочий_стол/taf.desktop(В системном каталоге /usr/share/applications обычно исполняемые права не требуются.)
Частые проблемы и как их решать
Important: Если приложение не запускается из .desktop‑файла, сначала убедитесь, что команда Exec корректна и приложение запускается из терминала. Большинство проблем связано с неверным путём, отсутствующими зависимостями или неправильными правами.
Проблема: приложение не видно в поиске.
- Решение: проверьте поле Categories и Name; выполните update-desktop-database; перезапустите сеанс.
Проблема: иконка не отображается.
- Решение: укажите абсолютный путь или имя темы иконок; убедитесь, что файл доступен и имеет корректный формат.
Проблема: при двойном клике ничего не происходит.
- Решение: в файловом менеджере проверьте, требуется ли .desktop‑файлу разрешение на исполнение; добавьте Terminal=true, если программа требует терминал.
Проблема: валидатор жалуется на устаревшую категорию.
- Решение: удалите или замените устаревшую категорию по рекомендациям валидатора.
Альтернативы и когда .desktop не решит задачу
- Если вам нужно просто создать ярлык в панели задач — некоторые окружения позволяют это делать прямо через GUI без .desktop.
- Если приложение запускается в контейнере (snap/flatpak), управление интеграцией чаще всего осуществляет сам пакет; вручную менять .desktop‑файлы таких пакетов рискованно.
- Если приложение преднамеренно не интегрируется (например, портативные эксперименты), .desktop‑файл добавит удобство, но не заменит полноценной упаковки.
Безопасность и права
- Не давайте прав на исполнение .desktop‑файлам, скачанным из ненадёжных источников.
- В каталоге /usr/share/applications только root должен записывать файлы — это предотвращает подмену системных ярлыков.
Шаблоны и примеры (шаблон для копирования)
Простой шаблон для редактирования:
[Desktop Entry]
Name=Название приложения
GenericName=Короткое описание
Comment=Подсказка
Exec=/путь/к/исполняемому/файлу --опция %F
Path=/рабочая/директория
Icon=/путь/к/иконке.png
Terminal=false
Type=Application
Categories=Utility;Development;Пример для GUI‑скрипта, который нуждается в терминале:
[Desktop Entry]
Name=Мой Скрипт
Comment=Скрипт для отладки
Exec=/home/user/scripts/run_debug.sh
Terminal=true
Type=Application
Categories=Utility;Роль‑ориентированные чеклисты
Developer:
- Убедиться, что приложение запускается из терминала.
- Указать полный путь в Exec или корректный вызов.
- Указать StartupWMClass, если приложение создаёт оконный класс.
- Добавить MimeType, если приложение открывает файлы по типу.
Admin / Packager:
- Проверить валидатором desktop-file-validate.
- Копировать файл в /usr/share/applications и поставить правильные права.
- Обновить базу данных: sudo update-desktop-database.
End user:
- Скопировать в ~/.local/share/applications для личного использования.
- Сделать файл исполняемым, если окружение требует этого для ярлыков на рабочем столе.
Критерии приёмки
- Приложение появляется в поиске по имени.
- Иконка отображается в списке приложений и в доке при запуске.
- Правильная подсказка при наведении курсора.
- Приложение запускается двойным щелчком (если применимо) и корректно свяжется с открытым окном.
- Если предусмотрено, файлы открываются через контекстное меню «Открыть с…».
Мини‑методология: как быстро верифицировать интеграцию
- Запустите приложение из терминала и убедитесь в работоспособности.
- Создайте .desktop‑файл по шаблону и проверьте desktop-file-validate.
- Скопируйте в ~/.local/share/applications или /usr/share/applications.
- Выполните update-desktop-database и перезапустите сеанс (если нужно).
- Найдите приложение через меню/поиск, проверьте иконку, закрепите в доке.
Тестовые сценарии и критерии приёмки
Тест 1 — Поиск:
- Действие: Ввести часть имени приложения в строке поиска.
- Ожидание: Появляется иконка, имя и подсказка соответствуют .desktop.
Тест 2 — Запуск из меню:
- Действие: Нажать запуск из меню.
- Ожидание: Приложение запускается, окно появляется и привязано к иконке в доке.
Тест 3 — Открытие файла:
- Действие: щёлкнуть по файлу подходящего MIME‑типа и выбрать ваше приложение.
- Ожидание: Файл открывается в приложении.
Playbook: развертывание .desktop для команды (SOP)
- Подготовьте .desktop‑файл по шаблону с правильными путями.
- Запустите desktop-file-validate и исправьте предупреждения.
- Разместите файл в /usr/share/applications/ с правами root:
sudo cp myapp.desktop /usr/share/applications/
sudo chown root:root /usr/share/applications/myapp.desktop
sudo chmod 644 /usr/share/applications/myapp.desktop
sudo update-desktop-database- Сообщите пользователям перезапустить сеанс или выйти/войти.
Пример mermaid‑диаграммы: простой поток принятия решений
flowchart TD
A[Запускается ли приложение из терминала?] -->|Да| B[Создать .desktop файл]
A -->|Нет| C[Исправить проблему запуска]
B --> D{Кому нужен доступ?}
D -->|Только мне| E[~/.local/share/applications]
D -->|Всем| F[/usr/share/applications]
E --> G[Выполнить update-desktop-database]
F --> G
G --> H[Проверить появление в поиске и иконку]Частые ошибки и уловки локализации
- Для русскоязычного интерфейса можно добавить локализованные ключи: Name[ru]=Моё приложение. Это позволит показывать разное имя в разных локалях.
- Для приложений, поддерживающих несколько языков, добавьте Comment[ru]=Описание на русском.
Примеры расширенных ключей и быстрые подсказки
- Actions — быстрые действия в контекстном меню (например, «Открыть пример») — требует определения соответствующих секций в файле.
- StartupWMClass — помогает привязать процесс к значку в доке, когда приложение использует иной WM_CLASS.
Совместимость и миграция
- Snap/Flatpak пакеты обычно содержат собственные .desktop‑файлы; не меняйте их без необходимости.
- При миграции приложений на другие машины проверьте, что пути в Exec и Icon доступны на целевой системе.




Резюме
.desktop‑файл — простой, но мощный способ интегрировать приложение в рабочую среду Linux. Создайте файл с секцией [Desktop Entry], корректно заполните ключи Name, Exec, Icon и Type, проверьте его валидатором и установите в соответствующий каталог. Это улучшит поиск, закрепление и пользовательский опыт.
FAQ
Куда копировать .desktop‑файл для личного использования?
В ~/.local/share/applications.
Нужно ли давать .desktop‑файлу права на исполнение?
Обычно нет для /usr/share/applications, но для файлов на рабочем столе в некоторых файловых менеджерах может потребоваться chmod +x.
Как обновить базу приложений после изменения файла?
Выполните sudo update-desktop-database или перезапустите сеанс.
Как понять, почему приложение не запускается через .desktop?
Запустите команду из Exec в терминале и посмотрите на ошибки — чаще всего причина там.
Если хотите, могу подготовить адаптированный шаблон .desktop‑файла для вашего приложения: укажите путь к исполняемому файлу, рабочую директорию и иконку.
Похожие материалы
Ошибка JavaScript heap out of memory — исправление
Alexa: режим Soothe Baby — настройка и советы
Скрыть или удалить историю версий в Google Документах
Как исправить ERROR_TOO_MANY_DESCRIPTORS в Windows
Сброс интерфейса WoW — быстрый фикс