Za każdym razem, gdy uruchamiam serwer X Cygwin za pomocą linku „Serwer XWin” w moim menu Start lub uruchamiając się startxwin
z powłoki Cygwin, automatycznie pojawia się okno Xterm, którego nie chcę ani nie potrzebuję.
Jak tego uniknąć?
(Pytanie zainspirowany tym komentarzem przez Stijn Vanpoucke Powyżej na przepełnienie stosu)
exec sleep infinity
jak pokazano tutaj: x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exitAKTUALIZACJA : Ta odpowiedź jest teraz nieaktualna. Aby uzyskać aktualną odpowiedź, zobacz odpowiedź user551570 poniżej .
Od
man startxwin
:Dlatego, aby uniknąć uruchamiania jakiegokolwiek programu podczas uruchamiania serwera X, potrzebujesz pustego
.startxwinrc
pliku. Po prostu uruchom następujące polecenie Cygwin:źródło
.startxwinrc
powoduje natychmiastowe zniknięcie serwera X. :-(Od listopada 2014 r. Najnowsze wersje
startxwin
używająxinit
do uruchomienia serwera Cygwin / X, który jest tak naprawdę nazywanyXWin.exe
. Proces przebiega mniej więcej tak:startxwin
startxwin
tworzy nowy.Xauthority
plik i jeden o nazwie.serverauth.1234
(gdzie1234
zmienia się przy każdym uruchomieniu X)startxwin
ustawia niektóre parametry klienta i serwerastartxwin
wywołaniaxinit
z parametrami klienta i serwera, w tym niektóre opcjonalne skrypty powłoki i odniesienie do pliku auth.xinit
uruchamia serwer X, uruchamiając niektóre skrypty rcxinit
uruchamiaxterm
skrypt klienta (zwykle ) lub klienta rc. Chcemy tego uniknąćxinit
wyłącza serwer X. Jeśli unikniemy kroku 6, musimy również tego uniknąćMożliwe jest uruchamianie
XWin.exe
bezpośrednio z poziomu powłoki logowania Bash, bez otaczających zadań, którestartxwin
ixinit
wykonują. Główną zaletą tego jest to, że zachowuje się tak, jak chcemy: serwer X uruchamia się i pozostaje uruchomiony. Niestety, ponieważ.Xauthority
podczas uruchamiania nie przekazano żadnego pliku, twój serwer X pozwoliłby na połączenie się z dowolnym procesem lokalnym, co jest niepewne.Na szczęście to
xinit
robi większość rzeczy, których nie chcemy. Istnieje szybki hack, który omija,xinit
ale zachowuje pozostałe elementystartxwin
związane z samym serwerem.TL; DR: W
startxwin
dolnej linii znajduje się wiersz o treści:Zmień tę linię na:
Od tej pory
startxwin
skrypt będzie dzwoniłXWin.exe
bezpośrednio, a nie dzwonixinit
. Oczywiście spowoduje to wyłączenie skryptów rc klienta, ale nie chcieliśmy ich w ogóle. Oznacza to również, że X będzie kontynuował działanie bez potrzeby korzystania z procesu klienta, aby utrzymać go przy życiu (tj. Niexinit
zabijać go).źródło
Przyzwyczaiłem się uruchamiać Cygwin X za pomocą startxwin (.exe). Mój plik .startxwinrc ma następujące brzmienie:
Do tej pory działało. Jedyny błąd, jaki dostaję, dotyczy tego, że ekran jest nadal „otwarty” przez inny proces X. Ten błąd określa określony plik, który serwer X generuje domyślnie dla każdej sesji. Ludzie z Cygwin są świadomi, że nie zostaną usunięte po zakończeniu sesji.
Więc napisałem alias, aby „wyleczyć”, że:
Umieszczam ten sam wiersz - w każdym razie część między cudzysłowami - w moich plikach .bashrc i .bash_profile, na wypadek, gdybym zapomniał zrobić to sam.
HTH.
BZT
źródło