diff options
author | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2024-07-12 00:51:12 +0200 |
---|---|---|
committer | Anna (navi) Figueiredo Gomes <navi@vlhl.dev> | 2024-07-19 20:40:28 +0200 |
commit | fd961d2ea0eea2cc60f4af1aca6b6e7711d43995 (patch) | |
tree | fc53ad7bf4d46a3b72e151b79e8433ff4d565514 /init.d/user.in | |
parent | c34fcd63f05044f9034b26c52f19c91e04668da7 (diff) |
openrc-user: init script for users
adds a new multiplexed script for starting user sessions. it also sets
up XDG_RUNTIME_DIR.
Signed-off-by: Anna (navi) Figueiredo Gomes <navi@vlhl.dev>
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 +} |