Diversi sfondi su più monitor


16

Ho un laptop e un monitor. Il più delle volte il mio laptop è collegato al monitor tramite HDMI. Uso Ubuntu Gnome 14.04 ed ecco quello che voglio:

  • Quando nessun monitor è collegato, voglio una semplice immagine di sfondo
  • Quando il monitor è collegato, vorrei avere la stessa immagine di sfondo sul mio laptop e un'altra sul mio monitor.

È possibile? Ho trovato questa domanda oltre all'azoto . Ma entrambi non mi hanno aiutato.

Modificare:

Dopo aver eseguito gnome-tweak-tool, vai alla scheda "Desktop" nel pannello di sinistra e quindi disattiva l'impostazione "Gestione file per gestire il desktop".

Fonte: forum Ubuntu .

Sfortunatamente non riesco a trovarlo nel mio strumento Gnome-Tweak: gnome-tweak-tool

Ho provato a trovare la stessa configurazione usando dconf-editorsotto org.gnome.desktop.backgroundma tutto ciò che diceva era:

Riepilogo: Disegna sfondo del desktop
Descrizione: Chiedi a GNOME di disegnare lo sfondo del desktop. DEPRECATED : questa chiave è obsoleta e ignorata.

Anche il mio gnome-shell --versionè GNOME Shell 3.10.4.

In questo senso è l'output di xrandr. Il primo è con il secondo monitor collegato. Il secondo è senza di essa.


Quando si utilizza Nitrogen, il gestore file ha disabilitato la gestione del desktop?
Kaz Wolfe,

Non sono più riuscito a trovare l'opzione nello strumento Gnome-Tweak. Ho aggiunto ulteriori informazioni alla mia domanda. Spero che sia d'aiuto
ferf

@Whaaaaaat nitro è solo per 13.10 e inferiori : /
blade19899

Penso di avere qualcosa, quali sono le risoluzioni dei tuoi schermi?
Jacob Vlijm,

entrambi 1920x1080 (16: 9). Il laptop è 19 '' penso, Monitor 27 ''.
ferito

Risposte:


10

Il trucco

Sembra impossibile impostare separatamente gli sfondi per la schermata principale e la seconda schermata. Ciò che si può fare, tuttavia, è impostare uno sfondo e farlo estendere su due schermi. Possiamo creare automaticamente un'immagine di spanning di due sfondi a tua scelta e (anche automaticamente) cambiare lo sfondo e le opzioni dell'immagine, a seconda che il secondo schermo sia collegato o meno.
Per renderlo piacevole, è necessario che almeno la risoluzione verticale dello schermo di entrambi gli schermi sia identica, come nel caso della tua situazione.

inserisci qui la descrizione dell'immagine

In pratica

Preparazione

In questa soluzione, il lavoro di preparazione che devi fare è:

  • Innanzitutto, installa imagemagick per creare automaticamente l'immagine di spanning:

    sudo apt-get install imagemagick
    
  • Prepara due immagini di sfondo separate di tua scelta per entrambi gli schermi:

    • Le dimensioni devono corrispondere esattamente alle dimensioni dello schermo (16: 9 nel tuo caso)
    • La risoluzione verticale di entrambe le immagini dovrebbe essere esattamente la stessa.

    chiamali screen_1.jpege screen_2.jpeg(esattamente quei nomi). Uno script creerà l'immagine di spanning.

  • Crea una cartella nella tua home directory e copia entrambe le immagini nella cartella.

  • Copia lo script seguente in un file vuoto e salvalo come auto_wall.py, insieme alle due immagini che hai preparato.

  • Nella sezione head dello script, c'è una riga:

    screen_check = "HDMI-0 connected"
    

    se necessario, sostituisci HDMI-0con <your_second_screenname>(esegui il comando xrandrse necessario per scoprirlo)

Esegui lo script (e mantienilo in esecuzione in background) con il comando:

python3 /path/to/auto_wall.py

Ora, se colleghi la seconda schermata, lo sfondo della seconda schermata dovrebbe passare in pochi secondi a screen_2.jpegte pronto.

  • Se tutto funziona bene, aggiungilo alle tue applicazioni di avvio.

Il copione

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

Sostituzione di immagini

Nel caso in cui si desideri cambiare lo / gli sfondo / i, è sufficiente sostituire una o entrambe le immagini copiate nella cartella (ma attenzione al nome) e rimuovere il span_image.jpeg, creato dallo script.

L'ho provato su Ubuntu 14.04 e 14.10 e ha funzionato perfettamente. Il fatto che usi Gnome non dovrebbe fare la differenza.

Cambio manuale delle impostazioni dello sfondo con una combinazione di tasti

Se, per qualche motivo, preferisci passare manualmente allo sfondo con spanning dopo aver collegato / scollegato il monitor esterno, puoi sostituire le ultime tre righe:

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

da una sola riga:

arrange()

e aggiungi una scorciatoia da tastiera per eseguire il passaggio: "Impostazioni di sistema"> "Tastiera"> "Scorciatoie"> "Scorciatoie personalizzate"

Aggiungi il comando:

python3 /path/to/auto_wall.py

a una combinazione chiave di tua scelta.


Questo sembra fantastico. Lo controllerò appena posso e ti faccio sapere! Grazie comunque per il lavoro!
ferito

@ byf-ferdy oops, ho lasciato accidentalmente la mia directory (test) nello script, risolto ora.
Jacob Vlijm,

Ottimo lavoro! Funziona perfettamente!
parte

1
Grazie per la bella domanda! Questo è quello che mi piace fare.
Jacob Vlijm,

1

Oltre alla risposta sopra, puoi unire due immagini di dimensioni esatte usando questo servizio: http://www.photojoiner.net/

Dopo aver unito due o più immagini, è necessario selezionare l'opzione "span" nella pagina delle impostazioni dello sfondo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.