将 Unity Launchers 从 14.04 复制到 16.04

将 Unity Launchers 从 14.04 复制到 16.04

.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,仅将其放在文件夹中是不够的。

  1. 在 Nautilus 中浏览到您的.local/share/applications文件夹(该文件夹可能被隐藏,因此您可能需要按Ctrl+ H

  2. .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

  1. 实际的应用程序必须安装在新系统上。文件只是这些应用程序的快捷方式。如果实际的应用程序没有安装,复制文件.desktop是没有意义的。.desktop
  2. 根据 Ubuntu 的安全政策,(链接https://wiki.ubuntu.com/SecurityTeam/Policies),.desktop位于用户主文件夹中的文件必须设置可执行位才能运行(也在另一个 Ask Ubuntu 问题中讨论过这里)。快速测试确认它们不要坚持使用启动器,除非设置了可执行位。如果没有设置可执行位,它们将不会运行,并且 Unity 将认为此类应用程序启动器不受信任(请注意,如果.desktop缓存在内存中,当您删除可执行权限时它仍会出现在启动器上 - 不要被它欺骗)。在终端中使用chmod +x file.desktop或右键单击应用程序,然后在权限选项卡下选中“允许作为程序执行”选项。

    另一个潜在问题是所有权和读取权限。如果文件属于不同的用户和组,没有读取权限,您将无法访问.desktop文件,因此它将无法启动,也无法进入 Unity Launcher。这里的解决方案是sudo chmod +r name.desktopchown $USER:$USER name.desktop

    笔记:我已将不正确的部分划掉。出于一个非常特殊的原因,Unity 启动器偏离了安全策略。

  3. .desktop文件放入~/.local/share/applications(如评论中所述)不会使它们出现在 Unity 启动器上。该文件夹用于存储您自己的自定义.desktop文件。可以手动或通过命令行使用gsettingdconf命令将项目添加到 Unity 启动器。但是,还有其他方法。请参阅此帖子,了解将 .desktop文件添加到启动器的多种方法: https://askubuntu.com/a/829228/295286

相关内容