Como colocar o lançador de unidade em diferentes posições em diferentes monitores

4

Eu tenho dois monitores: Um é um grande monitor de 2560x1600, que eu uso como monitor principal e mais trabalho, e o outro é um monitor de 1360x768 configurado verticalmente para uso como um monitor 'desligado' - para coisas como meu calendário e e-mail, popups de notificação, ou para um navegador da Web durante jogos, etc.

Atualmente, tenho configurado para que o iniciador de unidade esteja localizado apenas na borda esquerda do monitor principal.

Eu gostaria de poder ter um lançador de unidade separado para cada monitor. A vantagem de fazer isso é que os aplicativos em cada monitor são associados apenas ao inicializador nesse monitor, o que ajuda a manter a área de trabalho organizada.

Infelizmente, o espaço horizontal é um prêmio no monitor desligado - eu não quero ter que usar 48 pixels extras de espaço horizontal apenas para isso.

Uma solução para isso seria alterar a configuração da posição do iniciador (por exemplo, por meio da Ferramenta Unity Tweak ou similar) para a parte inferior. No entanto, esta configuração afetaria a posição do lançador em ambas as telas, e eu quero manter o lançador na borda esquerda do meu monitor principal.

Como posso configurar a unidade para usar posições de lançadores diferentes em monitores diferentes?

Uma solução alternativa seria desativar automaticamente o ativador de unidade no monitor desligado, mas quero manter a barra de inicialização estática no monitor principal. Se houver uma maneira de configurar o comportamento de ocultação automática por monitor, isso também seria uma solução aceitável.

Eu preferiria manter o ambiente de unidade de desktop padrão, mas se houver outro DE que lide com vários monitores muito bem, talvez eu esteja interessado.

    
por AJMansfield 03.06.2016 / 15:44

2 respostas

7

Mover o lançador automaticamente, dependendo da tela ativa

Uma possível solução é alterar automaticamente a posição do lançador, dependendo da posição atual do mouse:

  • se estiver na tela esquerda, mova o ativador para a esquerda
  • se estiver na tela da direita, mova para a parte inferior

No teste eu corri, funcionou surpreendentemente suave, e o Windows se adaptou bem à mudança.

O script

#!/usr/bin/env python3
import subprocess
import time

scr_data = subprocess.check_output(["xrandr"]).decode("utf-8")
border = int([s.split("x")[0] for s in scr_data.split() if "+0+0" in s][0])
left_scr = [l.split()[0] for l in scr_data.splitlines() if "+0+0" in l][0]

key = "com.canonical.Unity.Launcher"
item = "launcher-position"

def catch_mouse():
    return int(subprocess.check_output([
        "xdotool", "getmouselocation"
        ]).decode("utf-8").split()[0].split(":")[1])

test1 = ""

while True:
    time.sleep(1)
    test2 = catch_mouse() <= border
    if test2 != test1:
        if test2 == True:
            cmd = ["gsettings", "set", key, item, "Left"]
        else:
            cmd = ["gsettings", "set", key, item, "Bottom"]
        subprocess.Popen(cmd)
    test1 = test2

Como usar

  1. O script precisa de xdotool :

    sudo apt-get install xdotool
    
  2. Copie o script em um arquivo vazio, salve-o como move_launcher.py

  3. Teste- execute-o pelo comando (de um terminal)

    python3 /path/to/move_launcher.py
    
  4. Se tudo funcionar bem, adicione a Startup Applications: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

    /binh/bash -c "sleep 15 && python3 && /path/to/move_launcher.py
    

EDITAR

... ou mais avançado, apenas um lançador na tela ativa em uma posição arbitrária.

... um script que irá definir apenas um lançador (na tela esquerda, no lado esquerdo):

...enquantovocêestátrabalhandonatelaesquerda.Issolhedaráumavisãocompletanateladadireita...

...eumlançadornaparteinferiordasegundatela:

...Sevocêsemoverparaateladadireita,dando-lheolançadorquevocêprecisanaposiçãodesejadanateladadireita.

Comomencionado,no(s)teste(s),asjanelasforamadaptadassemerros.

Oscript

#!/usr/bin/env python3 import subprocess import time scr_data = subprocess.check_output(["xrandr"]).decode("utf-8") border = int([s.split("x")[0] for s in scr_data.split() if "+0+0" in s][0]) left_scr = [l.split()[0] for l in scr_data.splitlines() if "+0+0" in l][0] right_scr = [l.split()[0] for l in scr_data.splitlines() if all([ not "+0+0" in l, l.count("+") == 2])][0] key = "com.canonical.Unity.Launcher" item = "launcher-position" subprocess.call(["dconf", "write", "/org/compiz/profiles/unity/plugins/unityshell/num-launchers", "1"]) def catch_mouse(): return int(subprocess.check_output([ "xdotool", "getmouselocation" ]).decode("utf-8").split()[0].split(":")[1]) test1 = "" while True: time.sleep(1) test2 = catch_mouse() <= border if test2 != test1: if test2 == True: cmd1 = ["xrandr", "--output", left_scr, "--primary"] cmd2 = ["gsettings", "set", key, item, "Left"] else: cmd1 = ["xrandr", "--output", right_scr, "--primary"] cmd2 = ["gsettings", "set", key, item, "Bottom"] subprocess.Popen(cmd1) subprocess.call(cmd2) test1 = test2

Para usar

  • Esta versão é executada exatamente como a primeira.

Nota

Estes são apenas dois exemplos. Muitas coisas são possíveis.

Dois lançadores, ao mesmo tempo em uma posição diferente por tela , são atualmente impossíveis, até que alguém crie a opção ...

    
por Jacob Vlijm 03.06.2016 / 16:25
1

Não consigo ver um mecanismo para escolher um local diferente para um único lançador (por exemplo, Unity) em monitores diferentes.

Dado o problema do mercado imobiliário (horizontal limitado), vejo que colocar um lançador na parte inferior da tela e ocultá-lo automaticamente seria uma solução.

No Ubuntu 16.04 LTS, você pode mover o Iniciador para o fundo, mas percebo que isso resulta na ausência do Iniciador no lado esquerdo do seu monitor principal (seu outro problema).

Então - e se você tivesse dois lançadores (escondidos) nas duas telas? Uma no lado esquerdo e outra na parte inferior da tela?

Veja este artigo para um mecanismo de uso de um Launcher alternativo (Cairo Dock): link

Eu testei isso (14.04 LTS) e posso confirmar a instalação do Unity Tweak Tool e o Cairo Dock fornecerá dois Launchers (ocultos, se quiser) em ambas as telas - um (Unity Launcher) no lado esquerdo e outro (Cairo Dock) na parte inferior da tela.

A partir da minha avaliação de suas necessidades, isso atenderia a ambos, mas significaria ter dois Launchers em execução nas duas telas para que você possa escolher o que usar quando lhe convier.

O Cairo-Dock permite que você, se tiver vários monitores, gerencie a localização do Dock / Launcher de modo que ele apareça em um local específico em apenas um dos monitores, aproveitando os recursos do Xinerama.

Eu não acho que isso traria benefícios significativos se o Dock / Launcher for sempre auto-escondido, no entanto, pode fornecer alguma flexibilidade e potencialmente uma solução que eu não consigo pensar ...:)

Veja aqui a opção: link

    
por Simon 03.06.2016 / 16:06