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)