多个显示器上的不同壁纸

我有一台笔记本电脑和一台显示器。 大部分时间我的笔记本电脑通过HDMI连接到显示器。 我使用Ubuntu Gnome 14.04,这就是我想要的:

  • 没有连接显示器时我想要一个简单的背景图像
  • 当显示器连接时,我希望在我的笔记本电脑上有相同的背景图像,在我的显示器上有另一个背景图像。

那可能吗? 我发现这个问题以及氮气 。 但两者都没有帮助我。

编辑:

运行gnome-tweak-tool后,转到左侧面板中的“桌面”选项卡,然后关闭“让文件管理器处理桌面”设置。

资料来源: Ubuntu论坛 。

不幸的是我无法在我的Gnome-Tweak-Tool中找到它: GNOME-TWEAK工具

我尝试使用dconf-editor下的org.gnome.desktop.background dconf-editor找到相同的配置,但它说的只是:

摘要:绘制桌面背景
描述:让GNOME绘制桌面背景。 DEPRECATED :不推荐使用此密钥并将其忽略。

我的gnome-shell --version也是GNOME Shell 3.10.4

在这个要点是xrandr的输出。 第一个是连接第二个监视器。 第二个是没有它。

诀窍

似乎不可能为主屏幕和第二屏幕单独设置壁纸。 然而,可以做的是设置壁纸,并将其跨越两个屏幕。 我们可以自动创建您选择的两个壁纸的跨度图像,并且(也会自动)切换壁纸和图片选项,具体取决于是否连接了第二个屏幕。
为了使它看起来不错,至少两个屏幕的垂直屏幕分辨率是相同的,这在你的情况就是这样。

在此处输入图像描述

在实践中

制备

在此解决方案中,您需要做的准备工作是:

  • 首先,安装imagemagick以自动创建生成映像:

     sudo apt-get install imagemagick 
  • 为两个屏幕准备两个单独的背景图像:

    • 尺寸应与屏幕尺寸完全匹配(在您的情况下为16:9)
    • 两个图像的垂直分辨率应完全相同。

    称它们为screen_1.jpegscreen_2.jpeg (正好是那些名字)。 脚本将创建生成图像。

  • 在主目录中创建一个文件夹,并将两个图像复制到该文件夹​​中。

  • 将下面的脚本复制到一个空文件中,并将其与您准备的两个图像一起保存为auto_wall.py

  • 在脚本的head部分,有一行:

     screen_check = "HDMI-0 connected" 

    如有必要,用替换HDMI-0 (如果需要,运行命令xrandr以查找)

通过以下命令运行脚本(并使其在后台运行):

 python3 /path/to/auto_wall.py 

现在,如果您连接第二个屏幕,第二个屏幕上的壁纸应该在几秒钟内切换到您准备好的screen_2.jpeg

  • 如果一切正常,请将其添加到启动应用程序中。

剧本

 #!/usr/bin/env python3 import subprocess import os import time curr_dir = os.path.dirname(os.path.abspath(__file__)) screen_check = "HDMI-0 connected" single_picture = "'file://"+curr_dir+"/screen_1.jpeg'" double_picture = "'file://"+curr_dir+"/span_image.jpeg'" def execute_set(command): subprocess.call(["/bin/bash", "-c", command]) def execute_get(command): return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip() def switch_tosingle(): execute_set("gsettings set org.gnome.desktop.background picture-uri "+single_picture) execute_set("gsettings set org.gnome.desktop.background picture-options zoom") def switch_todouble(): if not os.path.exists(double_picture): create_spanimage() execute_set("gsettings set org.gnome.desktop.background picture-uri "+double_picture) execute_set("gsettings set org.gnome.desktop.background picture-options spanned") def create_spanimage(): image_1 = curr_dir+"/"+"screen_1.jpeg" image_2 = curr_dir+"/"+"screen_2.jpeg" span_image = curr_dir+"/"+"span_image.jpeg" execute_set("convert "+image_1+" "+image_2+" "+"+append "+span_image) def check_ifconnected(): command = "xrandr" check = execute_get(command) if screen_check in check: return True def check_wallpaper(): check = execute_get("gsettings get org.gnome.desktop.background picture-uri") if check == single_picture: return "single" elif check == double_picture: return "double" def arrange(): test = (check_ifconnected(), check_wallpaper()) if test == (True, "double") or test == (False, "single"): pass elif test[0] == True: switch_todouble() else: switch_tosingle() while True: arrange() time.sleep(5) 

替换图像

如果您想要更改壁纸,只需替换您复制到该文件夹​​的一个或两个图像(但请注意名称)并删除脚本创建的span_image.jpeg

我在Ubuntu 14.04和14.10上测试过,它运行得很好。 您使用Gnome的事实不应该有所作为。

使用组合键手动切换壁纸设置

如果由于某种原因,您希望在连接/断开外接显示器后手动切换到跨区墙纸,则可以替换最后三行:

 while True: arrange() time.sleep(5) 

一行:

 arrange() 

并添加键盘快捷键以执行切换:“系统设置”>“键盘”>“快捷方式”>“自定义快捷方式”

添加命令:

 python3 /path/to/auto_wall.py 

到您选择的关键组合。

除上述答案外,您还可以使用此服务加入两个精确尺寸的图像: http : //www.photojoiner.net/

加入两个或多个图像后,应在后台设置页面中选择“span”选项。