在双显示器设置 (Unity) 上,如何在重新启动后保留桌面的图标位置?

And*_*ndy 3 icons multiple-monitors unity video-driver desktop-icons

我有一个在 Ubuntu 14.04 上运行 Unity 的双显示器设置

每当我启动机器时,系统似乎忘记了右侧显示屏上桌面图标的位置(通过 VGA 连接)。图标都很好地设置在屏幕的右侧,但是当我启动时,所有图标都聚集在启动器下方的左上角附近,并且彼此重叠,如下所示:

在此处输入图片说明

如何解决此问题,以便每次启动时桌面图标都显示在同一位置?左侧显示器上的图标(通过 HDMI 连接)始终正常,并且始终保持在相同的位置。

Jac*_*ijm 8

原因

最有可能的问题是错误(与视频驱动程序相关)的结果。我假设第二个屏幕没有被记住,并且在启动(登录)过程的相当晚的阶段“虚拟地”重新连接。

解决

通常,即使它是一个错误,也不意味着我们找不到解决方法。要是我们:

  • 可以在注销时对当前图标位置进行某种快照
  • 重启第二屏正确显示后恢复图标位置(登录)

有效地解决了该错误。

如何读取桌面上的图标位置

您可以通过以下命令获取图标在桌面上的位置:

gvfs-info -a 'metadata::nautilus-icon-position' '<file>'
Run Code Online (Sandbox Code Playgroud)

这将输出桌面上图标的坐标,我们可以将其保存到文件中。如果我们关闭计算机之前以这种方式对您的桌面进行快照,我们可以随后使用以下命令恢复图标的位置:

gvfs-set-attribute -t string '<file>' 'metadata::nautilus-icon-position' '500,500'
Run Code Online (Sandbox Code Playgroud)

(例如)

拍摄此类快照并恢复图标布局(取决于参数)的脚本将是:

gvfs-info -a 'metadata::nautilus-icon-position' '<file>'
Run Code Online (Sandbox Code Playgroud)

要使用它:

  • 将脚本复制到一个空文件中,另存为 restore_desktop.py
  • 在脚本的 head 部分,在行中:

    # --- set your localized desktop name below:
    dt_name = "Desktop"
    # ---
    
    Run Code Online (Sandbox Code Playgroud)

    设置桌面文件夹的本地化名称(荷兰语中的“Bureaublad”)

  • 要获取当前图标布局的快照,请运行以下命令:

    python3 /path/to/restore_desktop.py snapshot
    
    Run Code Online (Sandbox Code Playgroud)
  • 要恢复以前拍摄的快照:

    python3 /path/to/restore_desktop.py restore
    
    Run Code Online (Sandbox Code Playgroud)

    然后单击桌面并按F5刷新桌面。

然而,要在我们的情况下使用脚本需要添加一些内容

  • 桌面仍然需要从命令行刷新才能实际应用图标的恢复。这可以通过重新启动nautilus或按F5前面的桌面来完成。由于我们在启动时使用它,因此第一个选项可能是最优雅的选项。

  • 我们需要在以当前用户身份注销时拍摄快照,以确保将最后一个图标布局记录到快照中。到目前为止,我找不到办法做到这一点。但是,与往常一样,有一种解决方法。如果我们包含命令

    gnome-session-quit --poweroff
    
    Run Code Online (Sandbox Code Playgroud)

    在我们的脚本中,我们可以简单地调用脚本(使用正确的参数)来包含关闭过程拍摄快照。

  • 然后为了确保应用恢复的快照,我们可以在脚本中包含重新启动 nautilus。

解决方案

最终脚本变为:

gvfs-set-attribute -t string '<file>' 'metadata::nautilus-icon-position' '500,500'
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 将脚本复制到一个空文件中,另存为 restore_icons.py
  2. 在脚本的 head 部分,设置Desktop文件夹的适当(本地化)名称:

    # --- set your localized desktop name below:
    dt_name = "Desktop"
    # ---
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过运行以下命令测试运行脚本:

    python3 /path/to/restore_icons.py snapshot
    
    Run Code Online (Sandbox Code Playgroud)

    将拍摄当前布局的快照。De关闭菜单出现在您的桌​​面上,但通过单击桌面上的菜单将其取消。

    <图像_1>

    然后故意弄乱桌面上的图标(位置)。
    最后,使用另一个参数再次运行脚本:

     python3 /path/to/restore_icons.py restore
    
    Run Code Online (Sandbox Code Playgroud)

    等待 20 秒(请参阅底部的注释为什么包含在脚本中),您的桌面图标将恢复到您拍摄快照之前的状态。

  4. 如果一切正常,请添加快捷键:选择:系统设置 > “键盘” > “快捷方式” > “自定义快捷方式”。单击“+”并添加命令:

    python3 /path/to/restore_icons.py snapshot
    
    Run Code Online (Sandbox Code Playgroud)

    这将是您需要使用的快捷方式来关闭您的计算机。

  5. 恢复命令添加到启动应用程序:Dash > 启动应用程序 > 添加。添加命令:

    python3 /path/to/restore_icons.py restore
    
    Run Code Online (Sandbox Code Playgroud)

    现在启动(登录)后 20 秒,您的图标将与您关闭时完全一样。

笔记

20 秒的休息时间是为了确保在恢复命令运行之前找到并重新连接第二个监视器。