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).