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
awk
variableimg
e 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
. -
1
Este comando críptico apenas diz ao awk para imprimir cada linha que recebe do arquivo de entrada.
-
~/.conkyrc.in
Este é o arquivo de entrada, aquele que contém a linha fictícia
${image xxxx ....
. -
>~/.conkyrc
Isto diz ao shell para redirecionar a saída de
awk
para 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.