Starten Sie startxwin im aktuellen Terminal

1213
TehTechGuy

Ich verwende Cygwin und benutze Console2 als Ersatz für das Standard-Cygwin-Terminal. Ich muss die X11-Weiterleitung verwenden, und jedes Mal, wenn ich startxwin starte, wird es in einem neuen Terminal gestartet. Ich möchte es stattdessen im selben Terminal (oder in einem neuen Tab) in Console2 öffnen. Idealerweise kann ich Cygwin entweder mit startxwin oder mit einem neuen Tab mit einem Cygwin XWin-Server starten. Dies erfordert wahrscheinlich das Bearbeiten der .startxwinrcDatei, aber ich bin mir nicht sicher, wie ich das tun soll. Ich habe vor kurzem mit der X11-Weiterleitung in Cygwin begonnen.

Wie kann ich das machen?

Vielen Dank.

EDIT
Ich versuche eine X11-Sitzung in Cygwin zu starten. Dies kann durch Setzen der DISPLAYUmgebungsvariable auf erfolgen 0.0. Der X11-Server wird dann mit dem Befehl gestartet startxwin. Nach der Ausgabe dieses Befehls wird ein neues Terminal in einem anderen Fenster geöffnet. Das Terminal ist extrem einfach und ziemlich hässlich. Ich möchte, dass das Terminal entweder als neue Registerkarte in Console2 angezeigt wird oder in demselben Terminal ausgeführt wird, von dem es gestartet wurde. Auf diese Weise kann ich in einem Terminal weiterarbeiten, das nach meinem Geschmack optimiert wurde. Wenn Cygwin mit bereits aktivierter X11-Weiterleitung gestartet werden kann, wäre dies alternativ idealer. Ich starte gerade Cygwin mit diesem BefehlH:\bin\bash.exe --login -i -c "cd /cygdrive/d; exec /bin/bash". Der ganze Grund, warum ich X11 verwenden muss, ist, dass ich SSHing in einen Remote-Server mit Programmen mit GUIs, die ich verwenden muss. Ich möchte einfach alles in Console2 erledigen können.

1
Unklar. Was genau starten Sie und was ist das Problem? Maximus vor 11 Jahren 0
@ Maximus, siehe oben TehTechGuy vor 11 Jahren 0

1 Antwort auf die Frage

1
Scott

Beim Wechseln zu console2 hatte ich Probleme, zu versuchen, die Konsole immer wieder zu erkennen, wann X ausgeführt wurde, und dann ordnungsgemäß an die Registerkarten zu übergeben, wenn ich die Registerkarten für die Verbindung zu anderen Systemen einrichtete. Dies ist die Lösung, auf die ich mich geeinigt habe.

Zuerst mussten Sie eine cygwin-Sitzung durch eine einfache DOS-Bat-Datei in eine Shell laden, um herauszufinden, ob X ausgeführt wurde oder nicht. Um dies zu tun, habe ich if / test verwendet, um zu sehen, ob $ DISPLAY bereits gesetzt ist. Wenn nicht, wird ein einfacher xset-Aufruf von -display: 0.0 ausgeführt, um zu sehen, ob X ausgeführt wird. (0,0 ist die Standardeinstellung für mein Cygwin-Setup. Sie können natürlich auch andere überprüfen, wenn Sie dies wünschen). Wenn true zurückgegeben wird, wird DISPLAY entsprechend festgelegt. Ich habe dies in cygwin am Ende des / etc / -Profils hinzugefügt, obwohl Sie es wahrscheinlich in .bashrc oder ein anderes Skript einfügen könnten, das immer ausgeführt wird, wenn Sie sich anmelden.

# /etc/profile check to set display if X is running on :0.0 if [ -n $DISPLAY ]; then if xset -display :0.0 q &>/dev/null; then export DISPLAY=:0.0 fi fi 

Beim Hinzufügen zu / etc / profile müssen Sie beim Starten von console2 eine Login-Shell aufrufen. B. den Aufruf von bash --login -i aus Ihrer DOS-BAT-Datei.

Um mit dem Wechseln zu anderen Systemen fertig zu werden, benutzte ich anfangs nur einen direkten Aufruf von ssh aus einer Batchdatei, dies übersprang jedoch das Einstellen dieser Anzeige. Um das zu umgehen, habe ich die bat-Datei so geändert, dass sie zuerst bash --login aufruft:

(Die Einstellung von DISPLAY war ein erster Versuch eines anderen Vorschlags. Für die meisten Cygwin-Apps ist dies überhaupt nicht der Fall.)

ssh.bat

@echo off  C: chdir C:\cygwin\bin  if NOT "x%DISPLAY%" == "x" set DISPLAY=":0.0"  set sshcmd="ssh -Y "  bash --login -c %sshcmd%%1% 

Beachten Sie, dass die Änderungen an / etc / profile nichts bewirken, wenn der X-Server von cygwin (oder ein anderer Xwindow-Server) nicht unter: 0.0 ausgeführt wird oder Sie keine Login-Shell aufrufen. Wenn Sie jedoch in Ihrer Cygwin.bat bash -i --login verwenden und Ihre Einstellungen von console2 auf diese Datei verweisen, verwenden Sie das Beispiel Ssh.bat, um eine Verbindung zu Remote-Systemen herzustellen (z. B. C: \ cygwin \ ssh.bat [remote- Hostname] im Feld 'Shell:' für die Einstellungen auf der Registerkarte 'Konsole' und C: \ cygwin \ bin als Startverzeichnis)

Danke für die Lösung. Wie Sie gesagt haben, müssen Sie noch sicherstellen, dass der X-Server läuft. Es ist auch ratsam, ssh.bat so zu ändern, dass ein Benutzername akzeptiert wird. Abgesehen davon scheint es gut zu funktionieren. Das ist viel schöner als die Verwendung der Standard-X-Shell. TehTechGuy vor 9 Jahren 0