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?
xinit
ou startx
?
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?
xinit
ou startx
?
Respostas:
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:
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.
xterm &
para obter um terminal adicional, não apenas xterm
. Etc.
Aqui está o básico para executar um aplicativo GUI sem cabeça, com uma maneira ( vnc
) de conectar-se a ele. Trabalha com RHEL7
e Centos 7
com 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 Dockerfile
a configuração e init/setup
a 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.
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:
Você pode usar ferramentas como startx
iniciar o X11 da mesma maneira a partir de um login no console; ele iniciará o Xorg seguido pelos clientes listados no seu ~/.xinitrc
arquivo.
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 ...)
(Observe que existem algumas diferenças entre xinit
e 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 xserverrc
script.)
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 weston
ou iniciar o GNOME usando gnome-session --session=gnome-wayland
.
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 $DISPLAY
para 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 xauth
seguranç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.