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
-
O script precisa de
xdotool
:sudo apt-get install xdotool
-
Copie o script em um arquivo vazio, salve-o como
move_launcher.py
-
Teste- execute-o pelo comando (de um terminal)
python3 /path/to/move_launcher.py
-
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 ...