Immer wenn ich Cygwins X-Server über den Link "XWin Server" in meinem Startmenü starte oder von startxwin
einer Cygwin-Shell aus starte , wird automatisch ein xterm-Fenster angezeigt, das ich weder möchte noch brauche.
Wie vermeide ich das?
(Frage inspiriert durch diesen Kommentar von Stijn Vanpoucke über Stack Overflow)
exec sleep infinity
UPDATE : Diese Antwort ist nicht mehr aktuell. Eine aktuelle Antwort finden Sie in der Antwort von user551570 weiter unten .
Von
man startxwin
:Um zu vermeiden, dass ein Programm beim Starten des X-Servers gestartet wird, möchten Sie eine leere
.startxwinrc
Datei. Führen Sie einfach Folgendes an einer Cygwin-Eingabeaufforderung aus:quelle
.startxwinrc
Datei verwenden, wird der X-Server sofort ausgeblendet. :-(Ab November 2014 werden die neuesten Versionen der
startxwin
Anwendung ,xinit
um die Cygwin / X - Server zu starten, die tatsächlich aufgerufen wirdXWin.exe
. Der Prozess läuft ungefähr so ab:startxwin
startxwin
Erstellt eine neue.Xauthority
und eine aufgerufene Datei.serverauth.1234
(1234
ändert sich bei jedem Start von X)startxwin
Richtet einige Client- und Serverparameter einstartxwin
Aufrufexinit
mit den Client- und Serverparametern, einschließlich einiger optionaler Shell-Skripte und eines Verweises auf die Auth-Datei.xinit
Startet den X-Server und führt einige der rc-Skripte ausxinit
startet das client (normalerweisexterm
) oder client rc script. Das wollen wir vermeidenxinit
wird der X-Server heruntergefahren. Wenn wir Schritt 6 vermeiden, müssen wir dies auch vermeidenEs ist möglich , läuft
XWin.exe
direkt aus einem Bash Login - Shell, ohne die umliegenden Aufgaben,startxwin
undxinit
auszuführen. Der Hauptvorteil davon ist, dass es sich so verhält, wie wir es wollen: Der X-Server startet und läuft weiter. Da.Xauthority
beim Start keine Datei übergeben wird, kann auf Ihrem X-Server kein lokaler Prozess eine Verbindung herstellen, was unsicher ist.Glücklicherweise ist es das
xinit
, was die meisten Dinge, die wir nicht wollen, bewirken. Es gibt einen schnellen Hack, der umgeht,xinit
aber die verbleibenden Elementestartxwin
, die sich auf den Server selbst beziehen, beibehält.TL; DR: In
startxwin
, es gibt eine Zeile in der Nähe des Bodens, die lautet:Ändern Sie diese Zeile in:
Von nun an
startxwin
ruft das SkriptXWin.exe
direkt auf und nicht mehrxinit
. Offensichtlich werden dadurch alle Client-RC-Skripte deaktiviert, aber wir wollten diese überhaupt nicht. Dies bedeutet auch, dass X weiter ausgeführt wird, ohne dass ein Client-Prozess am Leben bleiben muss (dh ihn nichtxinit
beenden kann).quelle
Ich habe es mir zur Gewohnheit gemacht, Cygwin X mit startxwin (.exe) zu starten. Meine .startxwinrc-Datei lautet wie folgt:
Bisher hat es funktioniert. Der einzige Fehler, den ich erhalte, betrifft die Anzeige, die von einem anderen X-Prozess noch "geöffnet" wird. Dieser Fehler gibt eine bestimmte Datei an, die der X-Server standardmäßig für jede Sitzung generiert. Die Cygwin-Leute wissen, dass es nicht gelöscht wird, wenn die Sitzung beendet wird.
Also habe ich einen Alias geschrieben, um das zu "heilen":
Ich setze die gleiche Zeile - jedenfalls den Teil zwischen den Anführungszeichen - in meine Dateien .bashrc und .bash_profile, falls ich vergessen sollte, dies selbst zu tun.
HTH.
BZT
quelle