Birden çok monitörde farklı duvar kağıtları


16

Dizüstü bilgisayarım ve monitörüm var. Çoğu zaman dizüstü bilgisayarım monitörden HDMI üzerinden bağlanır. Ubuntu Gnome 14.04 kullanıyorum ve işte istediğim şey:

  • Monitör bağlı olmadığında basit bir arka plan görüntüsü istiyorum
  • Monitör bağlandığında, dizüstü bilgisayarımda aynı arka plan görüntüsüne ve monitörümde başka bir görüntüye sahip olmak istiyorum.

Mümkün mü? Bu soruyu azotun yanı sıra buldum . Ama ikisi de bana yardım etmedi.

Düzenle:

Gnome-tweak-tool'u çalıştırdıktan sonra, sol taraftaki panelde "Desktop" sekmesine gidin ve "File manager'un masaüstünü ele geçirmesini sağla" ayarını kapatın.

Kaynak: Ubuntu Forumları .

Maalesef bunu Gnome-Tweak-Tool'umda bulamıyorum: gnome çimdik-aracı

Ben dconf-editoraltında kullanarak aynı yapılandırmayı bulmaya çalıştım org.gnome.desktop.backgroundama tüm söyledi:

Özet: Masaüstü Arka Plan Çiz
Açıklama: GNOME masaüstü arka planı çizin. DEPRECATED : Bu anahtar kullanımdan kaldırıldı ve yok sayıldı.

Ayrıca benim gnome-shell --versionolduğunu GNOME Shell 3.10.4.

Bu özünde çıktıdır xrandr. Birincisi ikinci monitör bağlı. İkincisi onsuz.


Nitrogen kullanırken, dosya yöneticisinin masaüstünü teslim etmesini devre dışı bıraktınız mı?
Kaz Wolfe

Gnome-Tweak-Tool'daki seçeneği artık bulamadım. Soruma ek bilgiler ekledim. Umarım yardımcı olur
byf-ferdy

@Waaaaaat nitro sadece 13.10 ve
altı içindir

Sanırım bir şeyim var, ekranlarınızın çözünürlükleri neler?
Jacob Vlijm

her ikisi de 1920x1080 (16: 9). Dizüstü bilgisayar 19 `` Sanırım Monitör 27 ''.
byf-ferdy

Yanıtlar:


10

Numara

Ana ekran ve ikinci ekran için ayrı ayrı duvar kağıtları ayarlamak imkansız görünüyor. Ne olabilir ancak alınacak bir duvar kağıdı ayarlamak ve iki ekranlarında üzerinde yayılmış sahip olmaktır. Seçtiğiniz iki duvar kağıdının otomatik olarak yayılan bir görüntüsünü oluşturabilir ve ikinci ekranın bağlı olup olmamasına bağlı olarak duvar kağıdını ve resim seçeneklerini de (otomatik olarak) değiştirebiliriz.
Güzel görünmesi için, her iki ekranın en azından dikey ekran çözünürlüğünün aynı olması gerekir, bu da durumunuzda geçerlidir.

resim açıklamasını buraya girin

Uygulamada

Hazırlık

Bu çözümde, yapmanız gereken hazırlama işi:

  • İlk olarak, yayılan resmi otomatik olarak oluşturmak için imagemagick'i yükleyin:

    sudo apt-get install imagemagick
    
  • Her iki ekran için de seçtiğiniz iki ayrı arka plan görüntüsü hazırlayın:

    • Boyutlar , ekranın boyutlarıyla tam olarak eşleşmelidir (sizin durumunuzda 16: 9)
    • Her iki görüntünün dikey çözünürlüğü de tamamen aynı olmalıdır.

    diyoruz screen_1.jpegve screen_2.jpeg(tam olarak bu isimleri). Bir komut dosyası yayılan görüntüyü oluşturur.

  • Ana dizininizde bir klasör oluşturun ve her iki görüntüyü de klasöre kopyalayın.

  • Aşağıdaki komut dosyasını boş bir dosyaya kopyalayın ve auto_wall.pyhazırladığınız iki resim ile birlikte kaydedin .

  • Komut dosyasının baş bölümünde bir satır vardır:

    screen_check = "HDMI-0 connected"
    

    Gerekirse değiştirin HDMI-0tarafından <your_second_screenname>(komutu çalıştırmak xrandröğrenmek için gerekirse)

Komutu kullanarak komut dosyasını çalıştırın (ve arka planda çalışmaya devam edin):

python3 /path/to/auto_wall.py

Şimdi ikinci ekranınızı bağlarsanız, ikinci ekranınızdaki duvar kağıdı screen_2.jpeghazırladığınız birkaç saniye içinde değişmelidir .

  • Her şey yolunda giderse, başlangıç ​​uygulamalarınıza ekleyin.

Senaryo

#!/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)

Görüntüleri değiştirme

Duvar kağıdını / duvarlarını değiştirmek istiyorsanız, klasöre kopyaladığınız görüntülerden birini veya her ikisini değiştirin (ancak adı unutmayın) ve span_image.jpegkomut dosyası tarafından oluşturulan.

Ubuntu 14.04 ve 14.10'da test ettim ve mükemmel çalıştı. Gnome'u kullanmanız bir fark yaratmamalıdır.

Tuş kombinasyonuyla duvar kağıdı ayarlarını manuel olarak değiştirme

Herhangi bir nedenle, harici monitörü bağladıktan / çıkardıktan sonra yayılmış duvar kağıdına manuel olarak geçmeyi tercih ederseniz, son üç satırı değiştirebilirsiniz:

while True:
    arrange()
    time.sleep(5)

tek bir satırla:

arrange()

ve geçiş yapmak için bir klavye kısayolu ekleyin: "Sistem Ayarları"> "Klavye"> "Kısayollar"> "Özel Kısayollar"

Komutu ekleyin:

python3 /path/to/auto_wall.py

istediğiniz bir tuş kombinasyonuna.


Harika görünüyor. En kısa zamanda kontrol edeceğim ve size bildireceğim! Yine de iş için teşekkürler!
byf-ferdy

@ byf-ferdy oops, yanlışlıkla kendi (test) dizinimi komut dosyasında bıraktı, şimdi düzeltti.
Jacob Vlijm

Harika iş! Mükemmel çalışıyor!
byf-ferdy

1
Güzel soru için teşekkürler! Bunu yapmaktan hoşlanıyorum.
Jacob Vlijm

1

Yukarıdaki yanıta ek olarak, bu hizmeti kullanarak iki tam boyutlu görüntüye katılabilirsiniz: http://www.photojoiner.net/

İki veya daha fazla görüntüye katıldıktan sonra, arka plan ayarları sayfasında "yayılma" seçeneğini belirtmeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.