在 Ubuntu 18.04 Gnome 3 中信任桌面图标而无需手动单击它们

在 Ubuntu 18.04 Gnome 3 中信任桌面图标而无需手动单击它们

将 .desktop 文件移动到“桌面”位置后~/Desktop,它会在桌面上显示图标。第一次运行时,您必须信任该应用程序。有没有办法直接信任它而不单击?chmod +x *.Desktop已经完成使文件可执行

在此处输入图片描述

答案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 1till 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

所做的更改:

  • 替换yestrue
  • 删除了等待,因为那不起作用
  • 用于nautilus -q重新启动 nautilus

相关内容