diff options
Diffstat (limited to 'init.d/user.in')
-rw-r--r-- | init.d/user.in | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/init.d/user.in b/init.d/user.in new file mode 100644 index 00000000..5e2420c7 --- /dev/null +++ b/init.d/user.in @@ -0,0 +1,48 @@ +#!@SBINDIR@/openrc-run +# Copyright (c) 2017 The OpenRC Authors. +# See the Authors file at the top-level directory of this distribution and +# https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS +# +# This file is part of OpenRC. It is subject to the license terms in +# the LICENSE file found in the top-level directory of this +# distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE +# This file may not be copied, modified, propagated, or distributed +# except according to the terms contained in the LICENSE file. + +description="starts an openrc session for an user" +user="${RC_SVCNAME#*.}" + +extra_started_commands="runtime_directory" + +runtime_directory() { + service_get_value xdg_runtime_dir +} + +start_pre() { + if [ "$user" = "$RC_SVCNAME" ]; then + eerror "${RC_SVCNAME} cannot be started directly. You must create" + eerror "symbolic links to it for the users you want to start" + return 1 + fi + + if [ -z "$XDG_RUNTIME_DIR" ]; then + export XDG_RUNTIME_DIR="/run/user/$(id -u $user)" + checkpath -d -o "$user:$user" "$XDG_RUNTIME_DIR" || return 1 + fi + + service_set_value xdg_runtime_dir "$XDG_RUNTIME_DIR" +} + +start() { + ebegin "Starting user session for $user" + user_init $user start + eend $? + return 0 +} + +stop() { + ebegin "Stopping user session for $user" + user_init $user stop + eend $? + return 0 +} |