A partir de noviembre de 2014 , las últimas versiones de startxwinuso xinitpara iniciar el servidor Cygwin / X, que en realidad se llama XWin.exe. El proceso es algo como esto:
- Llama
startxwin
startxwincrea un nuevo .Xauthorityarchivo y uno llamado .serverauth.1234(donde 1234cambia cada vez que inicia X)
startxwin configura algunos parámetros de cliente y servidor
startxwinllamadas xinitcon los parámetros del cliente y el servidor, incluidos algunos scripts de shell opcionales y una referencia al archivo de autenticación.
xinit inicia el servidor X, ejecutando algunos de los scripts rc
xinitinicia el cliente (generalmente xterm) o el script rc del cliente. Queremos evitar esto
- Cuando cierra el cliente o finaliza el script rc del cliente,
xinitapaga el servidor X. Si evitamos el paso 6, también debemos evitarlo.
Es posible ejecutar XWin.exedirectamente desde un shell de inicio de sesión Bash, sin las tareas que lo rodean startxwiny xinitrealizar. La principal ventaja de esto es que se comporta como queremos: el servidor X se inicia y sigue ejecutándose. Desafortunadamente, dado que no se pasa ningún .Xauthorityarchivo durante el inicio, su servidor X permitiría que cualquier proceso local se conecte a él, lo cual es inseguro.
Afortunadamente, es lo xinitque hace la mayoría de las cosas que no queremos. Hay un truco rápido que omite xinitpero mantiene los elementos restantes startxwinrelacionados con el servidor en sí.
TL; DR: En startxwin, hay una línea cerca de la parte inferior que dice:
eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
Cambia esa línea a:
eval \"$server\" $display $serverargs
A partir de ahora, el startxwinscript llamará XWin.exedirectamente, en lugar de llamar xinit. Obviamente, esto deshabilitará los scripts de cliente rc, pero no queríamos esos en primer lugar. También significa que X continuará ejecutándose sin necesidad de un proceso de cliente para mantenerlo vivo (es decir, evitar xinitmatarlo).
exec sleep infinitycomo se muestra aquí: x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exit