Ubuntu 14.04 Iniciar o terminal na tela ativa

2

Atualmente estou trabalhando no Ubuntu 14.04 em duas telas separadas .

Quando eu uso o atalho de teclado para iniciar o terminal, Ctrl + Alt + T, o terminal tem o padrão atualmente aberto na tela à esquerda, mesmo se a tela em que estou trabalhando for a da esquerda.

Esse problema se aplica apenas ao gnome-terminal

Eu estou querendo saber existe alguma maneira de definir o terminal para iniciar em qualquer tela atualmente ativa ?

Obrigado.

    
por AStanton 05.05.2016 / 10:20

1 resposta

1

Como criar uma nova janela de terminal, iniciada por Ctrl + Alt + T aberta na tela atualmente ativa?

Embora Muito muito relacionado a este , não um tolo, e exige uma solução completamente diferente. Sua pergunta é específica de gnome-terminal e você está usando um atalho para iniciar o aplicativo. Estes dois fazem um script de fundo desnecessário, e pedem alguma informação adicional.

A solução

Desde que você inicia o terminal por uma tecla de atalho, é relativamente fácil criar uma divisão limpa; podemos simplesmente substituir o comando, chamado por Ctrl + Alt + T , para executar um script de invólucro. Este wrapper irá iniciar uma nova instância, esperar que a nova janela apareça, olhar para a posição atual do mouse e mover a nova janela gnome-terminal - para a tela correspondente.

O script

#!/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

  1. O script precisa dos dois wmctrl e xdotool :

    sudo apt-get install wmctrl xdotool
    
  2. Copie o script acima em um arquivo vazio, salve-o como move_terminal.py
  3. 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 disponibilizará o atalho novamente.

    • Em seguida, adicione um novo comando às teclas de atalho personalizadas: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

      python3 /path/to/move_terminal.py
      

      para o atalho Ctrl + Alt + T

Agora, sua nova janela gnome-terminal , iniciada por Ctrl + Alt + T , sempre "seguirá" a tela atualmente ativa. / p>

Nota

Se não houver uma segunda tela anexada, Ctrl + Alt + T apenas abrirá uma nova janela de terminal.

    
por Jacob Vlijm 05.05.2016 / 23:32