possibilidade de salvar as configurações atuais de resolução, papel de parede e arranjo de mesa no gnome 3

1

Toda vez que eu desconecto meus três monitores externos do meu laptop, ou quando eu os conecto de volta, toda a resolução e as configurações estendidas da área de trabalho ficam confusas. Vou ter que voltar as configurações para acertar novamente.

Estou usando o gnome 3.18.5 no Ubuntu 16.04. Eu tenho gráficos Intel HD 530 e uma Nvidia 960M com nvidia driver versão 375.39. Eu também instalei a extensão do shell do gnome chamada 'Fix-Multi-Monitors', que de fato corrigiu vários problemas, como o windows movendo-se apenas entre dois dos três monitores com atalhos de movimentação de janelas.

De qualquer forma, o que eu gostaria de fazer é ter as configurações salvas para quando eu conectei todos os três monitores, para que eu possa simplesmente executar um único script ou configuração, para que ele instantaneamente carregue como eu quero, ou talvez até isso aconteça automaticamente quando três monitores são detectados. Devo acrescentar que sempre conecto os monitores da mesma maneira.

O que também me incomoda é que eu tenho esse papel de parede ativado que abrange todos os três monitores, mas quando eles são desconectados, o papel de parede se torna uma linha fina no monitor do laptop com o resto da tela preta. Eu gostaria de ver apenas a parte do meio do papel de parede para mostrar nesse caso ou talvez outro papel de parede carregar automaticamente quando os monitores externos são desconectados. Espero que alguém possa me ajudar ou me direcionar da maneira certa para tornar essa experiência melhor.

Eu encontrei uma ferramenta de linha de comando chamada disper da qual li a man page e tentei vários comandos, mas não acho que é capaz de fazer o que eu quero.

Os caminhos para meus papéis de parede são:

/home/olm/Pictures/Wallpapers/3monitorwallpaper.jpg /home/olm/Pictures/Wallpapers/1monitorwallpaper.jpg

    
por Odin Mugabe 17.03.2017 / 20:29

2 respostas

0

1. Script para executar seu comando se quatro telas estiverem conectadas

O script abaixo é uma versão editada de este .

O que faz

Uma vez por cinco segundos, ele verifica o número de telas conectadas. Se o número for alterado, e o número total de telas conectadas é quatro, ele executa o comando xrandr que encontramos no (s) comentário (s).

Como usar

  1. Copie o script em um arquivo vazio, salve-o como four_screens.py
  2. Teste o script a partir de um terminal com o comando:

    python3 /path/to/four_screens.py
    

    e conecte suas telas. Depois que o quarto estiver conectado, sua configuração de tela deve ser feita.

  3. Se tudo funcionar bem, adicione o script a Startup Applications: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

    python3 /path/to/four_screens.py
    
#!/usr/bin/env python3
import subprocess
import time

#--- set both commands (connect / disconnect) below
connect_command = "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 "\
                  "&& xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 "\
                  "&& xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 "\
                  "&& xrandr --output eDP-1-1 --off"

disconnect_command = ""
#---

while True:
    time.sleep(5)
    try:
        subprocess.Popen(["xrandr"])
    except:
        pass
    else:
        break


# function to get the output of xrandr
def get(cmd): return subprocess.check_output(cmd).decode("utf-8")
# - to count the occurrenc of " connected "
def count_screens(xr): return xr.count(" connected ")
# - to run the connect / disconnect command(s)
def run_command(cmd): subprocess.Popen(["/bin/bash", "-c", cmd])

# first count
xr1 = None

while True:
    time.sleep(5)
    # second count
    xr2 = count_screens(get(["xrandr"]))
    # check if there is a change in the screen state
    if xr2 != xr1:
        if xr2 == 4:
            # command to run if connected (two screens)
            run_command(connect_command)
        elif xr2 == 1:
            # command to run if disconnected (one screen)
            # uncomment run_command(disconnect_command) to enable, then also comment out pass
            pass
            # run_command(disconnect_command)
    # set the second count as initial state for the next loop
    xr1 = xr2

Notas

  1. O roteiro é extremamente baixo em suco, não acrescenta qualquer carga perceptível.
  2. No mesmo script, podemos executar a alteração do papel de parede, mas para isso, poste o (caminho para) os dois papéis de parede em sua pergunta.

2. Como alternativa, um atalho

Se, por qualquer motivo, você preferir não executar um script de segundo plano, poderá executar o mesmo comando por meio de um atalho de teclado:

Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

/bin/bash -c "xrandr --output DP-2 --pos 0x0 --mode 1920x1200 && xrandr --output HDMI-0 --pos 1920x0 --mode 1920x1200 && xrandr --output DP-3 --pos 3840x0 --mode 1920x1200 && xrandr --output eDP-1-1 --off"
    
por Jacob Vlijm 20.03.2017 / 19:45
0

Entretanto, também encontrei este comando útil para alterar o papel de parede no gnome.

gsettings set org.gnome.desktop.background picture-uri file:///path/to/wallpaper.jpg

Agora eu uso isso junto com os comandos Xrandr em um script para configurar minha área de trabalho toda vez que eu conecto meus monitores ao laptop.

    
por Odin Mugabe 22.03.2017 / 21:17