Как сделать лаунчер доверенным?

Как сделать лаунчер доверенным?

У меня есть значок на рабочем столе, который не работает. Когда я пытаюсь его использовать, я получаю ошибку

Ненадежный файл рабочего стола Этот файл рабочего стола не является доверенным, его нельзя запустить. Чтобы включить запуск, щелкните правой кнопкой мыши, затем: Включите «Разрешить запуск»

Я не вижу этот пункт меню «Разрешить запуск», когда:

  1. Я нажимаю правой кнопкой мыши на иконку на рабочем столе
  2. Я нажимаю правой кнопкой мыши на его файле в Dolphin
  3. Я нажимаю правой кнопкой мыши на этом файле в «Диспетчере файлов»

Поэтому я попытался сделать это из командной строки, следуя инструкциям на этой веб-странице:Как пометить файл .desktop как доверенный из командной строки в Ubuntu 18.04?. Поскольку у меня много таких ненадежных ссылок на лаунчеры, я использовал эту последовательность команд и получил такой ответ:

$ chmod u+xrw /home/stephen/Desktop/*.desktop
$ chmod g+xrw /home/stephen/Desktop/*.desktop
$ chmod o+xr /home/stephen/Desktop/*.desktop
$ gio set "/home/stephen/Desktop/*.desktop" "metadata::trusted" yes
gio: Setting attribute metadata::trusted not supported

Я получил ту же ошибку, когда вместо подстановочного знака * указал gio определенный файл, а также когда попытался запустить gio как пользователь root.

Какой правильный атрибут задать команде gio? В каких файловых браузерах должен появиться пункт меню «Разрешить запуск»?

Моя ОС — Ubuntu 22.04 jammy.

Вот один из файлов .desktop, с которым у меня возникла такая проблема:

[Desktop Entry]
Comment=Powerful yet simple to use screenshot software.
Comment=Powerful yet simple to use screenshot software.
Comment[en_US]=Powerful yet simple to use screenshot software.
Exec=flameshot launcher
GenericName=
GenericName=
GenericName[en_US]=
Icon=flameshot
MimeType=
Name=Flameshot (Snappy Edition)
Name=Flameshot (Snappy Edition)
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
Version=1.0
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

Я последовал рекомендациям ubfan1, данным в комментариях 6 сентября 2022 года. Результаты:

stephen@stephen:~$ desktop-file-validate /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "Comment" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "GenericName" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "Name" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
/home/stephen/Desktop/Flameshot.desktop: warning: key "TerminalOptions" in group "Desktop Entry" is deprecated

Какой ключ Path должен быть установлен? Не зная этого, а также потому, что это было всего лишь предупреждение, я отредактировал остальную часть файла соответствующим образом. Вот результат этих правок:

[Desktop Entry]
Comment=Powerful yet simple to use screenshot software.
Comment[en_US]=Powerful yet simple to use screenshot software.
Exec=flameshot launcher
GenericName=
GenericName[en_US]=
Icon=flameshot
MimeType=
Name=Flameshot (Snappy Edition)
Path=
StartupNotify=false
Terminal=false
Type=Application
Version=1.0
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-Desktop-File-Install-Version=0.26
X-KDE-SubstituteUID=false
X-KDE-Username=

Теперь я получаю такие результаты:

stephen@stephen:~$ desktop-file-validate /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
stephen@stephen:~$ sudo desktop-file-install /home/stephen/Desktop/Flameshot.desktop
/usr/share/applications/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
stephen@stephen:~$ sudo desktop-file-edit /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path

Пункт меню «Разрешить запуск» по-прежнему не появляется.

Затем я обнаружил, что Flameshot.desktop больше не является исполняемым. Поэтому я использовал Dolphin, чтобы сделать его исполняемым. После этого я обнаружил, что процесс превращения его в исполняемый файл привел к тому, что содержимое Flameshot.desktop вернулось к тому, с чего я начал выше. Повторные записи ключей были введены снова, и я оказался там же, где и начал.

Может быть, предупреждение о ключе Path было важнее, чем я предполагал. Прежде чем я попробую снова, мне нужно знать, что установить. Любые другие предложения также были бы весьма признательны.

Я создал электронную таблицу для сравнения результатов команды "strace gio set", выполненной в тестовой учетной записи, которая является новой временной учетной записью, созданной для тестирования, в которой я могу создавать рабочие значки рабочего стола, и учетной записи stephen, которая является основной учетной записью, и той, которая была создана во время установки Ubuntu, в которой я не могу этого сделать. Ее можно загрузить с:

https://www.mediafire.com/file/xz4dy7280wfx3u8/giosetenablecomparison.ods/file

Столбец A — результат команды в основном аккаунте, а столбец B — результат в тестовом аккаунте. Результаты близко сопоставимы до строки 59. В тестовом аккаунте это показывает «close(3)» для основного аккаунта и «close(3) = 0» в тестовом аккаунте.

В учетной записи Stephen вывод заканчивается на строке 59. В тестовой учетной записи вывод продолжается до строки 516.

Я не знаю, что означает весь этот вывод. Мне кажется, что какая-то ошибка преждевременно завершает процесс в аккаунте stephen. Кто-нибудь здесь может увидеть, что пошло не так, и предложить решение.

На старом компьютере, с которого я мигрировал, установлена ​​Pop!_OS 21.04. На новом компьютере, на который я мигрировал и с которым у меня возникла эта проблема со значком, установлена ​​Ubuntu 22.04. Когда я выполнял миграцию, я скопировал все двоичные файлы в /opt и все файлы в /home. Копируя все файлы в /opt, я надеялся сэкономить время и силы на повторную установку всех программ. Я знаю, что двоичные файлы есть и в других местах, например, в /user/bin и /snap. Я не копировал их и намеревался установить их на новом компьютере с помощью установочных файлов. Я знал, что в каталоге /Desktop будут неработающие ссылки, пока не будут установлены приложения, на которые они ссылаются. Теперь я думаю, что это могло быть ошибкой, и что все должно было быть установлено из установочных файлов на новом компьютере.

Результат команд, запрошенныхстальной драйверв своем комментарии:

stephen@stephen:~$ echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/run/user/1000/bus
stephen@stephen:~$ id -u
1000

решение1

gio set "/home/stephen/Desktop/*.desktop" "metadata::trusted" yes

не верно. 3 вопроса:

  • вам нужно использовать dbus-launch. Если dbus-launchне установлен, сначала выполните:

    sudo apt install dbus-x11
    
  • Подстановочные знаки использовать нельзя.

  • это «истина», а не «да» по состоянию на Ubuntu 20.04.

Команда:

dbus-launch gio set /home/stephen/Desktop/{name}.desktop "metadata::trusted" true

(где {имя} необходимо заменить на фактическое имя)

решение2

Пункт меню "Разрешить запуск" не появился, потому что каталог: "~/Desktop" был доступен для записи другим. Мне пришлось найти и проанализировать исходный код gnu, чтобы выяснить это. Ключом к нему была строка 200 в файле:

/usr/share/gnome-shell/extensions/ding(at)rastersoft.com/fileItemMenu.js".

(замените (at) на @)

Это:

if (fileItem.isValidDesktopFile && !this._desktopManager.writableByOthers && !fileItem.writableByOthers && (selectedItemsNum == 1 )) {

Поскольку каталог «~/Desktop» был доступен для записи другим пользователям, термин «!this._desktopManager.writableByOthers» был ложным, и поэтому пункт меню не отображался.

Требование, чтобы каталог "~/Desktop" не имел разрешения на запись для других, не документировано, а оно должно быть. Это сэкономило бы мне кучу времени, если бы это было так.

Связанный контент