Не удается запустить файл .desktop в Ubuntu 24.04.

Вопрос или проблема

Хорошо, я бьюсь над этим уже два часа и стараюсь не задавать это как вопрос, но сдаюсь. Сегодня я перешел на новую установку Ubuntu 24.04 и не могу заставить мои файлы FaveProgram.desktop работать. Это файлы, которые определяют значки запуска графического интерфейса для выполнения определенной команды CLI (например, “faveprogram -option attribute”), и я искал и пробовал, искал и взламывал и тестировал, и ааарргх…

Когда я “запускаю” значок, он всегда открывает текстовый редактор по умолчанию. Вот что я пробовал:

  • правая кнопка -> Запустить как программу
  • правая кнопка -> Открыть с помощю -> Запустить программное обеспечение
  • установить как исполняемый графически в интерфейсе GUI
  • установить как исполняемый вручную с помощью chmod (подтверждено)
  • gio set FaveProgram.desktop metadata::trusted {yes true TRUE} (пробовал все)
  • Заметьте: “Разрешить запуск” НЕДОСТУПЕН в меню правой кнопки!
  • начать с нуля с новым файлом .desktop

Я смотрел /var/log/syslog и он говорит что-то о проблеме с VTE spawn. Это может быть ложный след, но я упоминаю это на случай, если у кого-то есть совет по следующему шагу.

Я начинал пытаться изучить xdg-mime, но не понял это.

Вот содержание файла .desktop, который я пытаюсь запустить:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true   <-- обычно false, тем не менее попробовал true
Exec=/usr/bin/program -option value   <-- да, он существует, может быть запущен вручную
Name=FaveProgram
Comment=FaveProgram
Icon=/valid/path/to/icon.png

РЕДАКТИРОВАТЬ: Нашел ссылку “редактировать” здесь, не была видна ранее. Добавляю еще несколько вещей:

  • Спасибо администратору @mook765 за быструю редакцию этого вопроса для форматирования моего кода
  • Я действительно пробовал удалить xdg-open, без улучшений
  • Ранее я запускал эти значки из произвольных папок через Nautilus / Файлы / файловый менеджер, а не из меню GUI; касательно каталога приложений XDG, какой из них мне попробовать?
  • спасибо @david; я пробовал тот первый метод, предложенный в той теме, и он не сработал, скоро перейду к другим

На случай, если ошибки VTE в syslog приведут к проблеме, вот набор ошибок, которые я получаю там, когда пытаюсь “запустить как программу”:

  • 2025-03-06T15:58:58.273700-05:00 shuttle4 systemd[1379]: vte-spawn-8a9d9df0-2262-4e79-b9be-15b00bcdf6b5.scope: PID 48562 исчез до того, как мы смогли переместить его в целевую группу cgroup ‘/user.slice/user-1000.slice/[email protected]/app.slice/app-org.gnome.Terminal.slice/vte-spawn-8a9d9df0-2262-4e79-b9be-15b00bcdf6b5.scope’, пропуская: Нет такого процесса
  • 2025-03-06T15:58:58.273830-05:00 …. Нет PID, чтобы прикрепить к control group масштаба, отказано
  • (еще две строки, ограничение на количество символов)

Для протокола: небольшое гугление по ошибкам VTE (упомянутым в комментарии выше) привело меня к тому, что я a) переустановил dbus (через apt) и b) перезагрузился. Так что одно из этих действий (возможно, просто перезагрузка!) само по себе могло способствовать тому, что все начало работать.

Так что, теперь я на правильном пути! Вкратце, я обнаружил, что абсолютно тот же файл .desktop, без изменений с 2019 года, работает правильно, если скопировать его в зону рабочего стола и запустить оттуда двойным щелчком. Если я использую Nautilus / Файлы для навигации в папку ~/Desktop и двойным щелчком открываю файл .desktop там, я получаю свой раздражающий текстовый редактор. Это не так, как это работало раньше!

Так что я думаю, что @vanadium (в комментарии) выше был на правильном пути. Каким образом я могу добавить “xdg-open” в файл .desktop, чтобы он работал в Nautilus в Ubuntu 24.04? Потому что я не хочу смотреть на свой рабочий стол для запуска этих программ.

Запуск программ просто нажатием на любой исполняемый файл больше не поддерживается в современных средах рабочего стола. Вы (более сознательно) запускаете программы, запускаете их из меню приложений, с помощью команды в терминале или в диалоге “Запустить команду”.

Современные среды рабочего стола делают запуск приложения невероятно легким.

= Нажмите клавишу, чтобы запустить строку поиска, введите несколько букв названия и нажмите Enter.

  • Эти приложения, которые вы часто запускаете, можно разместить на панели – они на расстоянии одного клика. Другие приложения находятся на расстоянии двух кликов.
  • Вы можете привязать часто используемые приложения к горячей клавише.

Все еще возможно, чтобы нажатие на файл .desktop в файловом менеджере запускало программу. Создайте приложение-стартер с Exec=xdg-open %U и свяжите файлы .desktop с этим стартером.

.

Ответ или решение

Ваша проблема с файлом запуска .desktop на Ubuntu 24.04 может быть вызвана несколькими факторами, начиная от формата и содержимого файла до системных настроек безопасности, свойственных современным настольным окружениям. Давайте рассмотрим проблему детально, применяя методику TEA (Теория, Пример, Применение).

Теория

Начнем с базовой теории. Файлы .desktop являются своеобразными ярлыками, которые используются на Linux-системах для запуска приложений в графическом интерфейсе. Они представляют собой текстовые файлы в формате INI и содержат ключевые поля, такие как Type, Name, Exec, Icon и другие. В вашем случае, интерес представляет атрибут Exec, который определяет команду, запускаемую при активации файла.

На современных дистрибутивах Linux, таких как Ubuntu, по соображениям безопасности полный доступ и запуск приложений из графического интерфейса не разрешены по умолчанию. Поэтому каждая новая версия ОС может добавлять новые уровни защиты.

Пример

Рассмотрим ваш пример .desktop файла:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true  
Exec=/usr/bin/program -option value  
Name=FaveProgram
Comment=FaveProgram
Icon=/valid/path/to/icon.png

Несмотря на то, что структура правильная, следующие аспекты могут вызвать проблемы:

  1. Метка Terminal: При установке Terminal=true, программа будет запускаться в терминале. Если это поведение не требуется, установите Terminal=false.

  2. Путь к исполняемому файлу: Убедитесь, что в Exec указан абсолютный путь к исполняемому файлу, и что он действительно существует и выполняется без ошибок.

  3. Путь к значку: Проверьте, корректен ли путь, указанный в Icon.

  4. Отсутствие xdg-open: Использование #!/usr/bin/env xdg-open вверху файла .desktop является неверным и должно быть удалено. Этот синтаксис не относится к специфике запуска .desktop файлов.

Применение

  1. Проверка прав доступа: Убедитесь, что файл .desktop имеет право на исполнение. Это нужно сделать через терминал командой:

    chmod +x /путь/к/FaveProgram.desktop
  2. Расстановка доверительных меток: В Ubuntu 24.04 и более поздних версиях убедитесь, что файл имеет установку атрибута на доверие. Используйте:

    gio set FaveProgram.desktop metadata::trusted true
  3. Корректировка запуска из файлового менеджера: В Nautilus и других файловых менеджерах, чтобы защита не открывала файл в текстовом редакторе, перенесите файл .desktop в папку ~/.local/share/applications. Это сделает его доступным из поискового меню приложений.

  4. Диагностика системных сообщений: Ошибки VTE, которые вы видите, возможны из-за несоответствий в системных библиотеках или зависимостях терминала. Попробуйте перезагрузить систему и убедитесь, что все необходимые пакеты обновлены:

    sudo apt update && sudo apt upgrade
  5. Использование меню и ярлыков: Для удобства и согласия с дизайном системного интерфейса добавьте часто используемые программы в док-панель или создайте горячую клавишу для быстрого запуска.

  6. Последовательность действий для запуска: Убедитесь, что в .desktop файле в разделе [Desktop Entry] все ключи корректно сформулированы, а файл не содержит лишних символов или опечаток.

Ваша проблема с запуском из Nautilus напрямую связана с изменениями в политики безопасности GNOME интерфейса. Для полноценного использования возможностей Ubuntu по запуску .desktop файлов вам потребуется придать файлу статуса доверенного и использовать его в предложенных рамках системного поиска и приложений.

Оцените материал
Добавить комментарий

Капча загружается...