Posso alternar o posicionamento do Iniciador Unity em várias telas?

2

Eu executo uma configuração assíncrona de dual montior. Meu monitor principal é um 16: 9 2560x1440 e meu secundário é 10:16 configuração 1200x1920. Eu uso o primário para codificação / jogos / vídeos e o secundário para navegação e materiais de referência. Eu também prefiro manter o lançador no monitor secundário, pois ele está no lado direito do meu primário.

O problema é que alguns dos meus jogos parecem pensar que o monitor no qual o lançador está ligado é considerado o monitor principal. Alguns jogos me dão opções de lançamento, onde posso forçá-lo ao meu monitor preferido, mas alguns precisam mudar o posicionamento do lançador nas configurações de exibição.

Gostaria de criar scripts para uma solução que permita alternar rapidamente as configurações, em vez de precisar ir para a tela toda vez. Eu encontrei ~/.config/monitors.xml e tentei trocar o monitor primário e depois matar unity-settings-daemon e reiniciá-lo, mas parece que não é sem efeitos colaterais. Alguém sabe de uma maneira melhor?

    
por JaredMcAteer 19.12.2015 / 22:13

1 resposta

3

Posições do lançador

As posições dos lançadores podem ser definidas por dois parâmetros:

1. Launcher em todas as telas, ou apenas em um

é definido pelos comandos:

dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 0

para mostrar em todas as telas ou

dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 1

para mostrar em uma única tela

2. A tela onde o Launcher é visível

No último caso (lançador somente em uma tela), o lançador é visível apenas na tela primária . Em outras palavras, precisamos definir (alternar) a tela principal. Isso pode ser feito com o comando:

xrandr --output <screen_name> --primary

O que precisamos é de um script para procurar a tela principal atualmente definida (a partir da saída do comando xrandr ) e escolher "o outro", assim como o script abaixo.

Oscript:

#!/usr/bin/env python3 import subprocess # Look up the currently set primary screen, set it to the other one scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines() scrs = [[l.split()[0], "primary" in l] for l in scr_data if " connected" in l] for screen in scrs: if not screen[1] == True: subprocess.Popen(["xrandr", "--output", screen[0], "--primary"])

Se você também precisa ter certeza de que o lançador está configurado para mostrar em uma única tela, use:

#!/usr/bin/env python3
import subprocess

# just to make sure the launcher is set to only show on one screen:
subprocess.Popen(["/bin/bash", "-c", "dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 1"])

# Look up the currently set primary screen, set it to the other one
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
scrs = [[l.split()[0], "primary" in l] for l in scr_data if " connected" in l]
for screen in scrs:
    if not screen[1] == True:
        subprocess.Popen(["xrandr", "--output", screen[0], "--primary"])

Como usar

  1. Copie o script em um arquivo vazio, salve-o como toggle_launcher.py
  2. Teste - execute-o pelo comando:

    python3 /path/to/toggle_launcher.py
    
  3. Se tudo funcionar bem, adicione-o a uma tecla de atalho: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

    python3 /path/to/toggle_launcher.py
    

    para uma combinação de teclas de atalho de sua escolha.

por Jacob Vlijm 20.12.2015 / 08:59