Actualmente estoy trabajando en Ubuntu 14.04 endos pantallas separadas.
Cuando uso el método abreviado de teclado para iniciar el terminal, Ctrl+Alt+T, el terminal actualmente está predeterminado para abrirse en la pantalla de la izquierda, incluso si la pantalla en la que estoy trabajando es la de la izquierda.
Este problema se aplica aterminal-gnomesolo
me pregunto¿Hay alguna forma de configurar el terminal para que se inicie en cualquier pantalla que esté actualmente activa??
Gracias.
Respuesta1
¿Cómo hacer que se abra una nueva ventana de terminal, iniciada por Ctrl+ Alt+ Ten la pantalla actualmente activa?
A pesar deMuymuy relacionado conÉste, no un engañado, y requiere una solución completamente diferente. Su pregunta es específica gnome-terminal
y está utilizando un acceso directo para iniciar la aplicación. Estos dos hacen innecesario un script en segundo plano y solicitan información adicional.
La solución
Dado que inicia el terminal con una tecla de acceso directo, es relativamente fácil crear una solución limpia; simplemente podemos reemplazar el comando, llamado por Ctrl+ Alt+ T, para ejecutar un script contenedor. Este contenedor iniciará una nueva instancia, esperará a que aparezca la nueva ventana, observará la posición actual del mouse y moverá la nueva gnome-terminal
ventana a la pantalla correspondiente.
La secuencia de comandos
#!/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)
Cómo utilizar
El guión necesita ambos
wmctrl
yxdotool
:sudo apt-get install wmctrl xdotool
- Copie el script anterior en un archivo vacío, guárdelo como
move_terminal.py
Ahora necesitamos modificar el comando predeterminado, ejecutado por Ctrl+ Alt+T
Primero deshabilite el acceso directo actual con el comando:
gsettings set org.gnome.settings-daemon.plugins.media-keys terminal ""
Esto hará que el acceso directo esté disponible nuevamente.
Luego agregue un nuevo comando a las teclas de acceso directo personalizadas: elija: Configuración del sistema > "Teclado" > "Atajos de teclado" > "Atajos de teclado personalizados". Haga clic en "+" y agregue el comando:
python3 /path/to/move_terminal.py
al atajo Ctrl+ Alt+T
Ahora su nueva gnome-terminal
ventana, iniciada por Ctrl+ Alt+ Tsiempre "seguirá" la pantalla actualmente activa.
Nota
Si no hay una segunda pantalla adjunta, Ctrl+ Alt+ Tsimplemente abrirá una nueva ventana de terminal.