dotfiles/bin/Xresources-preprocess

46 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
# Use the precompiler to allow for `xrdb -nocpp -merge ~/.Xresources`.
# Inspiration from https://github.com/dolmen/Xresources.edit/blob/1be4f5601b3d4e8befa043386288c64e724ed746/Xresources.edit
fname=.Xresources
ext=src
force=
# Initial setup: move $fname to $fname.$ext
if [ ! -f "$HOME/$fname.$ext" ]; then
cat "$HOME/$fname" > "$HOME/$fname.$ext"
# Make $fname non-writable to discourage direct editing
chmod a-wx "$HOME/$fname"
fi
# Check mtime
if [ -f "$HOME/$fname" -a "$HOME/$fname" -nt "$HOME/$fname.$ext" ]; then
{
echo "~/$fname is more recent than ~/$fname.$ext"
echo "You have to fix this manually."
echo "e.g. touch ~/$fname.$ext"
} >&2
exit 1
fi
# Run cpp and save the result as ~/$fname
[ -e "$HOME/$fname" ] && chmod u+w "$HOME/$fname"
{
echo '! *************************************************'
echo "! Do not edit ~/$fname, but ~/$fname.$ext"
echo '! *************************************************'
echo '! vim:set ft=xdefaults:'
echo '!'
} > "$HOME/$fname"
cpp "$HOME/$fname.$ext" | tee -a "$HOME/$fname"
res=$?
# Make $fname non-writable to discourage direct editing
chmod a-wx "$HOME/$fname"
exit $res