Różne tapety na wielu monitorach

16

Mam laptopa i monitor. Przez większość czasu mój laptop jest podłączony do monitora przez HDMI. Używam Ubuntu Gnome 14.04 i oto, czego chcę:

  • Gdy nie jest podłączony żaden monitor, chcę prosty obraz tła
  • Po podłączeniu monitora chciałbym mieć ten sam obraz tła na moim laptopie i inny na monitorze.

Czy to jest możliwe? Znalazłem to pytanie, podobnie jak azot . Ale oba mi nie pomogły.

Edytować:

Po uruchomieniu gnome-tweak-tool przejdź do zakładki „Pulpit” w panelu po lewej stronie, a następnie wyłącz ustawienie „Poproś menedżera plików o obsługę pulpitu”.

Źródło: Fora Ubuntu .

Niestety nie mogę znaleźć tego w moim narzędziu Gnome-Tweak: gnome-tweak-tool

Próbowałem znaleźć tę samą konfigurację przy użyciu dconf-editorunder, org.gnome.desktop.backgroundale wszystko co powiedział to:

Podsumowanie: Narysuj tło pulpitu
Opis: Niech GNOME narysuje tło pulpitu. DEPRECATED : ten klucz jest przestarzały i ignorowany.

Też gnome-shell --versionjest mój GNOME Shell 3.10.4.

W tej treści znajduje się wynik działania xrandr. Pierwszy jest z podłączonym drugim monitorem. Drugi jest bez niego.

byf-ferdy
źródło
Czy podczas korzystania z Nitrogen zablokowałeś zarządzanie plikami na pulpicie?
Kaz Wolfe
Nie mogłem już znaleźć tej opcji w narzędziu Gnome-Tweak. Dodałem dodatkowe informacje do mojego pytania. Mam nadzieję, że to pomaga
byf-ferdy
@Whaaaaaat nitro jest tylko dla 13.10 i niższych : /
blade19899
Myślę, że coś mam, jakie są rozdzielczości twoich ekranów?
Jacob Vlijm
zarówno 1920 x 1080 (16: 9). Laptop ma chyba 19 cali, monitor 27 cali.
byf-ferdy

Odpowiedzi:

10

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.

wprowadź opis zdjęcia tutaj

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.jpegi 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.pywraz z dwoma przygotowanymi obrazkami.

  • W sekcji głównej skryptu znajduje się wiersz:

    screen_check = "HDMI-0 connected"
    

    w razie potrzeby zastąp HDMI-0przez <your_second_screenname>(uruchom polecenie, xrandrjeś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.jpegprzygotowanie.

  • 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.jpegutworzone 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.

Jacob Vlijm
źródło
To wygląda niesamowicie. Sprawdzę to jak najszybciej i dam znać! W każdym razie dziękuję za pracę!
byf-ferdy
@ byf-ferdy oops, przypadkowo zostawiłem swój własny (testowy) katalog w skrypcie, naprawiłem go teraz.
Jacob Vlijm,
Świetna robota! Działa idealnie!
byf-ferdy
1
Dzięki za miłe pytanie! To właśnie lubię robić.
Jacob Vlijm,
1

Oprócz powyższej odpowiedzi możesz dołączyć dwa obrazy o dokładnej wielkości, korzystając z tej usługi: http://www.photojoiner.net/

Po dołączeniu do dwóch lub więcej obrazów należy wybrać opcję „rozpiętość” na stronie ustawień tła.

onesvat
źródło