O truque
Parece impossível definir papéis de parede separadamente para a tela principal e a segunda tela. O que pode ser feito, no entanto, é definir um papel de parede e tê-lo dividido em duas telas. Podemos criar automaticamente uma imagem abrangente de dois papéis de parede de sua escolha e (também automaticamente) alternar o papel de parede e as opções de imagem, dependendo se a segunda tela está conectada ou não.
Para fazer com que pareça bonito, é necessário que pelo menos a resolução da tela vertical de ambas as telas seja idêntica, o que é o caso em sua situação.
Naprática
Preparação
Nestasolução,otrabalhodepreparaçãoquevocêprecisafazeré:
Primeiro,instaleoimagemagickparacriarautomaticamenteaimagemdeabrangência:
sudoapt-getinstallimagemagick
Prepareduasimagensdeplanodefundoseparadasdesuaescolhaparaasduastelas:
- Asdimensõesdevemexatamentecorresponderàsdimensõesdatela(16:9noseucaso)
- Aresoluçãoverticaldasduasimagensdeveserexatamenteamesma.
chame-osde
screen_1.jpeg
escreen_2.jpeg
(exatamenteessesnomes).Umscriptcriaráaimagemdeabrangência.Crieumapastanoseudiretóriopessoalecopieasduasimagensparaapasta.
Copieoscriptabaixoemumarquivovazioesalve-ocomo
auto_wall.py
,juntocomasduasimagensquevocêpreparou.Naseçãoprincipaldoscript,háumalinha:
screen_check="HDMI-0 connected"
se necessário, substitua
HDMI-0
por<your_second_screenname>
(execute o comandoxrandr
, se necessário, para descobrir)
Execute o script (e mantenha-o em segundo plano) pelo comando:
python3 /path/to/auto_wall.py
Agora, se você conectar sua segunda tela, o papel de parede na segunda tela deverá mudar em alguns segundos para screen_2.jpeg
que você preparou.
- Se tudo funcionar bem, adicione-o aos seus aplicativos de inicialização.
O script
#!/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)
Substituir imagens
Caso você queira alterar o (s) papel de parede (s), apenas substitua uma ou ambas as imagens que você copiou para a pasta (mas lembre-se do nome) e remova o span_image.jpeg
criado pelo script.
Eu testei no Ubuntu 14.04 e 14.10, e funcionou perfeitamente. O fato de você usar o Gnome não deve fazer diferença.
Alterando as configurações do papel de parede manualmente com uma combinação de teclas
Se, por algum motivo, você preferir alternar manualmente para o papel de parede expandido depois de conectar / desconectar o monitor externo, poderá substituir as três últimas linhas:
while True:
arrange()
time.sleep(5)
por uma única linha:
arrange()
e adicione um atalho de teclado para fazer a mudança: "Configurações do sistema" > "Teclado" > "Atalhos" > "Atalhos personalizados"
Adicione o comando:
python3 /path/to/auto_wall.py
para uma combinação de teclas à sua escolha.