Atualmente estou trabalhando no Ubuntu 14.04 emduas telas separadas.
Quando uso o atalho de teclado para iniciar o terminal, Ctrl+Alt+T, o terminal está atualmente padronizado para abrir na tela à esquerda, mesmo que a tela em que estou trabalhando seja a da esquerda.
Esta questão se aplica aterminal gnomeapenas
Estou me perguntandoexiste alguma maneira de configurar o terminal para iniciar em qualquer tela que esteja ativa no momento?
Obrigado.
Responder1
Como fazer uma nova janela de terminal, iniciada por Ctrl+ Alt+ Taberta na tela atualmente ativa?
EmboraMuitomuito relacionado aEste, não é um idiota e requer uma solução completamente diferente. Sua pergunta é específica para gnome-terminal
e você está usando um atalho para iniciar o aplicativo. Esses dois tornam desnecessário um script de segundo plano e solicitam algumas informações adicionais.
A solução
Como você inicia o terminal com uma tecla de atalho, é relativamente fácil criar uma alma limpa; podemos simplesmente substituir o comando, chamado por Ctrl+ Alt+ T, para executar um script wrapper. Este wrapper iniciará uma nova instância, aguardará a nova janela aparecer, observará a posição atual do mouse e moverá a nova gnome-terminal
janela - para a tela correspondente.
O roteiro
#!/usr/bin/env python3
import subprocess
import time
app = "gnome-terminal"
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def screen_limit():
screendata = [s for s in get("xrandr").split() if s.count("+") == 2]
if len(screendata) == 2:
return int([s.split("x")[0] for s in screendata if "+0+0" in s][0])
rightside = screen_limit()
if rightside:
ws1 = get(["wmctrl", "-lpG"]); t = 0
subprocess.Popen(app)
while t < 30:
ws2 = [w for w in get(["wmctrl", "-lpG"]).splitlines() if not w in ws1]
if ws2:
try:
pid = get(["pgrep", "-f", app])
except subprocess.CalledProcessError:
pass
else:
match = [w for w in ws2 if pid in w]
if match:
match = match[0].split()
mousepos = int(get(["xdotool", "getmouselocation"]).split()[0].split(":")[1])
check = [mousepos < rightside, int(match[3]) < rightside]
if check[0] != check[1]:
cmd = ["xdotool", "windowmove", match[0], str(int(match[3]) + rightside), match[4]] \
if check[0] == False else \
["xdotool", "windowmove", match[0], str(int(match[3]) - rightside), match[4]]
subprocess.Popen(cmd)
break
time.sleep(0.5); t += 1
else:
subprocess.Popen(app)
Como usar
O script precisa de ambos
wmctrl
exdotool
:sudo apt-get install wmctrl xdotool
- Copie o script acima em um arquivo vazio e salve-o como
move_terminal.py
Agora precisamos alterar o comando padrão, executado por Ctrl+ Alt+T
primeiro desative o atalho atual pelo comando:
gsettings set org.gnome.settings-daemon.plugins.media-keys terminal ""
Isso tornará o atalho disponível novamente.
Em seguida, adicione um novo comando às teclas de atalho personalizadas: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no "+" e adicione o comando:
python3 /path/to/move_terminal.py
para o atalho Ctrl+ Alt+T
Agora sua nova gnome-terminal
janela, lançada por Ctrl+ Alt+ T, sempre “seguirá” a tela ativa no momento.
Observação
Se não houver uma segunda tela anexada, Ctrl+ Alt+ Tapenas abrirá uma nova janela de terminal.