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.
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.jpeg
và screen_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-0
bằng <your_second_screenname>
(chạy lệnh xrandr
nế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.jpeg
bạ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.