#!/bin/sh run_parts() { local level="${1}" local action="${2}" local i= if [ "x${level}" = 'x' ]; then level="${HOME}/.displayinit.d/" else level="${HOME}/.displayrc.d/${level}" fi for i in "${level}"*; do if [ -x "${i}" ]; then if ! "${i}" "${action}"; then return 1 fi fi done return 0 } main() { local action= if [ ${#} -ne 1 ]; then usage >&2 return 1 fi action="${1}" # Enable services on first run. if ! [ -d "${HOME}/.displayrc.d" ]; then mkdir "${HOME}/.displayrc.d" if ! run_parts 'enable'; then return 1 fi fi # Start the session. if ! run_parts "${action}"; then return 1 fi # Main loop. rm -f ~/.displayrc.fifo mkfifo -m 0600 ~/.displayrc.fifo while read action; do case "${action}" in 'reload') run_parts "${action}" ;; 'stop') run_parts "${action}" break ;; esac done <~/.displayrc.fifo rm -f ~/.displayrc.fifo } main "${@}"