alien-everywhere/automation/scripts/aliendalvik-user-dependencies

58 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
set -e
USER_SERVICES="alienaudio.service alienkeyboard.service apkd-bridge.service apkd-bridge-user.service"
active_wayland_user=
for session in $(loginctl list-sessions --no-legend | awk '{ print $1 }'); do
if [ "$(loginctl show-session --value -p Type ${session})" != "wayland" ]; then
continue
fi
if [ "$(loginctl show-session --value -p Class ${session})" != "user" ]; then
continue
fi
if [ "$(loginctl show-session --value -p Remote ${session})" != "no" ]; then
continue
fi
if [ "$(loginctl show-session --value -p State ${session})" != "active" ]; then
continue
fi
active_wayland_user="$(loginctl show-session --value -p Name ${session})"
break
done
if [ "${active_wayland_user}" == "" ]; then
echo "No active wayland session found"
exit 1
fi
if [ "$1" == "start" ]; then
# User services behave buggy if they're kept running while container is down
# or started without hwservicemanager running in the container.
# So start the services right after hwservicemanager is started in the container.
#
# systemd should ensure that we're always started and stopped in sync with
# aliendalvik.service (because of BindsTo= dependency)
while [ "$(lxc-attach --name=aliendalvik --lxcpath=/tmp/aliendalvik -- /system/bin/getprop hwservicemanager.ready)" != "true" ]; do
echo "User services startup waiting for hwservicemanager in container"
sleep 1
done
for SERVICE in $USER_SERVICES; do
echo "Starting $SERVICE"
systemctl --user -M ${active_wayland_user}@ start ${SERVICE}
done
elif [ "$1" == "stop" ]; then
for SERVICE in $USER_SERVICES; do
echo "Stopping $SERVICE"
systemctl --user -M ${active_wayland_user}@ stop ${SERVICE}
done
fi