Eu tenho um script chamado display
, que define meu plano de fundo da área de trabalho usando feh
. Ele faz isso com a seguinte linha:
feh --bg-scale $WALLPAPER &
A variável de ambiente $WALLPAPER é inicializada no meu arquivo .bashrc
. O script funciona corretamente se eu o executar a partir de um shell comum após o login.
Eu quero que o script seja executado pelo i3 na inicialização. Portanto, adicionei a seguinte linha a ~/.config/i3/config
:
exec display
e não funciona. Tentei redirecionar STDERR para um arquivo e o resultado é:
feh: No loadable images specified.
See 'man feh' for detailed usage information
Além disso, se eu tentar echo $WALLPAPER
dentro de display
, recebo uma linha em branco. Portanto, a variável de ambiente ainda não foi inicializada. Tudo bem - tentei adicionar exec /bin/bash -c "source ~/.bashrc"
na linha acima, mas isso parece não fazer diferença. Como posso ter certeza de que essa variável é inicializada quando o i3 é inicializado?
O i3 está sendo executado por um usuário diferente, tente fornecer um caminho absoluto para o comando de origem em vez de um caminho relativo com ~
Isso foi respondido para mim no Reddit . O problema é que
.bashrc
só é carregado pelo bash - colocar as variáveis de ambiente~/.profile
significa que ele roda corretamente.