Iniciando programas com GUI sem gerenciador de exibição

8

Ouvi dizer que há uma maneira de lançar programas com interface gráfica sem gerenciador de exibição - direto do terminal. Isso é real e, em caso afirmativo, como posso fazer isso?

    
por Ben 21.04.2015 / 11:36

4 respostas

4

Você pode executá-los sem gerenciador de exibição, mas precisa de uma sessão X em execução. Os detalhes dependerão da sua distribuição, mas você deverá conseguir uma sessão X mínima com um único terminal executando

xinit

Eu não faço isso há anos, mas, da última vez que fiz, isso daria algo assim:

Uma vez lá, você pode executar um programa GUI normalmente, de preferência lançando-o em segundo plano (com & ) para não perder acesso ao seu terminal.

    
por 21.04.2015 / 12:09
4

Aqui estão os princípios básicos para executar um aplicativo GUI sem cabeça, com uma maneira ( vnc ) de se conectar a ele. Funciona em RHEL7 e Centos 7 , com a família. E arrancado da minha própria imagem do Docker que eu uso para o Crashplan localizado no link (veja Dockerfile de configuração e init/setup para inicialização.

# Needed environment variables
export DISPLAY=:99.0
export SCREEN_WIDTH=1200
export SCREEN_HEIGHT=960
export SCREEN_DEPTH=24
export GEOMETRY="${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_DEPTH}"

# Needed packages
yum install -y xorg-x11-server-Xvfb x11vnc gtk2 xorg-x11-fonts-*

# Set a password (if variable vncpass is sat, else its 'secret')
mkdir -p ~/.vnc && x11vnc -storepasswd ${vncpass:-secret} ~/.vnc/passwd

# Start up the fake display and run the application you want (the 'java ...' part)
xvfb-run --server-args="$DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR" java .... > log/ui_output.log 2> log/ui_error.log &

# Wait for the app to start, or else, the vnc server will die before starting
sleep 5

# vnc itself
x11vnc -forever -usepw -shared -rfbport 5900 -display $DISPLAY

Agora você deve conseguir se conectar ao servidor: 5900 e ver o aplicativo.

    
por 21.04.2015 / 12:56
2

Sim. Faça as mesmas coisas que um gerenciador de exibição faz. Além da tela de login gráfica (que você não precisa, neste caso), o gerenciador de exibição apenas faz duas coisas:

  1. Primeiro, inicia um "servidor de exibição X11", como o Xorg,
  2. inicia então "clientes" que informam ao Xorg o que & onde desenhar.

Você pode usar ferramentas como startx para iniciar o X11 da mesma forma a partir de um login do console; Ele iniciará o Xorg seguido pelos clientes listados em seu arquivo ~/.xinitrc .

Por exemplo, o arquivo .xinitrc pode ter startkde ou gnome-session , ou pode listar os componentes individuais (o gerenciador de janelas, um painel / barra de tarefas, uma área de trabalho ...)

(Note que existem algumas diferenças entre xinit e startx - normalmente você deve usar este último, pois algumas distros possuem algumas partes importantes de configuração que o xinit simples irá ignorar, isto é, o xserverrc script.)

Com o Wayland, a área de trabalho & Os painéis são parte integrante do "compositor", portanto, toda a interface é iniciada em uma única etapa, sem ferramentas adicionais. Por exemplo, você pode executar weston ou iniciar o GNOME usando gnome-session --session=gnome-wayland .

    
por 21.04.2015 / 12:11
1

Você pode iniciar aplicativos X usando o encaminhamento ssh X (ssh -X; talvez seja necessário habilitar também a configuração do servidor), desde que você tenha um display local X.

O aplicativo será iniciado e exibido localmente, enquanto executado em um sistema sem cabeçalho. Você precisará ter o X instalado no sistema headless para ter as bibliotecas certas, e isso pode não funcionar com aplicativos GNOME mais modernos.

Você também pode usar $DISPLAY para iniciar aplicativos em um monitor X conectado, mesmo que o seu shell seja remoto (ssh ou console). Se você é root e a pessoa que está conectada na tela X não é, você pode sobrescrever a xauth security e abrir uma janela na tela de qualquer maneira. Isso também funciona se você tiver dois servidores de exibição X diferentes em monitores diferentes.

Outro cartaz menciona o VNC; Eu também usei o NX para esse propósito, e eu prefiro isso.

    
por 21.04.2015 / 13:39