Com uma solução alternativa, isso pode ser feito muito bem. Usando xdotool
, você pode mover o mouse até a posição do menu Aplicativos, abri-lo e voltar automaticamente para sua posição original.
Como tudo acontece muito rapidamente e o mouse é movido de volta para sua posição original, você não notará isso.
OscriptassumequeomenuAplicativosestánocantosuperioresquerdo,comonaimagemacima.Senãoforesseocaso,ascoordenadasemcmd1
devemseralteradas.
#!/usr/bin/env python3
import subprocess
import time
cursordata = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8").split()
loc = [d.split(":")[1] for d in cursordata[:2]]
cmd1 = "xdotool mousemove 10 5"; cmd2 = "xdotool click 1"; cmd3 = "xdotool mousemove "+(" ").join(loc)
for cmd in [cmd1, cmd2, cmd3]:
subprocess.Popen(["/bin/bash", "-c", cmd])
time.sleep(0.05)
Em detalhes:
busque a posição atual do mouse:
cursordata = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8").split()
Analise a saída (x / y) em coordenadas:
loc = [d.split(":")[1] for d in cursordata[:2]]
Execute os comandos [cmd1, cmd2, cmd3]
para subsequentemente:
- mova o mouse para o menu "Aplicativos"
- clique em
- mova o mouse de volta para onde quer que esteja
for cmd in [cmd1, cmd2, cmd3]:
subprocess.Popen(["/bin/bash", "-c", cmd])
time.sleep(0.05)
Como usar o script
-
Instale
xdotool
:sudo apt-get install xdotool
-
Cole o script em um arquivo vazio, salve-o como
open_appmenu.py
-
Teste-o com o comando:
python3 /path/to/open_appmenu.py
-
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/open_appmenu.py
Mover para os outros itens
Depois de abrir o menu Aplicativos, basta alternar para o próximo item com as teclas de seta.
Editar: versão generalizada
Abaixo, uma versão do script que pode ser usada de forma flexível, para clicar na tela em qualquer posição, para ser alterada facilmente. O script pode ser executado com duas opções:
-
para definir (lembrar) a localização atual do mouse:
run_click -set
-
para clicar na última posição lembrada:
run_click -run
Se nenhuma posição foi definida, uma mensagem de zenity será exibida, convidando para definir uma posição:
Oscriptcriaumarquivooculto;~/.run_click
ondearmazenaasúltimascoordenadaslembradas.
Comoteste,colocoosdoiscomandossobascombinaçõesdeteclas:Ctrl+Alt+ReCtrl+Alt+A,facilitandoamudançadaposiçãodocliquenolocal.
Comoconfigurar
comonoprimeiroscript,instale
xdotool
:sudoapt-getinstallxdotool
copieoscriptabaixoemumarquivovazio,salve-ocomo
run_click
(semextensão)em~/bin
(crieodiretório,senecessário)etorneoscriptexecutável.- Sevocêacaboudecriar
~/bin
,executesource~/.profile
. - Testeosdoiscomandos,primeiro
run_click-set
e,emseguida,run_click-run
paraversetudofuncionaconformeoesperado. - Adicioneosdoiscomandosaduascombinaçõesdeteclasdiferentes:escolha:Configuraçõesdosistema>"Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione os comandos.
O script
#!/usr/bin/env python3
import subprocess
import time
import sys
import os
option = sys.argv[1]
datafile = os.path.join(os.environ["HOME"], ".run_click")
def get_mousepos():
cursordata = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8").split()
return [d.split(":")[1] for d in cursordata[:2]]
if option == "-run":
try:
data = open(datafile).read()
coords = (" ").join([l for l in data.splitlines()])
except FileNotFoundError:
message = "Please run the command: 'run_click -set' first, to set the click position"
subprocess.Popen(["zenity", "--info", "--text", message])
else:
cmd1 = "xdotool mousemove "+coords; cmd2 = "xdotool click 1"; cmd3 = "xdotool mousemove "+(" ").join(get_mousepos())
for cmd in [cmd1, cmd2, cmd3]:
subprocess.Popen(["/bin/bash", "-c", cmd])
time.sleep(0.05)
elif option == "-set":
open(datafile, "wt").write(("\n").join(get_mousepos()))