.desktop
试图从 Ubuntu恢复一堆文件14.04复制到16.04,但它们没有出现在启动器中。
执行以下操作(/14.04
已安装到旧的 Ubuntu 磁盘/FS)
cd ~/.local/share/applications
cp -pr /14.04/home/ring0/.local/share/applications/[bunch-of].desktop .
但他们在重新登录后没有出现16.04。(两个版本相同的用户/ uid)
看了看/usr/share/applications
,但文件在.local
目录中。
查看两个版本的文件结构.desktop
,它们看起来相似。
还有什么要检查/设置的吗?
谢谢
您需要手动将其添加到 Unity Launcher,仅将其放在文件夹中是不够的。
浏览到您
.local/share/applications
在 Nautilus 中的文件夹(该文件夹可能已隐藏,因此您可能需要按Ctrl+ H)将
.desktop
文件从 Nautilus 拖到 Unity Launcher,它应该会立即出现您必须将它们添加到启动器收藏夹列表中。阅读当前列表:
编写新列表
不确定是否可以使用 读取
dconf
14.04 的数据库chroot
,如果您的 14.04 仍然可以启动,请启动它然后使用dconf read ...
获取列表。否则,从 手动编写列表ls ~/.local/share/applications
。你检查过 *.desktop 文件是否有执行权限吗?我在 16.04 上从 /usr/share/applications/ 复制了一次(使用 -p 选项)到 ~/.local/share/applications/。文件失去了执行权限。我想这是类似的情况。
当前的答案提供了一些正确方法。在这个答案中,我想就移植
.desktop
文件需要做的事情提供更连贯的概述。.desktop
文件只是这些应用程序的快捷方式。如果没有安装实际的应用程序,复制.desktop
文件是没有意义的。根据 Ubuntu 的安全策略(链接https://wiki.ubuntu.com/SecurityTeam/Policies),
.desktop
驻留在用户主文件夹中的文件必须设置可执行位才能运行(也在此处讨论另一个询问 Ubuntu 问题) .快速测试确认它们不会粘在启动器上,除非设置了可执行位。如果没有设置可执行位,它们将不会运行,Unity 会将此类应用程序启动器视为不可信。(请注意,如果利用.desktop
缓存在内存中,当您删除可执行权限时,它仍然可以出现在启动器上 - 不要被这个愚弄)。chmod +x file.desktop
在终端中或右键单击应用程序并在“权限”选项卡下选中“允许作为程序执行”选项。另一个潜在问题是所有权和读取权限。如果文件属于不同的用户和组,没有读取权限,您将无法访问
.desktop
文件,因此它不会启动,也不会仍然到 Unity Launcher。这里的解决方案是要么sudo chmod +r name.desktop
要么chown $USER:$USER name.desktop
。注意:我已经在结果不正确的部分上加上了删除线。由于一个非常特殊的原因,Unity 启动器偏离了安全策略。
将
.desktop
文件放入~/.local/share/applications
(如评论中所揭示)不会使它们出现在 Unity 启动器上。该文件夹用于存储您自己的自定义.desktop
文件。向 Unity 启动器添加项目可以手动完成,也可以通过命令行使用gsetting
或dconf
命令完成。但是,还有其他方法。.desktop
请参阅这篇关于向启动器添加文件的 多种方式的帖子 : https ://askubuntu.com/a/829228/295286