多台显示器上的不同壁纸


16

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

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

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

编辑:

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

资料来源:Ubuntu论坛

不幸的是,我无法在我的Gnome-Tweak-Tool中找到它: gnome调整工具

我试图使用dconf-editorunder 找到相同的配置,org.gnome.desktop.background但它只不过是:

摘要:绘制桌面背景
描述:让GNOME绘制桌面背景。弃用:此键已被弃用,忽略。

gnome-shell --version也是GNOME Shell 3.10.4

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


使用氮气时,您是否禁用了文件管理器来处理桌面?
卡兹·沃尔夫

我再也无法在Gnome-Tweak-Tool中找到该选项。我已在问题中添加了其他信息。希望能对您
有所

@Whaaaaaat硝基仅适用于13.10及更低版本:/
blade19899

我想我得到了一些东西,您的屏幕分辨率是多少?
2014年

均为1920x1080(16:9)。我认为笔记本电脑是19英寸,显示器是27英寸。
byf-ferdy 2014年

Answers:


10

诀窍

似乎不可能分别为主屏幕和第二屏幕设置墙纸。什么可以但是做的是设置壁纸,并且有它跨越了两个屏幕。我们可以自动创建一个由您选择的两个墙纸组成的图像,并(也自动)根据是否连接了第二个屏幕来切换墙纸和图片选项。
为了使它看起来不错,必须至少两个屏幕的垂直屏幕分辨率都相同,在这种情况下就是这种情况。

在此处输入图片说明

在实践中

制备

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

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

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

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

    叫他们screen_1.jpegscreen_2.jpeg(确切的名称)。脚本将创建生成图像。

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

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

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

    screen_check = "HDMI-0 connected"
    

    如有必要,请替换HDMI-0<your_second_screenname>(如果需要,请运行命令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

您选择的按键组合。


这看起来很棒。我会尽快检查并通知您!谢谢您的工作!
byf-ferdy 2014年

@ byf-ferdy oops,在脚本中意外地离开了我自己的(测试)目录,现在将其修复。
Jacob Vlijm 2014年

做得好!它完美地工作!
byf-ferdy 2014年

1
感谢您提出的好问题!这就是我喜欢做的。
2014年

1

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.