Iniciando programas com GUI sem gerenciador de exibição

9

Ouvi dizer que existe uma maneira de iniciar programas com interface gráfica sem gerenciador de exibição - diretamente do terminal. Isso é real e, se sim, como posso fazer isso?

Ben
fonte
Você precisa interagir com a GUI?
Daniel B
@DanielB yeah, provavelmente
Ben
11
Você pode executá-los sem o gerenciador de exibição, mas precisa de uma sessão X em execução. Que distribuição você está usando? Você tem um servidor X instalado? Você pode correr xinitou startx?
Terdon #
@terdon sim, atualmente estou executando o lmint, mas a questão é mais para o conhecimento geral (não para distro).
Ben
related superuser.com/questions/407043/…
Ciro Santilli escreveu

Respostas:

5

Você pode executá-los sem o 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:

insira a descrição da imagem aqui

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

Terdon
fonte
2
Vale a pena mencionar que "executá-los normalmente" provavelmente envolverá o processo em segundo plano; portanto, você provavelmente desejaria usar xterm &para obter um terminal adicional, não apenas xterm. Etc.
a CVn
6

Aqui está o básico para executar um aplicativo GUI sem cabeça, com uma maneira ( vnc) de conectar-se a ele. Trabalha com RHEL7e Centos 7com a família. E retirei minha própria imagem do Docker que eu uso para o Crashplan localizado em https://github.com/xeor/dockerfiles/tree/master/crashplan/ (veja Dockerfilea configuração e init/setupa 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.

xeor
fonte
3

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

  1. Primeiro, ele inicia um "servidor de exibição" X11, como o Xorg,
  2. então inicia "clients" que dizem ao Xorg o que e onde desenhar.

Você pode usar ferramentas como startxiniciar o X11 da mesma maneira a partir de um login no console; ele iniciará o Xorg seguido pelos clientes listados no seu ~/.xinitrcarquivo.

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

(Observe que existem algumas diferenças entre xinite startx- geralmente você deve usá-lo, pois algumas distros têm algumas partes importantes de configuração que o xinit simples ignorará, a saber, o xserverrcscript.)

Com Wayland, a área de trabalho e os painéis são uma parte integrada do "compositor", de modo que toda a interface inicia em uma única etapa sem ferramentas adicionais. Por exemplo, você pode executar westonou iniciar o GNOME usando gnome-session --session=gnome-wayland.

user1686
fonte
1

Você pode iniciar aplicativos X usando o encaminhamento ssh X (ssh -X; também pode ser necessário ativar a configuração do servidor), desde que você tenha uma exibição X local .

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

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

Outro pôster menciona o VNC; Eu também usei o NX para esse fim e prefiro.

pjc50
fonte
Resposta não está relacionado, mas útil
Ben