Sztuczka
Wydaje się niemożliwe oddzielne ustawienie tapet dla ekranu głównego i drugiego ekranu. Co można zrobić jest jednak, aby ustawić tapetę, i to rozpięta na dwóch ekranach. Możemy automatycznie utworzyć obraz obejmujący dwie wybrane przez Ciebie tapety i (również automatycznie) przełączyć tapetę i opcje obrazu, w zależności od tego, czy drugi ekran jest podłączony, czy nie.
Aby wyglądało ładnie, konieczne jest, aby przynajmniej pionowa rozdzielczość ekranu obu ekranów była identyczna, co ma miejsce w twojej sytuacji.
W praktyce
Przygotowanie
W tym rozwiązaniu praca przygotowawcza, którą musisz wykonać, to:
Najpierw zainstaluj imagemagick, aby automatycznie utworzyć obraz łączący:
sudo apt-get install imagemagick
Przygotuj dwa oddzielne wybrane obrazy tła dla obu ekranów:
- Wymiary powinny dokładnie odpowiadać wymiarom ekranu (w Twoim przypadku 16: 9)
- Pionowa rozdzielczość obu obrazów powinny być dokładnie takie same.
zadzwoń do nich screen_1.jpeg
i screen_2.jpeg
(dokładnie te nazwiska). Skrypt utworzy obraz obejmujący.
Utwórz folder w katalogu domowym i skopiuj oba obrazy do folderu.
Skopiuj poniższy skrypt do pustego pliku i zapisz go jako auto_wall.py
wraz z dwoma przygotowanymi obrazkami.
W sekcji głównej skryptu znajduje się wiersz:
screen_check = "HDMI-0 connected"
w razie potrzeby zastąp HDMI-0
przez <your_second_screenname>
(uruchom polecenie, xrandr
jeśli to konieczne, aby się dowiedzieć)
Uruchom skrypt (i utrzymuj go w tle) za pomocą polecenia:
python3 /path/to/auto_wall.py
Teraz, jeśli podłączysz drugi ekran, tapeta na drugim ekranie powinna przełączyć się w ciągu kilku sekund na screen_2.jpeg
przygotowanie.
- Jeśli wszystko działa dobrze, dodaj go do aplikacji startowych.
Scenariusz
#!/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)
Zastępowanie obrazów
Jeśli chcesz zmienić tapetę, po prostu zastąp jeden lub oba obrazy skopiowane do folderu (ale pamiętaj nazwę) i usuń span_image.jpeg
utworzone przez skrypt.
Przetestowałem to na Ubuntu 14.04 i 14.10 i działało idealnie. Fakt, że używasz Gnome, nie powinien mieć znaczenia.
Ręczne przełączanie ustawień tapety za pomocą kombinacji klawiszy
Jeśli z jakiegoś powodu wolisz ręcznie przełączyć się na tapetę łączoną po podłączeniu / odłączeniu monitora zewnętrznego, możesz zastąpić trzy ostatnie linie:
while True:
arrange()
time.sleep(5)
pojedynczą linią:
arrange()
i dodaj skrót klawiaturowy, aby wykonać przełączenie: „Ustawienia systemu”> „Klawiatura”> „Skróty”> „Skróty niestandardowe”
Dodaj polecenie:
python3 /path/to/auto_wall.py
do wybranej kombinacji klawiszy.