xinit (Español)
De Wikipedia:
- El programa xinit permite a un usuario iniciar manualmente un servidor de pantalla Xorg. El script startx(1) es un front-end para xinit(1).
xinit se utiliza normalmente para iniciar gestores de ventanas o entornos de escritorio. Aunque también puede utilizar xinit para ejecutar aplicaciones gráficas sin un gestor de ventanas, muchas aplicaciones gráficas esperan un gestor de ventanas compatible con Wikipedia:Extended Window Manager Hints. Los gestores de pantalla inician Xorg y, generalmente, xprofile.
Instalación
Instale el paquete xorg-xinit.
Configuración
xinit y startx toman un argumento opcional de la aplicación cliente, véase #Sobrescribir xinitrc. Si no proporciona uno, buscarán ~/.xinitrc
para ejecutarse como un script del intérprete de línea de órdenes para iniciar las aplicaciones cliente.
xinitrc
.xinitrc
es útil para ejecutar programas que dependen de X y establecer variables de entorno en el inicio del servidor X. Si está presente en el directorio personal del usuario, startx y xinit lo ejecutan. De lo contrario, startx ejecutará el /etc/X11/xinit/xinitrc
predeterminado.
Este xinitrc predeterminado iniciará un entorno básico con Twm, xorg-xclock y Xterm (asumiendo que los paquetes necesarios estén instalados). Por lo tanto, para iniciar un gestor de ventanas o un entorno de escritorio diferente, primero cree una copia del xinitrc
predeterminado en su directorio personal:
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
Luego edite el archivo y reemplace los programas predeterminados con las órdenes deseadas. Recuerde que las líneas que siguen a una orden utilizando exec
serían ignoradas. Por ejemplo, para iniciar xscreensaver
en segundo plano y luego iniciar openbox, utilice lo siguiente:
~/.xinitrc
... xscreensaver & exec openbox-session
if
en /etc/X11/xinit/xinitrc
esté presente en su archivo ~/.xinitrc
para asegurarse de que los scripts en /etc/X11/xinit/xinitrc.d
son ejecutados.Los programas de ejecución prolongada que se inician antes que el gestor de ventanas, como un salvapantallas y una aplicación de fondo de pantalla, deben bifurcarse (fork) o ejecutarse en segundo plano añadiendo un signo &
. De lo contrario, el script se detendría y esperaría a que cada programa terminase antes de ejecutar el gestor de ventanas o el entorno de escritorio. Tenga en cuenta que algunos programas no deben ser bifurcados, para evitar errores de secuencia (race bugs), como es el caso de xrdb. Antes de pasar exec
se reemplazará el proceso del script con el proceso del gestor de ventanas, de modo que X no salga incluso si este proceso se bifurca en segundo plano.
xserverrc
El archivo xserverrc
es un script del intérprete de línea de órdenes responsable de iniciar el servidor X. Tanto startx como xinit ejecutan ~/.xserverrc
si existe, de lo contrario startx utilizará /etc/X11/xinit/xserverrc
.
Para mantener un sesión autenticada con logind
y para evitar eludir el bloqueo de pantalla al cambiar de terminal, Xorg debe iniciarse en el mismo terminal virtual donde se produjo el inicio de sesión [1]. Por lo tanto, se recomienda especificar vt$XDG_VTNR
en el archivo ~/.xserverrc
:
~/.xserverrc
#!/bin/sh exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR
Véase Xserver(1) para obtener un listado de todas las opciones de la línea de órdenes.
-nolisten local
puede añadirse después de -nolisten tcp
para deshabilitar la abstracción de sockets de X11 para ayudar con el aislamiento. Hay un breve resumen sobre cómo puede afectar esto a la seguridad de X11.Alternativamente, si desea que X se muestre en una consola separada de la que se invoca al servidor, puede hacerlo utilizando el wrapper del servidor X proporcionado por /usr/lib/systemd/systemd-multi-seat-x
. Para mayor comodidad, xinit y startx pueden configurarse para utilizar este contenedor modificando su ~/.xserverrc
.
-keeptty
. Véase Xorg#Session log redirection para más detalles.Utilización
Para ejecutar Xorg como un usuario normal, introduzca:
$ startx
O si está configurado #xserverrc:
$ xinit -- :1
-- :número_de_pantalla
, donde número_de_pantalla
es 1 o más.Su gestor de ventanas (o entorno de escritorio) elegido debería comenzar ahora correctamente.
Para salir de X, ejecute la función de salida de su gestor de ventanas (asumiendo que tiene una). Si carece de dicha funcionalidad, ejecute:
$ pkill -15 Xorg
$ pkill -15 -t tty"$XDG_VTNR" Xorg
Véase también signal(7).
Consejos y trucos
Sobrescribir xinitrc
Si tiene un ~/.xinitrc
en funcionamiento pero solo desea probar otro gestor de ventanas o entorno de escritorio, puede ejecutarlo introduciendo startx seguido de la ruta al gestor de ventanas:
$ startx /usr/bin/i3
Si el binario tiene argumentos, deben citarse para ser reconocidos como parte del primer parámetro de startx:
$ startx "/usr/bin/gestor-de-ventanas --key value"
Tenga en cuenta que se requiere la ruta completa. También puede especificar opciones personalizadas para el script #xserverrc añadiéndolas después del signo de guión doble --
:
$ startx /usr/bin/enlightenment -- -br +bs -dpi 96
Véase también startx(1).
/etc/X11/xinit/xinitrc.d/
se omiten, es posible que sea necesario configurar la variable de entorno DISPLAY
. Puede probar i3 en la pantalla deseada ejecutando DISPLAY=:número_pantalla startx /usr/bin/i3
.Inicio automático de X al inicio de sesión
Asegúrese de que startx esté configurado correctamente.
Coloque lo siguiente en su archivo de inicialización del login shell (por ejemplo ~/.bash_profile
para Bash o ~/.zprofile
para Zsh):
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then exec startx fi
Puede reemplazar la comparación -eq
con una como -le 3
(para vt1 a vt3) si desea usar inicios de sesión gráficos en más de un terminal virtual.
Las condiciones alternativas para detectar el terminal virtual incluyen "$(tty)" = "/dev/tty1"
, que no permite la comparación con -le
, y "$(fgconsole 2>/dev/null || echo -1)" -eq 1
, que no funciona en consolas en serie.
La orden exec
garantiza que el usuario finalice la sesión cuando el servidor X se cierre, se bloquee o lo mate un atacante. Si desea correr el riesgo y permanecer conectado cuando finalice la sesión X, elimine exec
.
Véase también Fish#Start X at login e inicio de sesión automático en Xorg sin gestor de pantallas.
Cambio entre entornos de escritorio/gestores de ventanas
Si está cambiando con frecuencia entre diferentes entornos de escritorio o gestores de ventanas, es conveniente utilizar un gestor de pantalla o expandir ~/.xinitrc
para hacer posible el cambio.
El siguiente ejemplo muestra como iniciar un entorno de escritorio o gestor de ventanas en particular con un argumento:
~/.xinitrc
... # Aquí Xfce se mantiene por defecto session=${1:-xfce} case $session in i3|i3wm ) exec i3;; kde ) exec startplasma-x11;; xfce|xfce4 ) exec startxfce4;; # No hay sesión conocida, intento ejecutarlo como orden * ) exec $1;; esac
Para pasar el argumento session:
$ xinit session
o
$ startx ~/.xinitrc session
Iniciar aplicaciones sin un gestor de ventanas
Es posible iniciar solo aplicaciones específicas sin un gestor de ventanas, aunque lo más probable es que esto solo sea útil con una sola aplicación que se muestre en modo de pantalla completa. Por ejemplo:
~/.xinitrc
... exec chromium
Alternativamente, se puede llamar al binario directamente desde el símbolo del sistema como se describe en #Sobrescribir xinitrc.
Con este método, debe establecer la geometría de cada ventana de la aplicación a través de sus propios archivos de configuración, si es posible.
Véase también Display manager#Starting applications without a window manager.
Redirección de salida utilizando startx.
Véase Xorg#Session log redirection para más detalles.