我有一台运行 Ubuntu 20.04 的机器,并创建了一个 .desktop 文件。我在自己的桌面上测试了它,它工作正常,所以我将它复制到所有现有用户,然后
sudo su; cd /etc/skel/; mkdir Desktop;
cp /home/MyUser/Desktop/MyIcon.desktop ./
这样所有新用户都可以访问图标(所有人都可以执行该应用程序)。但是,当查看其他用户看到的内容时,它显然不是一个可执行的 .desktop 文件(下图中比较了我的用户和其他用户看到的内容)。
似乎在做什么这个答案建议解决了这个问题,但我需要成为 other_user 来执行此操作(其中 other_user 是将图标作为可执行文件的用户)。因此,我想到的唯一可以自动为新用户和现有用户创建和正确配置图标的方法就是:
cd /path/to/other/user/Desktop
sudo su -l OtherUser
gio set app.desktop metadata::trusted true
对于现有用户和未来的新用户:
cd /etc/skel/
并添加
gio set ~/Desktop/app.desktop metadata::trusted true
到 .bashrc。这感觉不太智能。此外,sudo su -l 选项会返回一个错误:
gio:不支持设置属性 metadata::trusted
有没有针对新用户更好的方法以及针对现有用户的有效方法?
编辑以添加对 cbugk 评论的回复:文件内容的形式为:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/local/path/to/executable
Name=Name of application
Icon=/usr/local/path/to/image.png
答案1
根据@cbugk 评论回答这个问题的第三个答案。
出于某种原因,即使通过 sudo su -l 或 sudo su 切换到用户也无法允许通过 CLI 启动桌面图标。我猜是出于安全原因,但不确定。显然,您可以使用 dbus 消息来解决这个问题并间接发送命令。我为多个用户和多个桌面图标执行此操作的方式是:
- 对于所有已拥有桌面的用户:
cd /home/ sudo su -l user cd Desktop for icon in ./*.desktop; do desktop-file-install --mode=0755 --dir=$HOME/Desktop ~/Desktop/$icon; done; for icon in ./*.desktop; do dbus-launch gio set ~/Desktop/Telegram.desktop "metadata::trusted" true; done;
- 对于未来的用户:
cd /etc/skel/
mkdir 桌面;cd 桌面
(将我所有的 .desktop 文件复制到这里,并将以下行添加到 /etc/skel/.bashrc)
对于 $HOME/Desktop/*.desktop 中的文件;执行 desk-file-install --mode=0755 --dir=$HOME/Desktop $file;完成
对于 $HOME/Desktop/*.desktop 中的文件;执行 dbus-launch gio 设置 $file "metadata::trusted" true;完成
请注意:第 2 项将允许每次用户登录时执行用户桌面上的所有桌面图标。这可能是一个安全风险。我接受有关更好实施的建议。