Diferencia entre .xinitrc, .xsession y .xsessionrc

Encontré tres files de configuration.

  1. .xinitrc
  2. .xsession
  3. .xsessionrc

Sé que el primero es para usar startx y el segundo y tercero se usan cuando se usa un administrador de pantalla. Pero, ¿cuál es la diferencia entre los dos últimos?

~/.xinitrc es ejecutado por xinit , que generalmente se invoca a través de startx . Este progtwig se ejecuta después de iniciar session: primero inicia session en una console de text y luego inicia la GUI con startx . La function de .xinitrc es iniciar la parte de la GUI de la session, generalmente configurando algunas configuraciones relacionadas con la GUI, como enlaces de teclas (con xmodmap o xkbcomp ), resources X (con xrdb ), etc., y para iniciar un administrador de session o un administrador de windows (posiblemente como parte de un entorno de escritorio).

~/.xsession se ejecuta cuando ~/.xsession session en modo gráfico (en un administrador de visualización ) y el administrador de visualización invoca el tipo de session "personalizado". (Con el gestor de pantalla histórico xdm, .xsession siempre se ejecuta, pero con los gestores de pantalla modernos que le dan al usuario la opción de tipo de session, generalmente debe elegir "personalizado" para que se ejecute .xsession ). Su function es tanto establecer parameters de time de inicio de session (como variables de entorno) y para iniciar la session de la GUI. Una .xsession típica es

 #!/bin/sh . ~/.profile . ~/.xinitrc 

~/.xsessionrc se ejecuta en Debian (y derivados como Ubuntu, Linux Mint, etc.) mediante las secuencias de commands de inicio de X en un inicio de session GUI, para todos los types de sesiones y (creo) de todos los administradores de pantallas. También se ejecuta desde startx si el usuario no tiene .xinitrc , porque en ese caso startx vuelve a los mismos scripts de inicio de session que se utilizan para iniciar session en la GUI. Se ejecuta relativamente temprano, después de cargar los resources, pero antes de iniciar cualquier progtwig, como un agente key, un daemon D-Bus, etc. Por lo general, establece las variables que pueden ser utilizadas por las secuencias de commands de inicio posteriores. No tiene ninguna documentation oficial que yo sepa, usted tiene que search en la fuente para ver qué funciona.

.xinitrc y .xsession son características históricas del sistema X11 Window, por lo que deberían estar disponibles y tener un comportamiento similar en todos los sistemas Unix. Por otro lado, .xsessionrc es una característica de Debian y las distribuciones que no están basadas en Debian no lo tienen a less que hayan implementado algo similar.

.xprofile es muy similar a .xsessionrc , pero es parte de la secuencia de commands de inicio de session de GDM (el administrador de pantalla de GNOME), por lo que solo se lee si inicia session con GDM.

Según otra discusión, startx + ~ / .xsession y no ~ / .xinitrc, da como resultado una funcionalidad networkingucida (xfce4, sid)

En primer lugar: .xsessionrc es para contener variables de entorno globales . El énfasis es mío

En segundo lugar: 40x11-common_xsessionrc en /etc/X11/Xsession.d se obtiene antes de 50x11-common_determine-startup . Entonces, .xsessionrc se lee antes de .xsession y cualquier set de variables de entorno estará disponible para las aplicaciones ejecutadas por los commands en .xsession .

Otras lecturas:

  • Xsession: inicializa la session X
  • Comprender los * Scripts de inicio de session de NIX