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

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

8 min read Linux Обновлено 06 Dec 2025
Создать .desktop‑файл в Linux
Создать .desktop‑файл в Linux

Ноутбук на синем фоне с открытой консолью 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;

Сохраните файл. Этот пример служит шаблоном — замените значения на свои.

Запущенное приложение taf как приложение GNOME GTK.

Советы по 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 для личного использования.
  • Сделать файл исполняемым, если окружение требует этого для ярлыков на рабочем столе.

Критерии приёмки

  • Приложение появляется в поиске по имени.
  • Иконка отображается в списке приложений и в доке при запуске.
  • Правильная подсказка при наведении курсора.
  • Приложение запускается двойным щелчком (если применимо) и корректно свяжется с открытым окном.
  • Если предусмотрено, файлы открываются через контекстное меню «Открыть с…».

Мини‑методология: как быстро верифицировать интеграцию

  1. Запустите приложение из терминала и убедитесь в работоспособности.
  2. Создайте .desktop‑файл по шаблону и проверьте desktop-file-validate.
  3. Скопируйте в ~/.local/share/applications или /usr/share/applications.
  4. Выполните update-desktop-database и перезапустите сеанс (если нужно).
  5. Найдите приложение через меню/поиск, проверьте иконку, закрепите в доке.

Тестовые сценарии и критерии приёмки

Тест 1 — Поиск:

  • Действие: Ввести часть имени приложения в строке поиска.
  • Ожидание: Появляется иконка, имя и подсказка соответствуют .desktop.

Тест 2 — Запуск из меню:

  • Действие: Нажать запуск из меню.
  • Ожидание: Приложение запускается, окно появляется и привязано к иконке в доке.

Тест 3 — Открытие файла:

  • Действие: щёлкнуть по файлу подходящего MIME‑типа и выбрать ваше приложение.
  • Ожидание: Файл открывается в приложении.

Playbook: развертывание .desktop для команды (SOP)

  1. Подготовьте .desktop‑файл по шаблону с правильными путями.
  2. Запустите desktop-file-validate и исправьте предупреждения.
  3. Разместите файл в /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
  1. Сообщите пользователям перезапустить сеанс или выйти/войти.

Пример 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 доступны на целевой системе.

Иконка приложения в результатах поиска GNOME.

Обновление базы данных desktop файлов.

Контекстное меню с опцией «Закрепить» выделено.

Закреплённый значок приложения в доке выше разделителя.

Резюме

.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‑файла для вашего приложения: укажите путь к исполняемому файлу, рабочую директорию и иконку.

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

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

Ошибка JavaScript heap out of memory — исправление
Node.js

Ошибка JavaScript heap out of memory — исправление

Alexa: режим Soothe Baby — настройка и советы
Руководства

Alexa: режим Soothe Baby — настройка и советы

Скрыть или удалить историю версий в Google Документах
Google Документы

Скрыть или удалить историю версий в Google Документах

Как исправить ERROR_TOO_MANY_DESCRIPTORS в Windows
Система

Как исправить ERROR_TOO_MANY_DESCRIPTORS в Windows

Сброс интерфейса WoW — быстрый фикс
Руководства

Сброс интерфейса WoW — быстрый фикс

Остановить случайное воспроизведение музыки
Техподдержка

Остановить случайное воспроизведение музыки