A partir de novembro de 2014 , as versões mais recentes de startxwin use xinit para iniciar o servidor Cygwin / X, que na verdade é chamado de XWin.exe . O processo é mais ou menos assim:
- Você chama
startxwin
-
startxwin cria um novo arquivo .Xauthority e um chamado .serverauth.1234 (onde 1234 muda cada vez que você inicia o X)
-
startxwin configura alguns parâmetros de cliente e servidor
-
startxwin chama xinit com os parâmetros de cliente e servidor, incluindo alguns scripts de shell opcionais e uma referência ao arquivo de autenticação.
-
xinit inicia o servidor X, executando alguns dos scripts rc
-
xinit inicia o cliente (geralmente xterm ) ou o script rc do cliente. Queremos evitar isso
- Quando você fecha o cliente ou o script rc do cliente é concluído,
xinit desliga o servidor X. Se evitarmos o passo 6, também precisamos evitar isso
É possível executar XWin.exe diretamente de dentro de um shell de login do Bash, sem as tarefas próximas que startxwin e xinit executam. A principal vantagem disso é que ele se comporta como queremos: o servidor X é iniciado e permanece em execução. Infelizmente, como não há nenhum arquivo .Xauthority passado durante a inicialização, seu servidor X permite que qualquer processo local se conecte a ele, o que é inseguro.
Felizmente é xinit que faz a maioria das coisas que não queremos. Há um hack rápido que ignora xinit , mas mantém os elementos restantes de startxwin relacionados ao próprio servidor.
TL; DR: Em startxwin , há uma linha na parte inferior que diz:
eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
Altere essa linha para:
eval \"$server\" $display $serverargs
A partir de agora, o script startxwin chamará XWin.exe diretamente, em vez de chamar xinit . Obviamente, isso desabilitará qualquer script de cliente rc, mas nós não queremos isso em primeiro lugar. Isso também significa que o X continuará em execução sem precisar de um processo do cliente para mantê-lo ativo (isto é, manter xinit de eliminá-lo).