52 lines
1.4 KiB
Bash
Executable file
52 lines
1.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# ____ _ _ _ ____ _____ ____
|
|
# / ___|| | | | / \ | _ \| ____| _ \
|
|
# \___ \| |_| | / _ \ | | | | _| | |_) |
|
|
# ___) | _ |/ ___ \| |_| | |___| _ <
|
|
# |____/|_| |_/_/ \_\____/|_____|_| \_\
|
|
#
|
|
# __ ___ _____ ____ _ _ _____ ____
|
|
# \ \ / / \|_ _/ ___| | | | ____| _ \
|
|
# \ \ /\ / / _ \ | || | | |_| | _| | |_) |
|
|
# \ V V / ___ \| || |___| _ | |___| _ <
|
|
# \_/\_/_/ \_\_| \____|_| |_|_____|_| \_\
|
|
#
|
|
# This program require xdotool to communicate
|
|
# with the window. It require entr (http://eradman.com/entrproject/)
|
|
# if you use the refresh on edit feature.
|
|
|
|
wai=$(dirname $(readlink -f "$0")) # Current script directory
|
|
|
|
|
|
refresh() {
|
|
wid=$(xdotool search --name 'SFML/OpenGL Ray Marching')
|
|
[ ! -z "$wid" ] && xdotool key --window "$wid" R
|
|
}
|
|
|
|
usage() {
|
|
echo "Usage: $0 [options]"
|
|
echo "Options:"
|
|
echo " --every <time> Refresh shader every <time> seconds"
|
|
exit 1
|
|
}
|
|
|
|
[ $# -ne 2 ] && [ $# -ne 0 ] && usage
|
|
|
|
if [ $# -eq 2 ] && [ $1 == "--every" ]
|
|
then
|
|
##### Periodically refresh shader
|
|
shift
|
|
time=$1
|
|
while [ true ]
|
|
do
|
|
sleep $time
|
|
refresh
|
|
done
|
|
else
|
|
##### Refresh on edit
|
|
while [ true ]
|
|
do
|
|
ls $wai/../resources/shaders/*.glsl | entr -pd -s 'kill $PPID'
|
|
refresh
|
|
done
|
|
fi
|