summaryrefslogtreecommitdiffstats
path: root/.displayinit
diff options
context:
space:
mode:
Diffstat (limited to '.displayinit')
-rwxr-xr-x.displayinit65
1 files changed, 65 insertions, 0 deletions
diff --git a/.displayinit b/.displayinit
new file mode 100755
index 0000000..3e96b6c
--- /dev/null
+++ b/.displayinit
@@ -0,0 +1,65 @@
+#!/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 "${@}"