如何将启动器设置为受信任?

如何将启动器设置为受信任?

我有一个无法使用的桌面图标。当我尝试使用它时,我收到错误

不受信任的桌面文件 此桌面文件不受信任,无法启动。要启用启动右键单击,请执行以下操作: 启用“允许启动”

在以下情况下我没有看到“允许启动”菜单项:

  1. 我右键单击桌面上的图标
  2. 我在 Dolphin 中右键单击其文件
  3. 我在“文件管理器”中右键单击此文件

因此我尝试按照此网页上的说明从命令行执行此操作:如何在 Ubuntu 18.04 上从命令行将 .desktop 文件标记为受信任?。由于我有许多这样的不受信任的启动器链接,我使用了这个命令序列,并得到了这个响应:

$ 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 一个特定的文件而不是 * 通配符时,以及当我尝试以 root 身份执行 gio 时,我遇到了同样的错误。

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 在 2022 年 9 月 6 日的评论中提出的建议。结果:

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 行结束。在 test 帐户中,输出一直延续到第 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

(其中 {name} 需要替换为实际名称)

答案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”目录不具有其他人可写的权限这一要求,但需要记录下来。如果有记录的话,我就可以节省很多时间。

相关内容