But, who needs a feature for the Exaile GUI when a script will suffice?
So, set your story up to play in the GUI, then use this:
bedtime-story.sh:
# turn the screen off
xset dpms force off
sleep $@ > /dev/null 2>&1
if [ $? = 1 ]
then
# turn the screen on
xset dpms force on
echo "Fade out Exaile playback after a defined time, using the computer's volume control."
echo ""
echo "Usage: bedtime-story NUMBER[smh]..."
echo ""
echo "Each argument is a number followed by a unit."
echo "The units are: s (seconds), m (minutes), h (hours)"
echo "Example: bedtime-story 20m 10s"
echo "The screen will be turned off, move the mouse or press a key to turn it back on."
fi
# grab current spot and volume, then gently fade and pause
c=$(exaile --current-position)
v=$(pactl list | grep Volume | cut -d ":" -f 3 | cut -d "%" -f 1 |\
sed -n '1p' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
for((i=$v;i>=0;i--)) do
sleep 1s
pactl set-sink-volume 0 ${i}%
done
exaile --play-pause
# return volume to former setting
pactl set-sink-volume 0 ${v}%
echo "The current track was faded out beginning at $c."
Now I can go to sleep in style, whilst listening to the Internet's longest history podcasts. (in parts).