เคล็ดลับ
ดูเหมือนว่าเป็นไปไม่ได้ที่จะแยกวอลล์เปเปอร์สำหรับหน้าจอหลักและหน้าจอที่สอง อย่างไรก็ตามสิ่งที่สามารถทำได้คือการตั้งวอลล์เปเปอร์และให้มันขยายผ่านหน้าจอสองหน้าจอ เราสามารถสร้างภาพสแปนของวอลล์เปเปอร์สองตัวที่คุณเลือกโดยอัตโนมัติและ (เช่นอัตโนมัติ) สลับวอลล์เปเปอร์และตัวเลือกรูปภาพขึ้นอยู่กับว่าหน้าจอที่สองเชื่อมต่ออยู่หรือไม่
เพื่อให้ดูดีมีความจำเป็นอย่างน้อยความละเอียดหน้าจอแนวตั้งของทั้งสองหน้าจอจะเหมือนกันซึ่งเป็นกรณีในสถานการณ์ของคุณ
ในทางปฏิบัติ
การจัดเตรียม
ในโซลูชันนี้งานเตรียมที่คุณต้องทำคือ:
ก่อนอื่นให้ติดตั้ง imagemagick เพื่อสร้างภาพที่ขยายอัตโนมัติ:
sudo apt-get install imagemagick
เตรียมภาพพื้นหลังแยกสองภาพที่คุณเลือกสำหรับทั้งสองหน้าจอ:
- ขนาดควรตรงกับขนาดของหน้าจอ (16: 9 ในกรณีของคุณ)
- แนวตั้งความละเอียดของภาพทั้งสองควรจะตรงเดียวกัน
เรียกพวกเขาscreen_1.jpeg
และscreen_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
เพื่อการผสมผสานที่สำคัญที่คุณเลือก