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

40

Eu encontrei três arquivos de configuração.

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

Eu sei que o primeiro é para usar 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?

    
por lockdoc 08.05.2016 / 18:27

2 respostas

43

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

~/.xsession é executado quando você faz login no modo gráfico (em um gerenciador de exibição ) e o O gerenciador de exibição chama o tipo de sessão "customizada". (Com o gerenciador de exibição histórico xdm, .xsession é sempre executado, mas com gerenciadores de exibição modernos que dão ao usuário uma opção de tipo de sessão, geralmente é necessário escolher “personalizado” para que .xsession seja executado.) para 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. Ele também é executado a partir de startx se o usuário não tiver um .xinitrc , porque nesse caso startx recai nos mesmos scripts de inicialização de sessão que são usados para o login da GUI. Ele é executado relativamente cedo, depois de carregar recursos, mas antes de iniciar qualquer programa, como um agente de chave, um daemon D-Bus, etc. Normalmente, ele define variáveis que podem ser usadas por scripts de inicialização posteriores. Não tem nenhuma documentação oficial que eu saiba, você tem que cavar a fonte para ver o que funciona.

.xinitrc e .xsession são recursos históricos 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 do Debian e distribuições que não são baseadas no Debian não o possuem, a menos que tenham implementado algo similar.

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

    
por 09.05.2016 / 02:04
3

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

Firstly: .xsessionrc is for holding global environment variables. The emphasis is mine.

Secondly: 40x11-common_xsessionrc in /etc/X11/Xsession.d is sourced before 50x11-common_determine-startup. So .xsessionrc is read before .xsession and any environment variables set will become available to applications run by the commands in .xsession.

Leitura adicional:

por 08.05.2016 / 19:46