Ich arbeite derzeit mit Ubuntu 14.04 aufzwei separate Bildschirme.
Wenn ich zum Starten des Terminals die Tastenkombination Strg+Alt+T verwende, wird das Terminal derzeit standardmäßig auf dem linken Bildschirm geöffnet, auch wenn der Bildschirm, auf dem ich arbeite, der linke ist.
Dieses Problem betrifftGnome-Terminalnur
ich frage michGibt es eine Möglichkeit, das Terminal so einzustellen, dass es mit dem aktuell aktiven Bildschirm gestartet wird??
Danke.
Antwort1
Wie lässt sich auf dem aktuell aktiven Bildschirm ein neues Terminalfenster öffnen, das durch Ctrl+ Alt+ initiiert wird?T
ObwohlSehrviel im Zusammenhang mitDieses hier, kein Duplikat und erfordert eine völlig andere Lösung. Ihre Frage bezieht sich speziell auf gnome-terminal
, und Sie verwenden eine Verknüpfung zum Starten der Anwendung. Diese beiden machen ein Hintergrundskript unnötig und erfordern einige zusätzliche Informationen.
Die Lösung
Da man das Terminal per Tastenkombination startet, ist es relativ einfach, eine saubere Lösung zu schaffen; wir können einfach den Befehl, der durch Ctrl+ Alt+ aufgerufen wird T, durch ein Wrapper-Skript ersetzen. Dieser Wrapper startet eine neue Instanz, wartet, bis das neue Fenster erscheint, schaut sich die aktuelle Position der Maus an und verschiebt das neue gnome-terminal
- Fenster auf den entsprechenden Bildschirm.
Das Drehbuch
#!/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)
Wie benutzt man
Das Skript benötigt beides
wmctrl
undxdotool
:sudo apt-get install wmctrl xdotool
- Kopieren Sie das obige Skript in eine leere Datei und speichern Sie es unter
move_terminal.py
Nun müssen wir den Standardbefehl ändern, der mit Ctrl+ Alt+ ausgeführt wird.T
Deaktivieren Sie zunächst die aktuelle Verknüpfung mit dem folgenden Befehl:
gsettings set org.gnome.settings-daemon.plugins.media-keys terminal ""
Dadurch wird die Verknüpfung wieder verfügbar.
Fügen Sie dann einen neuen Befehl zu benutzerdefinierten Tastenkombinationen hinzu: Wählen Sie: Systemeinstellungen > „Tastatur“ > „Tastenkombinationen“ > „Benutzerdefinierte Tastenkombinationen“. Klicken Sie auf das „+“ und fügen Sie den Befehl hinzu:
python3 /path/to/move_terminal.py
zur Abkürzung Ctrl+ Alt+T
Jetzt wird Ihr neues gnome-terminal
Fenster, das mit Ctrl+ Alt+ gestartet wird T, immer dem aktuell aktiven Bildschirm „folgen“.
Notiz
Wenn kein zweiter Bildschirm angeschlossen ist, öffnet Ctrl+ Alt+ Teinfach ein neues Terminalfenster.