Lançamento startxwin no terminal atual

1

Estou usando o Cygwin e estou usando o Console2 como substituto do terminal Cygwin padrão. Eu preciso usar o encaminhamento do X11, e toda vez que eu executo o startxwin, ele é lançado em um novo terminal. Em vez disso, gostaria de tê-lo aberto no mesmo terminal (ou em uma nova guia), dentro do Console2. Idealmente, eu seria capaz de lançar o Cygwin com startxwin ou lançar uma nova aba com um servidor Cygwin XWin. Isso provavelmente envolverá a edição do arquivo .startxwinrc , mas não tenho certeza de como fazer isso. Recentemente comecei a usar o encaminhamento do X11 no Cygwin.

Como posso fazer isso?

Obrigado.

EDITAR
Estou tentando iniciar uma sessão do X11 no Cygwin. Isso pode ser feito definindo a variável de ambiente DISPLAY como 0.0 . O servidor X11 é então lançado emitindo o comando startxwin . Depois de emitir esse comando, um novo terminal é aberto, em uma janela diferente. Esse terminal é extremamente básico e bastante feio. O que eu quero que aconteça é que o terminal apareça como uma nova aba no Console2 ou que ele seja executado no mesmo terminal em que foi lançado. Dessa forma, posso continuar trabalhando em um terminal que foi otimizado para o meu gosto. Alternativamente, se é possível iniciar o Cygwin com o encaminhamento do X11 já habilitado, isso seria mais ideal. No momento, estou lançando o Cygwin usando este comando H:\bin\bash.exe --login -i -c "cd /cygdrive/d; exec /bin/bash" . A razão pela qual eu preciso usar o X11 é porque eu estou usando o SSH em um servidor remoto que possui programas com GUIs que eu preciso usar. Eu só quero poder fazer tudo dentro do Console2.

    
por TehTechGuy 27.03.2013 / 18:00

1 resposta

1

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)

    
por 08.02.2015 / 18:28