Usando links suaves
No seu arquivo ~/.conkyrc , adicione a linha:
${image /tmp/conky.jpg -p 0,620 -s 75x75}
Após a linha qdbus no seu script, adicione a linha:
ln -sf "$(cat ~/.config/openbox/conky/image)" /tmp/conky.jpg
Este comando ln atualiza o arquivo de link /tmp/conky.jpg para apontar para qualquer nome de arquivo de imagem no arquivo ~/.config/openbox/conky/image .
Para obter o comportamento desejado, experimente dois sinalizadores na linha conky image : -n informa ao conky para não armazenar em cache a imagem, enquanto -f interval especifica o intervalo de liberação do cache do conky para essa imagem .
Usando awk
Para resumir, o nome do arquivo de imagem está em ~/.config/openbox/conky/image e você deseja transferi-lo para o arquivo ~/.conkyrc . Então, depois da linha qdbus no seu script, adicione a linha:
awk -v "img=$(cat ~/.config/openbox/conky/image)" '/image/{sub("xxxx", img)} 1' ~/.conkyrc.in >~/.conkyrc
em que ~/.conkyrc.in é seu arquivo conkyrc de protótipo, aquele que contém a linha:
${image xxxx -p 0,620 -s 75x75}
O comando awk substitui o xxxx pelo nome do seu arquivo de imagem. Depois que o comando awk for executado, um novo arquivo ~/.conkyrc será criado com o nome da imagem correto.
Como funciona:
-
-v "img=$(cat ~/.config/openbox/conky/image)"Isso cria uma
awkvariableimge atribui a ela o conteúdo de~/.config/openbox/conky/image. -
/image/{sub("xxxx", img)}Isso procura linhas contendo a palavra
image. Para qualquer linha contendo essa palavra, a primeira ocorrência dexxxxé substituída pelo valor da variávelimg. -
1Este comando críptico apenas diz ao awk para imprimir cada linha que recebe do arquivo de entrada.
-
~/.conkyrc.inEste é o arquivo de entrada, aquele que contém a linha fictícia
${image xxxx ..... -
>~/.conkyrcIsto diz ao shell para redirecionar a saída de
awkpara o seu arquivo conkyrc, sobrescrevendo a cópia anterior.
Usando m4 (avançado)
Crie o arquivo ~/.conkyrc.m4 , que se parece com o seu arquivo normal, exceto que ele contém a linha:
${image translit(include(/home/user/.config/openbox/conky/image), [
])) -p 0,620 -s 75x75}
Em seguida, execute:
m4 ~/.conkyrc.m4 >~/.conkyrc
m4 reconhecerá translit e include como comandos que devem ser obedecidos. Quando ele vir o comando include , ele lerá seu ~/.config/openbox/conky/image e incluirá o conteúdo. Esse arquivo provavelmente terá um novo caractere de linha à direita. O comando translit está lá para remover essa nova linha.
m4 é uma linguagem de macro muito poderosa que você pode usar para gerenciar muitas partes do seu arquivo conkyrc. Se você não quer gastar tempo para aprender um novo idioma, provavelmente é mais simples manter a awk solution.