Вопрос или проблема
Хорошо, я бьюсь над этим уже два часа и стараюсь не задавать это как вопрос, но сдаюсь. Сегодня я перешел на новую установку 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
Несмотря на то, что структура правильная, следующие аспекты могут вызвать проблемы:
-
Метка
Terminal
: При установкеTerminal=true
, программа будет запускаться в терминале. Если это поведение не требуется, установитеTerminal=false
. -
Путь к исполняемому файлу: Убедитесь, что в
Exec
указан абсолютный путь к исполняемому файлу, и что он действительно существует и выполняется без ошибок. -
Путь к значку: Проверьте, корректен ли путь, указанный в
Icon
. -
Отсутствие
xdg-open
: Использование#!/usr/bin/env xdg-open
вверху файла .desktop является неверным и должно быть удалено. Этот синтаксис не относится к специфике запуска .desktop файлов.
Применение
-
Проверка прав доступа: Убедитесь, что файл .desktop имеет право на исполнение. Это нужно сделать через терминал командой:
chmod +x /путь/к/FaveProgram.desktop
-
Расстановка доверительных меток: В Ubuntu 24.04 и более поздних версиях убедитесь, что файл имеет установку атрибута на доверие. Используйте:
gio set FaveProgram.desktop metadata::trusted true
-
Корректировка запуска из файлового менеджера: В Nautilus и других файловых менеджерах, чтобы защита не открывала файл в текстовом редакторе, перенесите файл .desktop в папку
~/.local/share/applications
. Это сделает его доступным из поискового меню приложений. -
Диагностика системных сообщений: Ошибки VTE, которые вы видите, возможны из-за несоответствий в системных библиотеках или зависимостях терминала. Попробуйте перезагрузить систему и убедитесь, что все необходимые пакеты обновлены:
sudo apt update && sudo apt upgrade
-
Использование меню и ярлыков: Для удобства и согласия с дизайном системного интерфейса добавьте часто используемые программы в док-панель или создайте горячую клавишу для быстрого запуска.
-
Последовательность действий для запуска: Убедитесь, что в .desktop файле в разделе [Desktop Entry] все ключи корректно сформулированы, а файл не содержит лишних символов или опечаток.
Ваша проблема с запуском из Nautilus напрямую связана с изменениями в политики безопасности GNOME интерфейса. Для полноценного использования возможностей Ubuntu по запуску .desktop файлов вам потребуется придать файлу статуса доверенного и использовать его в предложенных рамках системного поиска и приложений.