O i3 dmenu não navega $ PATH


13

Eu quero executar um script de shell ~/.local/bin/test.shvia dmenu. Se eu correr dmenuatravés $mod+De procurar a entrada test.sh, não a encontro.

O caminho ~/.local/binjá está definido para minha $PATHvariável em~/.profile

$ echo $PATH
/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Também removi ~/.cache/dmenu_rune reiniciei o i3. O que posso fazer para iniciar o script de teste via dmenu?

Respostas:


7

Exclua ~/.cache/dmenu_runou ~/dmenu_cache, dependendo do que você possui, e efetue login novamente. Após o PATH ser recarregado a partir de .profile após o login, o dmenu deve gerar novamente o cache a partir de $ PATH. O dmenu parece ruim em renovar seu próprio cache e precisa ser forçado a fazê-lo às vezes.

Verifique também se você ativou o bit executável do script:

$ ls -l ~/.local/bin/test.sh
-rwxrwxrwx 1 user group 152 Jan 11 04:09 /home/user/.local/bin/test.sh

Desculpe, esqueci de mencionar que já removi ~/.cache/dmenu_rune reiniciei o i3, mas isso não afeta o comportamento de dmenu.
Hölderlin

@ Hölderlin, é importante que você sair e fazer login novamente para recarregar~/.profile
Kenneth B. Jensen

4

Eu tive o mesmo problema.

Esta postagem no fórum do Arch Linux descreve o problema:

Definir $ PATH em ~ / .bashrc não garante que seu WM / dmenu herdará este ambiente.
Uma pergunta mais relevante a ser feita é "Como você faz login?" Normalmente, o ambiente exportado em ~ / .bash_profile ou ~ / .profile está disponível em seus aplicativos X.
Inicie o dmenu_run como você normalmente faz e, em dmenu, digite
echo $PATH > /tmp/path
Then em um terminal cat /tmp/pathpara ver o que é esse $ PATH.

No meu caso, os diretórios $ PATH definidos no meu ~/.profilenão foram capturados pelo dmenu. Meu gerenciador de janelas é iniciado a partir de .xinitrc e adiciona um adicional export PATH=$PATH:/dir/of/interestno arquivo .xinitrc antes que a exec my_wmlinha resolvesse o problema. É um pouco desajeitado.

Como observado anteriormente, tive que remover o ~/.cache/dmenu_runarquivo e efetuar login novamente depois de fazer a alteração para fazê-lo funcionar.


2
Para alguns, tentar echo $SHELL > /tmp/shelltambém pode valer a pena. Eu pensei que o meu estava usando, bashmas acontece que ele usou zshpara verificar diferentes arquivos de configuração. Também tentei colocá-lo xinitrce i3configurá-lo, mas nenhum deles funcionou - mas o / etc / zprofile funcionou! O local ~ / .zshrc não era suficiente. /etc/profilepode funcionar bem em ambos zshe bash.
miyalys

0

Eu posto o algoritmo completo:

  1. Coloque env vars em ~/.profileou ~/.xprofile(Crie se não existir), não em~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. Sair e entrar

Para depurar env vars, digite:

  1. No dmenu: echo $PATH > /tmp/path
  2. No terminal: cat /tmp/path
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.