Use display manager for login.
This commit is contained in:
parent
fccf2a6b65
commit
7b8df80828
2 changed files with 17 additions and 31 deletions
3
dev-example/vmop-agent/gdm/PostLogin/Default
Executable file
3
dev-example/vmop-agent/gdm/PostLogin/Default
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
sed -i '/AutomaticLogin/d' /etc/gdm/custom.conf
|
||||||
|
|
@ -72,8 +72,8 @@ doLogin() {
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if this user is already logged in on tty1
|
# Check if this user is already logged in on tty2
|
||||||
curUser=$(loginctl -j | jq -r '.[] | select(.tty=="tty1") | .user')
|
curUser=$(loginctl -j | jq -r '.[] | select(.tty=="tty2") | .user')
|
||||||
if [ "$curUser" = "$user" ]; then
|
if [ "$curUser" = "$user" ]; then
|
||||||
echo >&${con} "201 User already logged in"
|
echo >&${con} "201 User already logged in"
|
||||||
return
|
return
|
||||||
|
|
@ -96,17 +96,14 @@ doLogin() {
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Start the desktop for the user
|
# Configure user as auto login user
|
||||||
systemd-run 2>$temperr \
|
sed -i '/AutomaticLogin/d' /etc/gdm/custom.conf
|
||||||
--unit vmop-user-desktop --uid=$uid --gid=$uid \
|
sed -i '/\[daemon\]/a AutomaticLoginEnable=true\nAutomaticLogin='$user \
|
||||||
--working-directory="/home/$user" -p TTYPath=/dev/tty1 \
|
/etc/gdm/custom.conf
|
||||||
-p PAMName=login -p StandardInput=tty -p StandardOutput=journal \
|
|
||||||
-p Conflicts="gdm.service getty@tty1.service" \
|
# Activate user
|
||||||
-E XDG_RUNTIME_DIR="/run/user/$uid" \
|
systemctl restart gdm
|
||||||
-E XDG_CURRENT_DESKTOP=GNOME \
|
|
||||||
-p ExecStartPre="/usr/bin/chvt 1" \
|
|
||||||
dbus-run-session -- gnome-shell --display-server --wayland
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo >&${con} "201 User logged in successfully"
|
echo >&${con} "201 User logged in successfully"
|
||||||
else
|
else
|
||||||
|
|
@ -117,14 +114,8 @@ doLogin() {
|
||||||
# Attempt to log out a user currently using tty1. This is an intermediate
|
# Attempt to log out a user currently using tty1. This is an intermediate
|
||||||
# operation that can be invoked from other operations
|
# operation that can be invoked from other operations
|
||||||
attemptLogout() {
|
attemptLogout() {
|
||||||
systemctl status vmop-user-desktop > /dev/null 2>&1
|
sed -i '/AutomaticLogin/d' /etc/gdm/custom.conf
|
||||||
if [ $? = 0 ]; then
|
systemctl stop gdm
|
||||||
systemctl stop vmop-user-desktop
|
|
||||||
fi
|
|
||||||
loginctl -j | jq -r '.[] | select(.tty=="tty1") | .session' \
|
|
||||||
| while read sid; do
|
|
||||||
loginctl kill-session $sid
|
|
||||||
done
|
|
||||||
echo >&${con} "102 Desktop stopped"
|
echo >&${con} "102 Desktop stopped"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -133,15 +124,7 @@ attemptLogout() {
|
||||||
# Also try to restart gdm, if it is not running.
|
# Also try to restart gdm, if it is not running.
|
||||||
doLogout() {
|
doLogout() {
|
||||||
attemptLogout
|
attemptLogout
|
||||||
systemctl status gdm >/dev/null 2>&1
|
systemctl restart gdm
|
||||||
if [ $? != 0 ]; then
|
|
||||||
systemctl restart gdm 2>$temperr
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo >&${con} "102 gdm restarted"
|
|
||||||
else
|
|
||||||
echo >&${con} "102 Restarting gdm failed: $(tr '\n' ' ' <${temperr})"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo >&${con} "202 User logged out"
|
echo >&${con} "202 User logged out"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -153,7 +136,7 @@ while read line <&${con}; do
|
||||||
done
|
done
|
||||||
|
|
||||||
onExit() {
|
onExit() {
|
||||||
attemptLogout
|
doLogout
|
||||||
if [ -n "$temperr" ]; then
|
if [ -n "$temperr" ]; then
|
||||||
rm -f $temperr
|
rm -f $temperr
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue