在多个显示器上,显示不同的壁纸

分享于 

5分钟阅读

ubuntu

  繁體

gnome-tweak-tool


窍门

不能单独设置主屏幕和第二个屏幕的壁纸,但是,可以设置一个壁纸,并让它跨越两个屏幕,

enter image description here

事实是

在这个解决方案中,必须执行的准备工作是:

首先,安装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

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

script


#!/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)



替换图像

如果要更改wallpaper(s),只需替换复制到文件夹(记住名字)的一个或多个图像,并删除span_image.jpeg创建的脚本。

我在Ubuntu 14.04和14.10上测试了它,它可以工作得很好。

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


while True:


 arrange()


 time.sleep(5)



通过一行:

 
arrange()



,并添加一个键盘快捷键来执行切换:"系统设置">"键盘">"快捷键">"自定义快捷键"

添加命令:


python3 /path/to/auto_wall.py




相关文章