答案1
可以通过命令行信任桌面文件:
gio set Your_desktop_file.desktop "metadata::trusted" yes
并且可以通过以下方式获取信任状态:
gio info Your_desktop_file.desktop | grep "metadata::trusted"
笔记:
- 您必须以与桌面文件所有者相同的用户身份运行此命令
- 仅当您在 gnome shell 中运行命令时才有效(而不是通过 SSH)
- 要在登录时自动执行此操作,您必须创建一个登录脚本,该脚本将执行脚本,因为这仅在 Gnome 启动时运行。例如,您可以创建一个 .desktop 文件,在
~/.config/autostart/
其中执行一些 shell 脚本,包括 gio 命令 - 确保
nautilus-desktop
它确实启动了。你可以创建一个 while 循环,使用sleep 1
till nautilus-desktop run - 图标不会自动刷新。您可以通过在桌面上按 F5 或在自动启动脚本中重新启动 nautilus 来实现这一点。
killall nautilus && nautilus-desktop &
(最后一个 & 符号是为了确保您的其余代码能够运行。否则它将在那里停止脚本,直到您nautilus-desktop
再次关闭进程)
答案2
受到@Sander 的精彩回答的启发,我对 Ubuntu 18.04 中的这种方法非常满意。我在自动 VM 创建设置中使用它,首先放置桌面图标,然后准备这些脚本。它们仅在第一次启动时执行。
~/.config/autostart/desktop-truster.desktop
我创建了一个包含以下内容的桌面文件:
[Desktop Entry]
Name=Desktop-Truster
Comment=Autostarter to trust all desktop files
Exec=~/.config/autostart/desktop-truster.sh
Type=Application
旁边是一个脚本~/.config/autostart/desktop-truster.sh
,由自动启动桌面文件调用:
#!/bin/bash
# Wait for nautilus-desktop
while ! pgrep -f 'nautilus-desktop' > /dev/null; do
sleep 1
done
# Trust all desktop files
for i in ~/Desktop/*.desktop; do
[ -f "${i}" ] || break
gio set "${i}" "metadata::trusted" yes
done
# Restart nautilus, so that the changes take effect (otherwise we would have to press F5)
killall nautilus-desktop && nautilus-desktop &
# Remove X from this script, so that it won't be executed next time
chmod -x ${0}
答案3
你必须使 .desktop 文件可执行(信任),你可以在终端中转到 ~/Desktop 并发出以下命令来执行此操作
chmod u+x foo*
显然,使用适合您需求的通配符,然后刷新桌面。这比相信机制为单一条目,但节省时间,如果你进口说多于n条目(其中 n 是最大不便的数量)。
有方法可以监视目录并使用外部工具自动执行此操作,但我建议您认真考虑这样做的安全隐患。
但据我所知,在您的 DE 中没有办法做到这一点。
注意:这在 KDE 上有效,但显然在 Gnome 上无效。
答案4
我已经适应了Janos 的回答适用于我的设置(/etc/skel 是在 Ubuntu 22.04 上通过 pam_mkdir 创建的),通过将以下内容放入/etc/profile.d/desktop-truster.sh
(所有用户都需要能够读取该文件):
#!/bin/bash
# Trust all desktop files
for i in ~/Desktop/*.desktop; do
[ -f "${i}" ] || break
gio set "${i}" "metadata::trusted" true
done
# Restart nautilus, so that the changes take effect (otherwise we would have to press F5)
nautilus -q
所做的更改:
- 替换
yes
为true
- 删除了等待,因为那不起作用
- 用于
nautilus -q
重新启动 nautilus