Mostrar lançador via encadernação

0

Eu uso dois monitores (o da direita é menor que o da esquerda em pixels e métricas físicas) e muitas vezes quero abrir algo no monitor certo no launcher que está em autohide. (Bordas pegajosas estão desativadas nas configurações de exibição, então mover o cursor entre as telas parece mais natural.) Isso requer que eu mova o cursor lentamente para a borda esquerda do monitor direito, porque se eu movê-lo tão rápido como de costume, o cursor se move para o monitor esquerdo.

Eu gostaria que eu pudesse mover meu cursor para a borda inferior para desaparecer no lançador. No entanto, não consegui encontrar uma recomendação para fazê-lo.

Se houver um comando para desativar o iniciador ou outra maneira de fazer isso, avise-me, por favor.

    
por UTF-8 13.04.2015 / 19:15

1 resposta

1

Mostra o lançador quando o mouse entra em uma área "acionadora"

O script abaixo ativa o ativador (auto-oculto) quando o ponteiro do mouse entra em uma determinada área ( área de ativação na imagem).

Como não seria conveniente desenhar uma linha exatamente reta em direção ao ícone do lançador de destino, depois que o ativador foi ativado, criei uma área de 200px do lado esquerdo da direita ) tela, na qual você pode se movimentar livremente sem esconder o lançador novamente (a área de movimento ).

Comousar

  1. Oscriptusaxdotoolparaobteraposiçãodomouse:

    sudoapt-getinstallxdotool
  2. Copieoscriptemumarquivovazio,salve-ocomotrigger_launcher.py

  3. Naseçãoheaddoscript,eudefinoosvalorescomoelesdevemserapropriadosparasuacombinaçãodetelaetop-alligned.Se,noentanto,vocêusaroscriptcomoutratela(tamanhos)ouquiseralterarasmarges(disparadoras),poderáalterá-lasnacabeçadoscript:

    # the script assumes the two screens are top-alligned (!) #-- set the area to trigger the launcher (from left bottom of second screen) below: vert_marge = 50 hor_marge = 200 #-- set the width of the left screen below: width_screen1 = 1680 #-- set the height of the right screen below: height_screen2 = 900 #---
  4. Teste o script com o comando:

    python3 /path/to/trigger_launcher.py
    
  5. Se tudo funcionar bem, adicione-o aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

    /bin/bash -c "sleep 15&&python3 /path/to/trigger_launcher.py"
    

O script

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

# the script assumes the two screens are top-alligned (!)

#-- set the area to trigger the launcher (from left bottom of second screen) below:
vert_marge = 50
hor_marge = 200
#-- set the with of the left screen below:
width_screen1 = 1680
#-- set the height of the right screen below:
height_screen2 = 900
#--


vert_line = height_screen2-vert_marge
hor_line2 = width_screen1+hor_marge
k = [" org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ ",
    "gsettings set ", "launcher-hide-mode 1", "launcher-hide-mode 0"]

hide = k[1]+k[0]+k[2]; show = k[1]+k[0]+k[3]

def set_launcher(command):
    subprocess.Popen(["/bin/bash", "-c", command])

def get_mousepos():
    curr = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
    return [int(it.split(":")[1]) for it in curr.split()[:2]]

current1 = get_mousepos()
while True:
    time.sleep(0.3)
    current2 = get_mousepos()
    if not current1 == current2:
        test1 = [int(current1[1]) > vert_line, width_screen1 < int(current1[0]) < hor_line2]
        test2 = [int(current2[1]) > vert_line, width_screen1 < int(current2[0]) < hor_line2]
        test3 = any([int(current2[0]) > hor_line2, int(current2[0]) < width_screen1])
        if (all(test1), all(test2)) == (False, True):
            set_launcher(show)
        elif test3 == True:
            set_launcher(hide)
    current1 = current2

Editar

Abaixo de uma versão com intervalo de 3 segundos, em vez de "área de movimento", como você mencionou em um comentário.

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

# the script assumes the two screens are top-alligned (!)

#-- set the area to trigger the launcher (from left bottom of second screen) below:
vert_marge = 50
hor_marge = 200
#-- set the with of the left screen below:
width_screen1 = 1680
#-- set the height of the right screen below:
height_screen2 = 900
#--

vert_line = height_screen2-vert_marge
hor_line2 = width_screen1+hor_marge
k = [" org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ ",
    "gsettings set ", "launcher-hide-mode 1", "launcher-hide-mode 0"]

hide = k[1]+k[0]+k[2]; show = k[1]+k[0]+k[3]

def set_launcher(command):
    subprocess.Popen(["/bin/bash", "-c", command])

def get_mousepos():
    curr = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
    return [int(it.split(":")[1]) for it in curr.split()[:2]]

current1 = get_mousepos()
while True:
    time.sleep(0.3)
    current2 = get_mousepos()
    if not current1 == current2:
        test1 = [int(current1[1]) > vert_line, width_screen1 < int(current1[0]) < hor_line2]
        test2 = [int(current2[1]) > vert_line, width_screen1 < int(current2[0]) < hor_line2]
        if (all(test1), all(test2)) == (False, True):
            set_launcher(show)
            time.sleep(3)
            set_launcher(hide)
    current1 = current2
    
por Jacob Vlijm 14.04.2015 / 20:29