O truque
Parece impossível definir papéis de parede separadamente para a tela principal e a segunda tela. No entanto, o que pode ser feito é definir um papel de parede e estendê-lo em duas telas. Podemos criar automaticamente uma imagem estendida 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 de a segunda tela estar conectada ou não.
Para torná-la agradável, é necessário que pelo menos a resolução vertical da tela seja idêntica, como é o caso da sua situação.
Na prática
Preparação
Nesta solução, o trabalho de preparação que você deve fazer é:
Primeiro, instale o imagemagick para criar automaticamente a imagem de abrangência:
sudo apt-get install imagemagick
Prepare duas imagens de fundo separadas de sua escolha para as duas telas:
- As dimensões devem corresponder exatamente às dimensões da tela (16: 9 no seu caso)
- A resolução vertical de ambas as imagens deve ser exatamente a mesma.
chame-os screen_1.jpeg
e screen_2.jpeg
(exatamente esses nomes). Um script criará a imagem de abrangência.
Crie uma pasta no seu diretório pessoal e copie as duas imagens para a pasta.
Copie o script abaixo em um arquivo vazio e salve-o como auto_wall.py
, junto com as duas imagens que você preparou.
Na seção principal do script, há uma linha:
screen_check = "HDMI-0 connected"
se necessário, substitua HDMI-0
por <your_second_screenname>
(execute o comando xrandr
se necessário para descobrir)
Execute o script (e mantenha-o em execução em segundo plano) pelo comando:
python3 /path/to/auto_wall.py
Agora, se você conectar sua segunda tela, o papel de parede da segunda tela deverá mudar dentro de alguns segundos para screen_2.jpeg
você estar preparado.
- Se tudo funcionar bem, adicione-o aos 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)
Substituindo imagens
Caso deseje alterar os papéis de parede, substitua uma ou ambas as imagens que você copiou para a pasta (mas lembre-se do nome) e remova a span_image.jpeg
, criada 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.
Alternando manualmente as configurações do papel de parede com uma combinação de teclas
Se, por algum motivo, você preferir alternar para o papel de parede estendido manualmente após 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 troca: "Configurações do sistema"> "Teclado"> "Atalhos"> "Atalhos personalizados"
Adicione o comando:
python3 /path/to/auto_wall.py
para uma combinação de teclas de sua escolha.