“Não foi possível abrir o erro de exibição '(null)'”. Como posso consertar isso?

4

Estou tentando executar um appliaction, mas quando eu corro eu recebo um

Could not open display '(null').

Erro. Por que é isso? Especificamente, eu estava tentando executar o scratch (que instalei via aws):

root@ip-10-251-56-90:/usr/bin# ./scratch
Executing: /usr/lib/squeak/4.4.7-2357/squeakvm -encoding UTF-8 -vm-display-x11 -xshm -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.4.7-2357/ -vm-sound-ALSA /usr/share/scratch/Scratch.image
Could not open display '(null)'.
    
por user261504 24.03.2014 / 10:17

1 resposta

9

Erros como este significam que você está executando um programa que precisa de uma exibição gráfica e não pode encontrar um. Os programas GUI se conectam à exibição definida pela variável ambiental $DISPLAY . O formato geral do erro é

Could not open display $DISPLAY

Como, no seu caso, o erro diz (null) , isso significa que $DISPLAY não está definido. Portanto, você precisa:

  1. Se você estiver efetuando login em uma máquina remota usando algo como ssh , precisará exportar a $DISPLAY de sua máquina local e informar o computador remoto para exibir programas da GUI. Isso pode ser feito com as opções -X ou -Y de ssh :

    ssh -Y [email protected]
    

    Como explicado em man ssh :

     -Y  Enables trusted X11 forwarding.  Trusted X11 forwardings are not
         subjected to the X11 SECURITY extension controls.
     -X  Enables X11 forwarding.  This can also be specified on a per-host
         basis in a configuration file.
    
  2. Se esta é sua máquina local, você precisa instalar um ambiente gráfico . Se um já estiver instalado, assumindo uma configuração padrão do Ubuntu, você pode iniciá-lo com este comando:

    sudo service lightdm start
    
  3. Se você tiver um ambiente gráfico em execução, mas por qualquer motivo, $DISPLAY está definido como null , você pode redefini-lo. Os detalhes dependerão da sua situação atual, mas na maioria dos casos, o que você vai precisar (assumindo, novamente, você está na sua máquina local) é

    export DISPLAY=:0.0
    

    Você pode então executar seu programa GUI normalmente.

  4. Se você tiver um servidor X em execução, mas tiver alternado para um tty (por exemplo, pressionando Ctrl + Alt + F1 ), você pode simplesmente precisar retornar ao seu ambiente gráfico. Isso depende de qual console virtual sua GUI está rodando, mas na maioria dos casos no Ubuntu será 7, então você pode voltar a ele usando Alt + F7 .

    Se isso não o trouxer de volta à sua área de trabalho, simplesmente percorra todas as teclas Alt + Seta para a Esquerda ou Alt + Seta para a direita até encontrar o caminho certo.

  5. Outro problema comum é que você iniciou uma sessão X como usuário normal e agora está tentando se conectar a ela como root ou outro usuário. Para habilitar isso, você precisa especificar que este usuário tem o direito de acessar sua área de trabalho gráfica. Por exemplo:

    xhost +si:localuser:terdon
    

    Isso permitirá que o usuário local terdon se conecte ao servidor X em execução. O comando precisa ser executado pelo proprietário da sessão X. Como alternativa, para permitir que qualquer pessoa se conecte:

    xhost +
    

    E para revogar permissões:

    xhost -
    
por terdon 24.03.2014 / 23:48

Tags