A leitura de .zshrc na sessão X é aberta? / Como executar um script na sessão X aberta?

3

Eu tenho um comando personalizado que preciso executar na sessão X aberta (configuração do mouse).

Eu fiz um script com isso, agora eu gostaria de ter certeza de que ele seja executado na sessão aberta.

Existem soluções dependentes da distribuição (programas de inicialização, etc.), mas eu prefiro encontrar uma solução no nível do Linux (mudo minha distro com bastante frequência).

Eu poderia criar meu script em .zshrc (ou .bashrc ), mas não acho que .zshrc seja executado antes que qualquer terminal seja aberto, não é?

Além disso, gostaria que essa configuração fosse específica do usuário, dentro do meu ~ repo, não no sistema.

Como posso conseguir isso?

    
por Augustin Riedinger 21.03.2016 / 15:56

3 respostas

2

A configuração usual é que os gerenciadores de exibição X executam o script shell /etc/X11/Xsession , e esse script origina ou executa scripts do diretório /etc/X11/Xsession.d .

Na família de distribuição do Ubuntu (e provavelmente em outros derivados do Debian), um dos arquivos padrão nesse diretório origina o arquivo .xsessionrc em seu diretório pessoal, se existir (não, por padrão).

Se você criar esse arquivo, poderá colocar comandos relevantes dentro dele, incluindo o fornecimento de outro arquivo .*rc ou outro comando. É mais útil configurar variáveis de ambiente para aplicativos não-shell (ou seja, aplicativos que não são executados em qualquer emulação de terminal).

Notas:

  • Em algumas distribuições, o .xsessionrc não é originado. Você deve verificar o diretório /etc/X11/Xsession.d . A obtenção do .xsessionrc do usuário geralmente é feita pelo script /etc/X11/Xsession.d/40x11-common_xsessionrc . Se esse arquivo não existir e nenhum outro script originar seu .xsessionrc , você sempre poderá adicionar seu próprio script para obtê-lo.
  • O shell que executa /etc/X11/Xsession geralmente é /bin/sh - que pode ou não ser um link simbólico para o seu shell favorito. Você deve verificar os recursos desse shell. Por exemplo, usar [[ pode não funcionar. Os comandos . e export geralmente são seguros.
por 21.03.2016 / 16:40
0

Não tenho certeza do que você entende por "sessão aberta", mas o arquivo .xxxrc para um shell específico é chamado (de acordo com POSIX) sempre que um shell interativo é iniciado.

Isso vale para um shell de login e também para um shell aninhado na sessão atual.

    
por 21.03.2016 / 16:04
0

.zshrc é um arquivo de configuração do zsh. É lido quando você inicia uma instância interativa do zsh. Um shell interativo é aquele com o qual você interage em um terminal. Um login da GUI não envolve um shell interativo (e, incidentalmente, não envolve zsh em um sistema típico).

.zshrc não pode ajudá-lo com a configuração da GUI. É lido quando você abre um emulador de terminal ou quando você faz logon em um console de texto ou pela rede. Nunca é lido no momento certo para o que você quer fazer.

Não existe uma maneira totalmente portátil de executar um comando na abertura da sessão. A maneira mais confiável é usar o recurso do programa de inicialização do ambiente de desktop do gerenciador de janelas, se ele tiver um (a maioria faz). Essa é a única maneira independente de distribuição.

Se você iniciar a GUI por meio de startx , isso executará seu ~/.xinitrc , portanto, coloque o comando lá.

Para logins no modo gráfico, se você quiser uma maneira independente do DE / WM, precisará fornecer vários ganchos dependendo da distribuição. Dependendo do gerenciador de exibição, no ambiente de área de trabalho (ou gerenciador de sessão ou gerenciador de janelas) e em como sua distribuição (ou administrador do sistema) configurou tipos de sessão, pode ou não haver um arquivo no qual você pode fornecer comandos para executar em um login da GUI.

  • Se você efetuar login em uma “sessão personalizada”, isso executará ~/.xsession somente . O trabalho desse arquivo é iniciar tudo, inclusive o DE / SM / WM.
  • Em algumas configurações, ~/.xprofile é lido.
  • Em algumas configurações, ~/.xsessionrc é lido.

Se um arquivo como .xprofile ou .xsessionrc for executado muito cedo, talvez seja necessário recorrer a truques sujos para que seu código seja executado posteriormente. Verifique os scripts em /etc/X11/Xsession.d ou similar. Isso será ainda mais dependente da distribuição. Mais uma vez, a maneira mais simples e portátil de executar código em um login de GUI, e uma maneira que será executada depois de todo o material do sistema, é declarar o comando de inicialização para o seu gerenciador de janelas ou ambiente de desktop. Na verdade, a principal razão para usar um script que se prende ao script de inicialização de sessão do sistema é ter seu código executado cedo, por exemplo, porque você deseja alterar a maneira como o WM / DE é chamado.

¹ O gerenciador de exibição é o programa que solicita sua senha quando você efetua login no modo gráfico.

    
por 22.03.2016 / 02:18