|  | #!/bin/bash
# Read FIFO argument from CLI
FIFO=${1}
shift
if [ ! -e "${FIFO}" ]; then
  echo "Fifo file ${FIFO} does not exist, cannot run"
  exit 1
fi
# Start kdialog with all other arguments and get dbus reference
dbusRef=$(kdialog "$@" 100)
if [ $? -ne 0 ] || [ -z "${dbusRef}" ]; then
  echo "Failed to start kdialog"
  exit 1
fi
# Setup cancellation point for this script
quitfn() {
    qdbus ${dbusRef} close 2>/dev/null
    exit 0
}
trap quitfn SIGINT
trap quitfn SIGTERM
# Read Fifo for new values or a quit message
while read -t 5 line < "${FIFO}"; do
  if [ $? != 0 ]; then
    echo "Timed out, closing"
    break
  fi
  if echo "${line}" | grep -q "idle"; then
    continue
  fi
  if echo "${line}" | grep -q "quit"; then
    break
  fi
  if ! qdbus ${dbusRef} Set "" value "${line}"; then
    break
  fi
done
# Cleanup
rm -f "${FIFO}"
quitfn
 |