多个显示器上的不同壁纸
我有一台笔记本电脑和一台显示器。 大部分时间我的笔记本电脑通过HDMI连接到显示器。 我使用Ubuntu Gnome 14.04,这就是我想要的:
- 没有连接显示器时我想要一个简单的背景图像
- 当显示器连接时,我希望在我的笔记本电脑上有相同的背景图像,在我的显示器上有另一个背景图像。
那可能吗? 我发现这个问题以及氮气 。 但两者都没有帮助我。
编辑:
运行gnome-tweak-tool后,转到左侧面板中的“桌面”选项卡,然后关闭“让文件管理器处理桌面”设置。
资料来源: Ubuntu论坛 。
不幸的是我无法在我的Gnome-Tweak-Tool中找到它:
我尝试使用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.jpeg
和screen_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”选项。