Escuché que hay una manera de iniciar programas con interfaz gráfica sin administrador de pantalla, directamente desde la terminal. ¿Es esto real y si es así, cómo puedo hacer eso?
xinit
o startx
?
Escuché que hay una manera de iniciar programas con interfaz gráfica sin administrador de pantalla, directamente desde la terminal. ¿Es esto real y si es así, cómo puedo hacer eso?
xinit
o startx
?
Respuestas:
Puede ejecutarlos sin administrador de pantalla, pero necesita una sesión X en ejecución. Los detalles dependerán de su distribución, pero debería poder obtener una sesión X mínima con un solo terminal ejecutando
xinit
No he hecho esto en años pero, la última vez que lo hice, eso daría algo como esto:
Una vez allí, puede ejecutar un programa GUI normalmente, preferiblemente ejecutándolo en segundo plano (con &
) para que no pierda el acceso a su único terminal.
xterm &
para obtener un terminal adicional, no solo xterm
. Etc.
Aquí están los conceptos básicos para ejecutar una aplicación GUI sin cabeza, con una forma ( vnc
) de conectarse a ella. Trabaja en RHEL7
y Centos 7
, con la familia. Y arranqué mi propia imagen de Docker que utilizo para Crashplan ubicada en https://github.com/xeor/dockerfiles/tree/master/crashplan/ (ver Dockerfile
para la configuración y el init/setup
inicio.
# 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
Ahora debería poder conectarse al servidor: 5900 y ver la aplicación.
Si. Simplemente haga lo mismo que hace un administrador de pantalla. Además de la pantalla de inicio de sesión gráfica (que no necesita en este caso), el administrador de pantalla solo hace dos cosas:
Puede usar herramientas como startx
iniciar X11 de la misma manera desde el inicio de sesión de la consola; lanzará Xorg seguido de los clientes que figuran en su ~/.xinitrc
archivo.
Por ejemplo, el archivo .xinitrc podría tener startkde
o gnome-session
, o podría enumerar los componentes individuales (el administrador de ventanas, un panel / barra de tareas, un escritorio ...)
(Tenga en cuenta que hay algunas diferencias entre xinit
y startx
, por lo general, debe usar este último, ya que algunas distribuciones tienen algunas piezas importantes de configuración que Xinit ignorará, es decir, el xserverrc
script).
Con Wayland, el escritorio y los paneles son una parte integrada del "compositor", por lo que toda la interfaz comienza en un solo paso sin herramientas adicionales. Por ejemplo, puede ejecutar weston
o iniciar GNOME usando gnome-session --session=gnome-wayland
.
Puede iniciar aplicaciones X utilizando el reenvío ssh X (ssh -X; es posible que también deba habilitarse en la configuración del servidor), siempre que tenga una pantalla X local .
La aplicación se iniciará y se mostrará localmente, mientras se ejecuta en un sistema sin cabeza. Necesitará tener X instalado en el sistema sin cabeza para tener las bibliotecas correctas, y esto puede no funcionar con aplicaciones GNOME más modernas.
También puede usar $DISPLAY
para iniciar aplicaciones en una pantalla X adjunta, incluso si su shell es remoto (ssh o consola). Si eres root y la persona que inició sesión en la pantalla X no lo está, puedes anular la xauth
seguridad y abrir una ventana en su pantalla de todos modos. Esto también funciona si tiene dos servidores de visualización X diferentes en monitores diferentes.
Otro cartel menciona VNC; También he usado NX para este propósito, y lo prefiero.