Хитрість
Окремо встановлювати шпалери для головного та другого екрану неможливо. Що може бути зроблено , проте, встановити шпалери, і він охоплює більше двох екранів. Ми можемо автоматично створити розтягнуте зображення з двох шпалер на ваш вибір і (також автоматично) переключити шпалери та параметри зображення, залежно від того, підключений другий екран чи ні.
Щоб це виглядало приємно, необхідно, щоб принаймні вертикальна роздільна здатність екрана обох екранів була однаковою, що стосується вашої ситуації.
На практиці
Підготовка
У цьому рішенні підготовча робота, яку ви повинні зробити:
Спочатку встановіть 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
до ключової комбінації на ваш вибір.