xinit (Español)

From ArchWiki
Jump to: navigation, search

Estado de la traducción
Este artículo es una traducción de Xinit, revisada por última vez el 2018-10-13. Si advierte que la versión inglesa ha cambiado puede ayudar a actualizar la traducción, bien por usted mismo o bien avisando al equipo de traducción.

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 y startx toman un argumento opcional de la aplicación cliente. 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. Executar xinit /usr/bin/foo es por lo tanto equivalente a ejecutar xinit con exec foo en su ~/.xinitrc.

xinit se utiliza normalmente para iniciar administradores de ventanas o entornos de escritorio. Aunque también puede utilizar xinit para ejecutar aplicaciones gráficas sin un administrador de ventanas, muchas aplicaciones gráficas esperan un administrador de ventanas compatible con Wikipedia:Extended Window Manager Hints. ~/.xinitrc es útil para ejecutar programas que dependen de X y establecer variables de entorno en el inicio del servidor X. Los administradores de pantalla inician Xorg y, generalmente, xprofile.

Instalación

Instale el paquete xorg-xinit.

Configuración

xinitrc

Si .xinitrc está presente en el directorio personal del usuario, startx y xinit lo ejecutan. De lo contrario, startx ejecutará el /etc/X11/xinit/xinitrc predeterminado.

Nota: Xinit tiene su propio comportamiento predeterminado en lugar de ejecutar el archivo. Véase xinit(1) para más detalles.

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 administrador 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
Nota: Por lo menos, asegúrese de que el último bloque 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 administrador 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 administrador 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 administrador 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.

Sugerencia: -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.

Nota: Para volver a habilitar la redirección de la salida de la sesión X en el archivo de registro de Xorg, añada la opción -keeptty. Véase Redirección rota para más detalles.

Utilización

Para ejecutar Xorg como un usuario normal, introduzca:

$ startx

o

$ xinit -- :1
Nota: xinit no soporta múltiples pantallas cuando ya se ha iniciado otro servidor X. Para ello debe especificar la pantalla añadiendo -- :número_de_pantalla, donde número_de_pantalla es 1 o más.

Su administrador de ventanas (o entorno de escritorio) elegido debería comenzar ahora correctamente.

Para salir de X, ejecute la función de salida de su administrador de ventanas (asumiendo que tiene una). Si carece de dicha funcionalidad, ejecute:

$ pkill -15 Xorg
Nota: pkill eliminará todas las instancias de X en ejecución. Para terminar específicamente el administrador de ventanas en el terminal virtual actual, ejecute:
$ pkill -15 -t tty"$XDG_VTNR" Xorg

Inicio automático de X al inicio de sesión

Asegúrese de que startx esté configurado correctamente.

Para Bash, añada lo siguiente al final de ~/.bash_profile. Si el archivo no existe, copie una versión de la estructura de /etc/skel/.bash_profile. Para Zsh, añádalo a ~/.zprofile.

if [[ ! $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.

Si desea 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.

Sugerencia: Este método se puede combinar con el inicio de sesión automático a la consola virtual.

Consejos y trucos

Sobrescribir xinitrc desde la línea de órdenes

Si tiene un ~/.xinitrc en funcionamiento, pero solo desea probar otro administrador de ventanas o entorno de escritorio, puede ejecutarlo introduciendo startx seguido de la ruta al administrador de ventanas:

$ startx /full/path/to/window-manager

Si el administrador de ventanas tiene argumentos, deben citarse para ser reconocidos como parte del primer parámetro de startx:

$ startx "/full/path/to/window-manager --key value"

Tenga en cuenta que se requiere la ruta completa. Opcionalmente, también puede especificar opciones personalizadas para el script #xserverrc añadiéndolas después de --, por ejemplo:

$ startx /usr/bin/enlightenment -- -br +bs -dpi 96

Véase también startx(1).

Sugerencia: Esto se puede utilizar incluso para iniciar un programa gráfico normal pero sin ninguna de las funciones del administrador de ventanas. Véase también #Inicio de aplicaciones sin un administrador de ventanas y Ejecutando programa en una pantalla X separada

Cambio entre entornos de escritorio/gestores de ventanas

Si está cambiando con frecuencia entre diferentes entornos de escritorio o administradores de ventanas, es conveniente utilizar un administrador de pantalla o expandir .xinitrc para hacer posible el cambio.

El siguiente ~/.xinitrc de ejemplo muestra como iniciar un entorno de escritorio o administrador 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 startkde;;
    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

Inicio de aplicaciones sin un administrador de ventanas

Es posible iniciar solo aplicaciones específicas sin un administrador 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

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.

Sugerencia: Este método puede ser útil para lanzar juegos gráficos, especialmente en sistemas donde excluir el uso de la memoria o la CPU de un administrador de ventanas o entorno de escritorio, y posibles aplicaciones accesorias, puede ayudar a mejorar el rendimiento del juego.

Véase también Display manager#Starting applications without a window manager.

Redirección de salida utilizando startx.

Véase Xorg#Broken redirection para más detalles.