Diferença entre .xinitrc, .xsession e .xsessionrc

55

Encontrei três arquivos de configuração.

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

Sei que o primeiro é para uso startxe o segundo e o terceiro são usados ​​ao usar um gerenciador de exibição. Mas qual é a diferença entre os dois últimos?

lockdoc
fonte

Respostas:

65

~/.xinitrcé executado por xinit, que normalmente é chamado via startx. Este programa é executado após o login: primeiro você faz login em um console de texto e depois inicia a GUI startx. A função de .xinitrcé iniciar a parte da GUI da sessão, geralmente definindo algumas configurações relacionadas à GUI, como ligações de teclas (com xmodmapou xkbcomp), recursos X (com xrdb), etc., e iniciar um gerenciador de sessões ou gerenciador de janelas ( possivelmente como parte de um ambiente de desktop).

~/.xsessioné executado quando você efetua login no modo gráfico (em um gerenciador de exibição ) e o gerente de exibição chama o tipo de sessão “personalizado”. (Com o gerenciador de exibição histórico xdm, .xsessionsempre é executado, mas com os gerenciadores de exibição modernos que permitem ao usuário escolher o tipo de sessão, você geralmente precisa escolher "personalizado" para .xsessionexecutar.) Sua função é definir parâmetros de tempo de login (como variáveis ​​de ambiente) e para iniciar a sessão da GUI. Um típico .xsessioné

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

~/.xsessionrcé executado no Debian (e derivados como Ubuntu, Linux Mint etc.) pelos scripts de inicialização do X em um login da GUI, para todos os tipos de sessão e (eu acho) de todos os gerenciadores de exibição. Também é executado a partir de startxse o usuário não tiver um .xinitrc, porque nesse caso startxretorna aos mesmos scripts de inicialização da sessão que são usados ​​para o login da GUI. É executado relativamente cedo, depois de carregar recursos, mas antes de iniciar qualquer programa, como um agente-chave, um daemon D-Bus, etc. Geralmente, define variáveis ​​que podem ser usadas em scripts de inicialização posteriores. Ele não possui nenhuma documentação oficial que eu conheça, você precisa procurar na fonte para ver o que funciona.

.xinitrce .xsessionsão características históricas do sistema X11 Window, portanto devem estar disponíveis e ter um comportamento semelhante em todos os sistemas Unix. Por outro lado, .xsessionrcé um recurso Debian e as distribuições que não são baseadas no Debian não o possuem, a menos que tenham implementado algo semelhante.

.xprofileé muito parecido com .xsessionrc, mas faz parte do script de inicialização da sessão do GDM (o gerenciador de exibição do GNOME), portanto, é lido apenas se você efetuar login no GDM.

Gilles 'SO- parar de ser mau'
fonte
5

De acordo com outra discussão, startx + ~ / .xsession e no ~ / .xinitrc, resulta em funcionalidade reduzida (xfce4, sid)

Em primeiro lugar: .xsessionrcé para manter variáveis ​​de ambiente globais . A ênfase é minha.

Em segundo lugar: 40x11-common_xsessionrcin /etc/X11/Xsession.dé originário antes 50x11-common_determine-startup. Então .xsessionrcé lido antes .xsessione quaisquer variáveis de ambiente definidas ficará disponível para os aplicativos são executados pelos comandos .xsession.

Leitura adicional:

Thomas Dickey
fonte