.desktop
尝试恢复从 Ubuntu14.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
查看两个版本的文件结构,它们看起来很相似。
还有什么需要检查/设置吗?
谢谢
答案1
您需要手动将其添加到 Unity Launcher,仅将其放在文件夹中是不够的。
在 Nautilus 中浏览到您的
.local/share/applications
文件夹(该文件夹可能被隐藏,因此您可能需要按Ctrl+ H)将
.desktop
文件从 Nautilus 拖到 Unity Launcher,它应该会立即出现
答案2
您必须将它们添加到启动器收藏夹列表中。要阅读当前列表:
~$ dconf read /com/canonical/unity/launcher/favorites
['application://nautilus.desktop', 'application://firefox.desktop', 'application://libreoffice-writer.desktop', 'application://unity-control-center.desktop', 'application://gnome-terminal.desktop', 'unity://running-apps', 'unity://expo-icon', 'unity://devices']
编写新列表
dconf write /com/canonical/unity/launcher/favorites "['application://nautilus.desktop', 'application://firefox.desktop', 'application://libreoffice-writer.desktop', 'application://unity-control-center.desktop', 'application://gnome-terminal.desktop', 'unity://running-apps', 'unity://expo-icon', 'unity://devices']"
不确定是否可以dconf
使用 读取 14.04 的数据库chroot
,如果您的 14.04 仍可启动,请启动它然后使用dconf read ...
获取列表。否则,请从 手动写入列表ls ~/.local/share/applications
。
答案3
您是否检查过 *.desktop 文件是否具有执行权限?我在 16.04 上从 /usr/share/applications/ 复制了一次(使用 -p 选项)到 ~/.local/share/applications/。文件失去了执行权限。我想这也是类似的情况。
答案4
当前的答案提供了正确方法的点点滴滴。在此答案中,我想提供更连贯的概述,说明移植文件需要做什么.desktop
。
- 实际的应用程序必须安装在新系统上。文件只是这些应用程序的快捷方式。如果实际的应用程序没有安装,复制文件
.desktop
是没有意义的。.desktop
根据 Ubuntu 的安全政策,(链接https://wiki.ubuntu.com/SecurityTeam/Policies),
.desktop
位于用户主文件夹中的文件必须设置可执行位才能运行(也在另一个 Ask 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
文件。可以手动或通过命令行使用gsetting
或dconf
命令将项目添加到 Unity 启动器。但是,还有其他方法。请参阅此帖子,了解将.desktop
文件添加到启动器的多种方法: https://askubuntu.com/a/829228/295286