Hình nền khác nhau trên nhiều màn hình


16

Tôi có một máy tính xách tay và một màn hình. Hầu hết thời gian máy tính xách tay của tôi được kết nối với màn hình qua HDMI. Tôi sử dụng Ubuntu Gnome 14.04 và đây là những gì tôi muốn:

  • Khi không có màn hình được kết nối, tôi muốn có một hình nền đơn giản
  • Khi màn hình được kết nối, tôi muốn có cùng một hình nền trên máy tính xách tay của tôi và một hình khác trên màn hình của tôi.

Điều đó có thể không? Tôi tìm thấy câu hỏi này cũng như nitơ . Nhưng cả hai đều không giúp tôi.

Biên tập:

Sau khi chạy công cụ gnome-chỉnh-công cụ, hãy chuyển đến tab "Máy tính để bàn" trong bảng điều khiển bên trái và sau đó tắt cài đặt "Có trình quản lý tệp xử lý máy tính để bàn".

Nguồn: Diễn đàn Ubuntu .

Thật không may, tôi không thể tìm thấy cái này trong Gnome-Tweak-Tool: gnome-chỉnh-công cụ

Tôi đã cố gắng tìm cấu hình tương tự bằng cách sử dụng dconf-editorbên dưới org.gnome.desktop.backgroundnhưng tất cả những gì nó nói là:

Tóm tắt: Vẽ nền máy tính
Mô tả: Có Gnome vẽ nền màn hình. ĐỔI : Khóa này không được dùng nữa và bị bỏ qua.

Ngoài ra gnome-shell --versionlà của tôi GNOME Shell 3.10.4.

Trong ý chính này là đầu ra của xrandr. Đầu tiên là với màn hình thứ hai được kết nối. Thứ hai là không có nó.


Khi sử dụng Nitrogen, bạn có vô hiệu hóa trình quản lý tệp khi bàn giao máy tính để bàn không?
Kaz Wolfe

Tôi không thể tìm thấy tùy chọn trong Gnome-Tweak-Tool nữa. Tôi đã thêm thông tin bổ sung cho câu hỏi của tôi. Hy vọng nó sẽ giúp
byf-ferdy

@Whaaaaaat nitro chỉ dành cho 13.10 và thấp hơn : /
blade19899

Tôi nghĩ rằng tôi đã nhận được một cái gì đó, độ phân giải của màn hình của bạn là gì?
Jacob Vlijm

cả 1920x1080 (16: 9). Máy tính xách tay là 19 '' Tôi nghĩ, Màn hình 27 ''.
byf-ferdy

Câu trả lời:


10

Bí quyết

Dường như không thể đặt riêng hình nền cho màn hình chính và màn hình thứ hai. Tuy nhiên, những gì có thể được thực hiện là đặt hình nền và kéo dài qua hai màn hình. Chúng tôi có thể tự động tạo một hình ảnh bao gồm hai hình nền bạn chọn và (cũng tự động) chuyển đổi hình nền và các tùy chọn hình ảnh, tùy thuộc vào việc màn hình thứ hai có được kết nối hay không.
Để làm cho nó trông đẹp, điều cần thiết là ít nhất độ phân giải màn hình dọc của cả hai màn hình là giống hệt nhau, đó là trường hợp của bạn.

nhập mô tả hình ảnh ở đây

Trong thực tế

Sự chuẩn bị

Trong giải pháp này, công việc chuẩn bị bạn phải làm là:

  • Đầu tiên, cài đặt hình ảnh để tự động tạo hình ảnh kéo dài:

    sudo apt-get install imagemagick
    
  • Chuẩn bị hai hình nền riêng biệt cho sự lựa chọn của bạn cho cả hai màn hình:

    • Kích thước phải khớp chính xác với kích thước của màn hình (16: 9 trong trường hợp của bạn)
    • Các dọc độ phân giải của cả hai hình ảnh nên giống hệt nhau.

    gọi họ screen_1.jpegscreen_2.jpeg(chính xác những tên đó). Một kịch bản sẽ tạo ra hình ảnh kéo dài.

  • Tạo một thư mục trong thư mục nhà của bạn và sao chép cả hai hình ảnh vào thư mục.

  • Sao chép tập lệnh bên dưới vào một tệp trống và lưu nó dưới dạng auto_wall.py, cùng với hai hình ảnh bạn đã chuẩn bị.

  • Trong phần đầu của tập lệnh, có một dòng:

    screen_check = "HDMI-0 connected"
    

    nếu cần thiết, thay thế HDMI-0bằng <your_second_screenname>(chạy lệnh xrandrnếu cần thiết để tìm hiểu)

Chạy tập lệnh (và giữ cho nó chạy trong nền) bằng lệnh:

python3 /path/to/auto_wall.py

Bây giờ nếu bạn kết nối màn hình thứ hai, hình nền trên màn hình thứ hai của bạn sẽ chuyển trong vòng vài giây để screen_2.jpegbạn chuẩn bị.

  • Nếu tất cả đều hoạt động tốt, hãy thêm nó vào các ứng dụng khởi động của bạn.

Kịch bản

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

Thay thế hình ảnh

Trong trường hợp bạn muốn thay đổi (các) hình nền, chỉ cần thay thế một hoặc cả hai hình ảnh bạn đã sao chép vào thư mục (nhưng chú ý tên) và xóa span_image.jpeg , được tạo bởi tập lệnh.

Tôi đã thử nghiệm nó trên Ubuntu 14.04 và 14.10 và nó hoạt động hoàn hảo. Việc bạn sử dụng Gnome sẽ không tạo ra sự khác biệt.

Chuyển đổi cài đặt hình nền theo cách thủ công với tổ hợp phím

Nếu, vì một số lý do, bạn muốn chuyển sang hình nền được kéo bằng tay sau khi kết nối / ngắt kết nối màn hình ngoài, bạn có thể thay thế ba dòng cuối cùng:

while True:
    arrange()
    time.sleep(5)

bởi một dòng duy nhất:

arrange()

và thêm phím tắt để thực hiện chuyển đổi: "Cài đặt hệ thống"> "Bàn phím"> "Phím tắt"> "Phím tắt tùy chỉnh"

Thêm lệnh:

python3 /path/to/auto_wall.py

cho một sự kết hợp quan trọng của sự lựa chọn của bạn.


Điều này có vẻ tuyệt vời. Tôi sẽ kiểm tra nó ngay khi tôi có thể và cho bạn biết! Cảm ơn bạn cho công việc dù sao đi nữa!
byf-ferdy

@ byf-ferdy oops, vô tình để lại thư mục (thử nghiệm) của riêng tôi trong tập lệnh, đã sửa nó ngay bây giờ.
Jacob Vlijm

Công việc tuyệt vời Nó hoạt động hoàn hảo!
byf-ferdy

1
Cảm ơn câu hỏi hay! Đây là những gì tôi muốn làm.
Jacob Vlijm

1

Ngoài câu trả lời trên, bạn có thể tham gia hai hình ảnh có kích thước chính xác bằng cách sử dụng dịch vụ này: http://www.photojoiner.net/

Sau khi bạn tham gia hai hoặc nhiều hình ảnh, bạn nên chọn tùy chọn "span" trong trang cài đặt nền.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.