Como o posicionamento do lançador é definido?
A veiculação do lançador é definida por algumas coisas:
-
O valor, definido em
/org/compiz/profiles/unity/plugins/unityshell/num-launchers
. Você pode lê-lo pelo comando:dconf read /org/compiz/profiles/unity/plugins/unityshell/num-launchers
que produzirá
1
(lançador em uma tela) ou0
(lançador em todas as telas).Para definir o lançador para visível em todas as telas pode ser feito pelo comando:
dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 0
-
Se o valor for
1
(visível em apenas uma tela), podemos definir em qual tela o inicializador aparece, configurando a tela segmentada como tela primária , com um comandoxrandr
:xrandr --output <screen_name> --primary
Esses são exatamente os comandos que o script (s) abaixo usa (s).
Script1; defina manualmente o iniciador apenas para a esquerda ou em ambos os ecrãs (com um atalho de teclas)
Dependendo do argumento em que você executa o script, ele define o ativador para exibição em todas as telas com o comando:
dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 0
ou em apenas um:
dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 1
No último caso, também define a tela da esquerda como a principal.
O script
#!/usr/bin/env python3
import subprocess
import sys
key = "dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers "
arg = sys.argv[1]
if arg == "left":
# the launcher is set to show on all screens
subprocess.Popen(["/bin/bash", "-c", key+"1"])
elif arg == "all":
# the launcher is set to show only on the left screen
subprocess.Popen(["/bin/bash", "-c", key+"0"])
# make sure the left screen is the primary one
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
left = [l.split()[0] for l in scr_data if "+0+0" in l][0]
subprocess.Popen(["xrandr", "--output", left, "--primary"])
Como usar
- Copie o script em um arquivo vazio, salve-o como
launcher_pos.py
-
Teste o script com os dois comandos (a partir de uma janela de terminal):
python3 /path/to/launcher_pos.py left
e
python3 /path/to/launcher_pos.py all
-
se tudo funcionar bem, adicione os comandos a duas combinações de teclas de atalho: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione os dois comandos aos atalhos disponíveis.
Script 2; versão automática
O script abaixo registra automaticamente qual é o espaço de trabalho atual (não importa quantas áreas de trabalho você tenha e em qual configuração).
Este script é executado com os espaços de trabalho, onde você quer o lançador somente à esquerda , como um argumento. Um exemplo:
Se você executar o script com o comando:
python3 /path/to/launcher_pos.py 2 3
O resultado é:
Oscript
import subprocess
import sys
import time
wspace = sys.argv[1:]
key = "dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers "
def get_res():
# get resolution
xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
pos = xr.index("current")
return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]
res = get_res()
def get_dt():
# get the current viewport
vp_data = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
dt = [int(n) for n in vp_data[3].split("x")]
cols = int(dt[0]/res[0])
curr_vpdata = [int(n) for n in vp_data[5].split(",")]
curr_col = int(curr_vpdata[0]/res[0])+1; curr_row = int(curr_vpdata[1]/res[1])
return str(curr_col+curr_row*cols)
def set_launcher(arg):
if arg == "left":
# the launcher is set to show on all screens
subprocess.Popen(["/bin/bash", "-c", key+"1"])
elif arg == "all":
# the launcher is set to show only on the left screen
subprocess.Popen(["/bin/bash", "-c", key+"0"])
# make sure the left screen is the primary one
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
left = [l.split()[0] for l in scr_data if "+0+0" in l][0]
subprocess.Popen(["xrandr", "--output", left, "--primary"])
curr_ws1 = get_dt()
while True:
time.sleep(1)
curr_ws2 = get_dt()
if curr_ws2 != curr_ws1:
if curr_ws2 in wspace:
arg = "left"
else:
arg = "all"
set_launcher(arg)
curr_ws1 = curr_ws2
Como usar
-
O script precisa de
wmctrl
sudo apt-get install wmctrl
-
Copie o script em um arquivo vazio, salve-o como
launcher_pos.py
-
Teste o comando pelo comando:
python3 /path/to/launcher_pos.py 1 3
No espaço de trabalho 1 e 3, o iniciador deve aparecer apenas à esquerda
-
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/launcher_pos.py 1 3"
(Se o espaço de trabalho 1 e 3 são aqueles que você quer apenas o inicializador à esquerda)