Don't update conkyrc directly

* By using a temp file and comparing we can avoid excessive reloading of conky
This commit is contained in:
2Shirt 2020-01-16 15:12:43 -07:00
parent 6686a4d495
commit 1451035560
Signed by: 2Shirt
GPG key ID: 152FAC923B0E132C

View file

@ -1,24 +1,30 @@
#!/bin/bash
# vim: sts=2 sw=2 ts=2
CONFIG_BASE="${HOME}/.conkyrc_base"
CONFIG_NEW="${HOME}/.conkyrc_new"
CONFIG_REAL="${HOME}/.conkyrc"
IF_LIST=($(ip l \
| egrep '^[0-9]+:\s+(eth|en|wl)' \
| sed -r 's/^[0-9]+:\s+(\w+):.*/\1/' \
| sort))
# Reset conkyrc to default
rm "${HOME}/.conkyrc"
cp "${HOME}/.conkyrc_base" "${HOME}/.conkyrc"
# Build new config from the default
rm "${CONFIG_NEW}"
cp "${CONFIG_BASE}" "${CONFIG_NEW}"
# Add interfaces to conkyrc
# Add interfaces to conkyrc_new
for i in "${IF_LIST[@]}"; do
if [[ "${i:0:1}" == "e" ]]; then
sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" $HOME/.conkyrc
sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" "${CONFIG_NEW}"
else
sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" $HOME/.conkyrc
sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" "${CONFIG_NEW}"
fi
done
# Remove '#Network' line to prevent duplicating lines if this script is re-run
sed -i -r "s/#Network//" $HOME/.conkyrc
# vim: sts=2 sw=2 ts=2
# Replace config if there were changes
if ! diff -q "${CONFIG_NEW}" "${CONFIG_REAL}" >/dev/null 2>&1; then
rm "${CONFIG_REAL}"
cp "${CONFIG_NEW}" "${CONFIG_REAL}"
fi