Sim, mas não diretamente.
A ferramenta que carrega .Xresources
, que é xrdb
, invoca o pré-processador C . É daí que vem a diretiva #include
. O pré-processador C não fornece acesso a variáveis de ambiente. A saída do pré-processador é interpretada como uma lista de recursos, sem processamento dinâmico adicional, como a interpolação de variáveis.
Você tem duas soluções: usar um pré-processador diferente ou definir uma variável ao invocar xrdb
e usá-la. De qualquer forma, você precisará alterar a maneira como xrdb
é chamado - adicione um comando xrdb
aos seus scripts de inicialização da sessão X.
Para usar uma variável com o pré-processador C, passe-a na linha de comando xrdb
:
xrdb -DEXTRA_RESOURCES_FILE="<$env_path/abc/def/Xresources>" -merge ~/.Xresources
e use essa variável no seu arquivo:
#include EXTRA_RESOURCES_FILE
Observe que você está limitado no que pode em uma diretiva de inclusão, porque o pré-processador não possui nenhum recurso de processamento de string, nem mesmo concatenação. Todo o nome do arquivo deve ser especificado como uma única string. Além disso, xrdb
parece transformar silenciosamente "
em _
, mas felizmente deixa <>
passar.
Se você quer mais flexibilidade, você pode usar um pré-processador diferente. Eu uso m4 , que é peculiar e não ideal, mas não pior do que o pré-processador C. O M4 possui recursos reais de processamento de sequências e pode incluir outros arquivos. Não pode acessar variáveis de ambiente diretamente, no entanto. Com o GNU m4, você pode fazer isso, mas você tem que usar um escape de shell. Se você for executar uma invocação personalizada de xrdb
, também poderá transmitir a variável de ambiente nesse ponto.
xrdb -D"env_path=$env_path" -merge ~/.Xresources
No arquivo .Xresources
:
m4_include(env_path/abc/def/Xresources)
Observe que m4 usa '…'
para citar strings. Para incluir um '
na saída, você precisa alterar temporariamente o caractere de aspas.
Alternativamente, se tudo que você precisa é incluir um arquivo extra, basta executar
xrdb -merge "$env_path/abc/def/Xresources"