Eu estava tendo ajustes ao mudar para o console2, tentando consistentemente fazer com que o console reconheça quando o X estava rodando, para passá-lo corretamente para as guias quando eu configuro as guias para conectar a outros sistemas. Esta é a solução que acabei resolvendo.
O primeiro foi fazer com que uma sessão do cygwin fosse executada através de um simples arquivo do dos bat para um shell para descobrir corretamente se o X estava rodando ou não. Para fazer isso, usei / test para ver se $ DISPLAY já estava definido. Caso contrário, ele executa uma chamada xset simples para -display: 0.0 para ver se o X está sendo executado. (0.0 é o padrão para o meu cygwin configurado. Você poderia obviamente verificar os outros aqui também, se desejar). Se retornar true, define DISPLAY de acordo. Eu adicionei isso ao final do / etc / profile no cygwin, embora você provavelmente poderia colocá-lo no .bashrc ou algum outro script que sempre seria executado quando você logar.# /etc/profile check to set display if X is running on :0.0
if [ -n $DISPLAY ]; then
if xset -display :0.0 q &>/dev/null; then
export DISPLAY=:0.0
fi
fi
Ao adicioná-lo ao / etc / profile, você precisa invocar um shell de login ao iniciar o console2. por exemplo. chamando bash --login -i do seu arquivo dos .BAT.
Para lidar com outros sistemas, inicialmente eu estava usando apenas uma chamada direta para o ssh de um arquivo de lote, mas isso estava pulando a configuração dessa exibição. Para contornar isso eu modifiquei o arquivo bat para chamar bash --login first:
(a configuração de DISPLAY foi uma tentativa inicial de outra sugestão. Realmente não faz nada para a maioria dos aplicativos cygwin)
ssh.bat
@echo off
C:
chdir C:\cygwin\bin
if NOT "x%DISPLAY%" == "x" set DISPLAY=":0.0"
set sshcmd="ssh -Y "
bash --login -c %sshcmd%%1%
É importante notar que as modificações no / etc / profile não farão nada se o servidor X do cygwin (ou algum outro servidor Xwindow) não estiver rodando em: 0.0 ou se você não invocar um shell de login. Mas se você usar o bash -i --login no seu Cygwin.bat e apontar suas configurações do console2 para esse arquivo, use o exemplo Ssh.bat para conectar-se a sistemas remotos (por exemplo, coloque C: \ cygwin \ ssh.bat [remote- host-name] no campo 'Shell:' para as configurações da guia Console e C: \ cygwin \ bin como o diretório de inicialização)