Encontrei três arquivos de configuração.
.xinitrc
.xsession
.xsessionrc
Sei que o primeiro é para uso startx
e o segundo e o terceiro são usados ao usar um gerenciador de exibição. Mas qual é a diferença entre os dois últimos?
~/.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 xmodmap
ou 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, .xsession
sempre é 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 .xsession
executar.) 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 startx
se o usuário não tiver um .xinitrc
, porque nesse caso startx
retorna 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.
.xinitrc
e .xsession
sã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.
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_xsessionrc
in/etc/X11/Xsession.d
é originário antes50x11-common_determine-startup
. Então.xsessionrc
é lido antes.xsession
e quaisquer variáveis de ambiente definidas ficará disponível para os aplicativos são executados pelos comandos.xsession
.
Leitura adicional: