A partir de noviembre de 2014 , las últimas versiones de startxwin
uso xinit
para iniciar el servidor Cygwin / X, que en realidad se llama XWin.exe
. El proceso es algo como esto:
- Llama
startxwin
startxwin
crea un nuevo .Xauthority
archivo y uno llamado .serverauth.1234
(donde 1234
cambia cada vez que inicia X)
startxwin
configura algunos parámetros de cliente y servidor
startxwin
llamadas xinit
con 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
xinit
inicia el cliente (generalmente xterm
) o el script rc del cliente. Queremos evitar esto
- Cuando cierra el cliente o finaliza el script rc del cliente,
xinit
apaga el servidor X. Si evitamos el paso 6, también debemos evitarlo.
Es posible ejecutar XWin.exe
directamente desde un shell de inicio de sesión Bash, sin las tareas que lo rodean startxwin
y xinit
realizar. 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 .Xauthority
archivo durante el inicio, su servidor X permitiría que cualquier proceso local se conecte a él, lo cual es inseguro.
Afortunadamente, es lo xinit
que hace la mayoría de las cosas que no queremos. Hay un truco rápido que omite xinit
pero mantiene los elementos restantes startxwin
relacionados 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 startxwin
script llamará XWin.exe
directamente, 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 xinit
matarlo).
exec sleep infinity
como se muestra aquí: x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exit