Der Trick
Es scheint unmöglich, Hintergrundbilder für den Hauptbildschirm und den zweiten Bildschirm getrennt festzulegen. Sie können jedoch ein Hintergrundbild festlegen und es über zwei Bildschirme verteilen. Wir können automatisch ein übergreifendes Bild von zwei Hintergrundbildern Ihrer Wahl erstellen und (auch automatisch) die Hintergrundbild- und Bildoptionen ändern, je nachdem, ob der zweite Bildschirm angeschlossen ist oder nicht.
Damit es gut aussieht, muss mindestens die vertikale Bildschirmauflösung beider Bildschirme identisch sein, was in Ihrer Situation der Fall ist.
In der Praxis
Vorbereitung
In dieser Lösung müssen Sie folgende Vorbereitungsarbeiten ausführen:
Installieren Sie zunächst imagemagick, um das übergreifende Image automatisch zu erstellen:
sudo apt-get install imagemagick
Bereiten Sie für beide Bildschirme zwei separate Hintergrundbilder Ihrer Wahl vor:
- Die Abmessungen sollten genau mit den Abmessungen des Bildschirms übereinstimmen (16: 9 in Ihrem Fall).
- Die vertikale Auflösung beider Bilder sollte exakt gleich sein.
Nenne sie screen_1.jpeg
und screen_2.jpeg
(genau diese Namen). Ein Skript erstellt das übergreifende Image.
Erstellen Sie einen Ordner in Ihrem Ausgangsverzeichnis und kopieren Sie beide Bilder in den Ordner.
Kopieren Sie das folgende Skript in eine leere Datei und speichern Sie es auto_wall.py
zusammen mit den beiden vorbereiteten Bildern unter.
In der Kopfzeile des Skripts befindet sich eine Zeile:
screen_check = "HDMI-0 connected"
ggf. ersetzen HDMI-0
durch <your_second_screenname>
( xrandr
ggf. den Befehl ausführen , um dies herauszufinden)
Führen Sie das Skript mit dem folgenden Befehl aus (und lassen Sie es im Hintergrund laufen):
python3 /path/to/auto_wall.py
Wenn Sie nun Ihren zweiten Bildschirm anschließen, sollte sich das Hintergrundbild auf Ihrem zweiten Bildschirm innerhalb weniger Sekunden zu screen_2.jpeg
Ihnen ändern.
- Wenn alles gut funktioniert, fügen Sie es Ihren Startanwendungen hinzu.
Das Drehbuch
#!/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)
Bilder ersetzen
Wenn Sie das Hintergrundbild ändern möchten, ersetzen Sie einfach eines oder beide der Bilder, die Sie in den Ordner kopiert haben (achten Sie jedoch auf den Namen), und entfernen Sie das span_image.jpeg
vom Skript erstellte Bild .
Ich habe es auf Ubuntu 14.04 und 14.10 getestet und es hat perfekt funktioniert. Die Tatsache, dass Sie Gnome verwenden, sollte keinen Unterschied machen.
Manuelles Wechseln der Hintergrundeinstellungen mit einer Tastenkombination
Wenn Sie es aus irgendeinem Grund vorziehen, nach dem Anschließen / Trennen des externen Monitors manuell zum überspannten Hintergrundbild zu wechseln, können Sie die letzten drei Zeilen ersetzen:
while True:
arrange()
time.sleep(5)
durch eine einzelne Zeile:
arrange()
und fügen Sie eine Tastenkombination hinzu, um den Wechsel durchzuführen: "Systemeinstellungen"> "Tastatur"> "Tastenkombinationen"> "Benutzerdefinierte Tastenkombinationen"
Fügen Sie den Befehl hinzu:
python3 /path/to/auto_wall.py
zu einer Tastenkombination Ihrer Wahl.