prettify argument extraction
use an MVar () since no information is stored there
avoid re-running command many times

a separate forkIO'd thread is now running the command. this is done by
monitoring an MVar () in an infinite loop. this thread will be woken
up whenever this “trigger” MVar is filled.

on changes, `tryPutMVar` is used to fill the trigger MVar and indicate
that the command should be re-run. this has the effect that even if
many re-runs are scheduled while a (possibly long-running) command is
running, only one re-run will happen after it completes. (the
`tryPutMVar` call will simply return False (ignored) and return right
away.)