# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description   "Start powerd after x-started"
author        "chromium-os-dev@chromium.org"

start on x-started
stop on stopping ui or starting halt or starting reboot

env HOME=/home/chronos
env LOG_DIR=/var/log/power_manager
env RUN_DIR=/var/run/power_manager
env PREFS_DIR=/var/lib/power_manager
env DEFAULT_PREFS_DIR=/usr/share/power_manager
env XAUTHORITY=/home/chronos/.Xauthority
env DISPLAY=:0.0
env USER_ID=1000

respawn
respawn limit 20 60  # if the job respawns 20 times in 60 seconds, stop trying.

script

mkdir -p ${LOG_DIR} ${PREFS_DIR}
chown -R ${USER_ID} ${PREFS_DIR}
chown ${USER_ID} ${LOG_DIR}
chown ${USER_ID} /sys/power/state
# If backlight files don't exist, the wildcard will be treated as a literal, and
# chown will fail.  Checking for the existence first will prevent chown failure.
for BACKLIGHT in /sys/class/backlight/*/*; do
  if [ -e $BACKLIGHT ]; then
    chown ${USER_ID} $BACKLIGHT
  fi
done
cd ${HOME}
exec /sbin/minijail --uid=${USER_ID} -- /bin/dash -c '                    \
  /usr/bin/powerd                                                         \
    --prefs_dir=${PREFS_DIR}                                              \
    --default_prefs_dir=${DEFAULT_PREFS_DIR}                              \
    --log_dir=${LOG_DIR}                                                  \
    --run_dir=${RUN_DIR}                                                  \
  > ${LOG_DIR}/powerd.out 2>&1; sleep 2'

end script
