
У меня есть значок на рабочем столе, который не работает. Когда я пытаюсь его использовать, я получаю ошибку
Ненадежный файл рабочего стола Этот файл рабочего стола не является доверенным, его нельзя запустить. Чтобы включить запуск, щелкните правой кнопкой мыши, затем: Включите «Разрешить запуск»
Я не вижу этот пункт меню «Разрешить запуск», когда:
- Я нажимаю правой кнопкой мыши на иконку на рабочем столе
- Я нажимаю правой кнопкой мыши на его файле в Dolphin
- Я нажимаю правой кнопкой мыши на этом файле в «Диспетчере файлов»
Поэтому я попытался сделать это из командной строки, следуя инструкциям на этой веб-странице:Как пометить файл .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" не имел разрешения на запись для других, не документировано, а оно должно быть. Это сэкономило бы мне кучу времени, если бы это было так.