ภาพพื้นหลังที่แตกต่างกันบนจอภาพหลายจอ


16

ฉันมีแล็ปท็อปและจอภาพ ส่วนใหญ่แล็ปท็อปของฉันเชื่อมต่อกับจอภาพผ่าน HDMI แล้ว ฉันใช้ Ubuntu Gnome 14.04 และนี่คือสิ่งที่ฉันต้องการ:

  • เมื่อไม่มีการเชื่อมต่อจอภาพฉันต้องการภาพพื้นหลังที่เรียบง่าย
  • เมื่อเชื่อมต่อจอภาพฉันต้องการให้ภาพพื้นหลังเหมือนกันบนแล็ปท็อปของฉันและอีกภาพหนึ่งบนจอภาพของฉัน

เป็นไปได้ไหม ผมพบว่าคำถามนี้เช่นเดียวกับไนโตรเจน แต่ทั้งคู่ก็ไม่ได้ช่วยฉัน

แก้ไข:

หลังจากรัน gnome-tweak-tool แล้วให้ไปที่แท็บ "เดสก์ท็อป" ในแผงด้านซ้ายแล้วปิดการตั้งค่า "ให้โปรแกรมจัดการไฟล์จัดการเดสก์ท็อป"

ที่มา: อูบุนตูฟอรั่ม

น่าเสียดายที่ฉันไม่พบสิ่งนี้ใน Gnome-Tweak-Tool ของฉัน: gnome-ปรับแต่งเครื่องมือ

ฉันพยายามค้นหาการกำหนดค่าเดียวกันโดยใช้dconf-editorภายใต้org.gnome.desktop.backgroundแต่ทั้งหมดบอกว่า:

สรุป: วาดพื้นหลังเดสก์ท็อป
คำอธิบาย: ให้ GNOME วาดพื้นหลังของเดสก์ท็อป เลิก : คีย์นี้เลิกใช้แล้วและละเว้น

นอกจากนี้ฉันมีgnome-shell --versionGNOME Shell 3.10.4

สรุปสาระสำคัญนี้xrandrคือการส่งออกของ สิ่งแรกคือการเชื่อมต่อกับจอภาพที่สอง อันที่สองคือไม่มีมัน


เมื่อใช้ Nitrogen คุณปิดการใช้งานตัวจัดการไฟล์จากการส่งเดสก์ท็อปหรือไม่?
Kaz Wolfe

ฉันไม่พบตัวเลือกใน Gnome-Tweak-Tool อีกต่อไป ฉันได้เพิ่มข้อมูลเพิ่มเติมลงในคำถามของฉัน หวังว่าจะช่วย
byf-ferdy


ฉันคิดว่าฉันได้รับบางสิ่งความละเอียดของหน้าจอของคุณคืออะไร?
Jacob Vlijm

ทั้ง 1920x1080 (16: 9) แล็ปท็อปอายุ 19 '' ฉันคิดว่ามอนิเตอร์ 27 ''
byf-ferdy

คำตอบ:


10

เคล็ดลับ

ดูเหมือนว่าเป็นไปไม่ได้ที่จะแยกวอลล์เปเปอร์สำหรับหน้าจอหลักและหน้าจอที่สอง อย่างไรก็ตามสิ่งที่สามารถทำได้คือการตั้งวอลล์เปเปอร์และให้มันขยายผ่านหน้าจอสองหน้าจอ เราสามารถสร้างภาพสแปนของวอลล์เปเปอร์สองตัวที่คุณเลือกโดยอัตโนมัติและ (เช่นอัตโนมัติ) สลับวอลล์เปเปอร์และตัวเลือกรูปภาพขึ้นอยู่กับว่าหน้าจอที่สองเชื่อมต่ออยู่หรือไม่
เพื่อให้ดูดีมีความจำเป็นอย่างน้อยความละเอียดหน้าจอแนวตั้งของทั้งสองหน้าจอจะเหมือนกันซึ่งเป็นกรณีในสถานการณ์ของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

ในทางปฏิบัติ

การจัดเตรียม

ในโซลูชันนี้งานเตรียมที่คุณต้องทำคือ:

  • ก่อนอื่นให้ติดตั้ง 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

เพื่อการผสมผสานที่สำคัญที่คุณเลือก


มันดูน่าทึ่งมาก ป่วยตรวจสอบทันทีที่ฉันสามารถและแจ้งให้คุณทราบ! ขอบคุณสำหรับการทำงาน แต่อย่างใด!
byf-ferdy

@ byf-ferdy oops โดยไม่ได้ตั้งใจทิ้งไดเรกทอรี (การทดสอบ) ของฉันเองในสคริปต์ให้แก้ไขทันที
Jacob Vlijm

การทำงานที่ดี! มันทำงานได้อย่างสมบูรณ์แบบ!
byf-ferdy

1
ขอบคุณสำหรับคำถามที่ดี! นี่คือสิ่งที่ฉันต้องการจะทำ
Jacob Vlijm

1

นอกจากคำตอบข้างต้นคุณสามารถเข้าร่วมภาพขนาดที่แน่นอนสองภาพโดยใช้บริการนี้: http://www.photojoiner.net/

หลังจากคุณเข้าร่วมสองภาพขึ้นไปคุณควรเลือกตัวเลือก "ขยาย" ในหน้าการตั้งค่าพื้นหลัง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.