29 lines
693 B
Bash
29 lines
693 B
Bash
#!/usr/bin/bash
|
|
|
|
is_process_running_p()
|
|
{
|
|
pidid=$(pidof "$1" | sed -e 's|[ \t].*||')
|
|
if [ "x${pidid}" == "x" ] ; then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
check_manager_and_exec() {
|
|
is_process_running_p "$1" || return
|
|
exec $2
|
|
}
|
|
|
|
check_manager_and_exec "lxdm-binary" "lxdm -c USER_SWITCH" # LXDE
|
|
check_manager_and_exec "lightdm" "dm-tool switch-to-greeter" # XFCE and etc
|
|
check_manager_and_exec "gdm" "gdmflexiserver -ls" # GNOME
|
|
# KDE-like
|
|
check_manager_and_exec "sddm" \
|
|
"qdbus --system org.freedesktop.DisplayManager /org/freedesktop/DisplayManager/Seat0 org.freedesktop.DisplayManager.Seat.SwitchToGreeter"
|
|
|
|
|
|
# No registered login manager found
|
|
exit 1
|
|
|