Sempre que inicio o servidor X do Cygwin usando o link "XWin Server" no menu Iniciar, ou executando startxwin
um shell Cygwin, recebo automaticamente uma janela do xterm, que eu não quero nem preciso.
Como evito isso?
(Pergunta inspirada neste comentário de Stijn Vanpoucke sobre Stack Overflow)
exec sleep infinity
como mostrado aqui: x.cygwin.com/docs/faq/cygwin-x-faq.html#q-startxwinrc-exitATUALIZAÇÃO : Esta resposta está desatualizada. Para obter uma resposta atualizada, consulte a resposta do usuário551570 abaixo .
De
man startxwin
:Portanto, para evitar a inicialização de qualquer programa ao iniciar o X Server, você deseja um
.startxwinrc
arquivo em branco . Basta executar o seguinte em um prompt do Cygwin:fonte
.startxwinrc
resulta no desaparecimento imediato do servidor X. :-(Em novembro de 2014 , as versões mais recentes de
startxwin
usoxinit
para iniciar o servidor Cygwin / X, que é realmente chamadoXWin.exe
. O processo é mais ou menos assim:startxwin
startxwin
cria um novo.Xauthority
arquivo e um chamado.serverauth.1234
(onde1234
muda sempre que você inicia o X)startxwin
configura alguns parâmetros de cliente e servidorstartxwin
chamaxinit
com os parâmetros do cliente e do servidor, incluindo alguns scripts shell opcionais e uma referência ao arquivo auth.xinit
inicia o servidor X, executando alguns dos scripts rcxinit
inicia oxterm
script cliente (geralmente ) ou cliente rc. Queremos evitar issoxinit
encerra o servidor X. Se evitarmos a etapa 6, também precisamos evitar issoÉ possível executar
XWin.exe
diretamente de dentro de um shell de login Bash, sem as tarefas que cercam essastartxwin
exinit
executar. A principal vantagem disso é que ele se comporta como queremos: o servidor X inicia e permanece em execução. Infelizmente, como não há.Xauthority
arquivo passado durante a inicialização, o servidor X permitiria a conexão de qualquer processo local, o que é inseguro.Felizmente, ele
xinit
faz a maioria das coisas que não queremos. Há um hack rápido que ignora,xinit
mas mantém os elementos restantesstartxwin
relacionados ao próprio servidor.TL; DR: No
startxwin
, há uma linha na parte inferior que lê:Mude essa linha para:
A partir de agora, o
startxwin
script chamaráXWin.exe
diretamente, em vez de chamarxinit
. Obviamente, isso desativará os scripts rc do cliente, mas não os queremos em primeiro lugar. Isso também significa que o X continuará sendo executado sem a necessidade de um processo do cliente para mantê-lo vivo (ou seja, não oxinit
mate).fonte
Eu criei o hábito de iniciar o Cygwin X com startxwin (.exe). Meu arquivo .startxwinrc é o seguinte:
Até agora, deu certo. O único erro que recebo diz respeito à exibição ainda estar "aberta" por outro processo X. Este erro especifica um determinado arquivo que o servidor X gera por padrão para cada sessão. O pessoal do Cygwin sabe que ele não é excluído quando a sessão termina.
Então, eu escrevi um apelido para "curar" isso:
Eu coloquei a mesma linha - a parte entre as aspas, pelo menos - nos meus arquivos .bashrc e .bash_profile, caso eu devesse esquecer de fazer isso sozinho.
HTH.
BZT
fonte