Getting the lock screen to work reliably when resuming from suspension in a single-seat, multi-user Lubuntu 18.04 installation
July 8, 2018 Leave a comment
In an earlier post I described my attempt at getting the lock screen to work reliably in the single-seat, multi-user Lubuntu 17.10 installation on my family’s desktop PC. Although the modifications described in that post seemed to improve matters somewhat, users were still not always able to login from the LightDM greeter screen after resuming from Suspend to RAM in the following situation:
- User_A logs in to User_A’s account but does not log out after using the account.
- User_B clicks on ‘Logout’ > ‘Switch User’ to log in to User_B’s account but does not log out.
- User_A clicks on ‘Logout’ > ‘Switch User’ to get back to User_A’s account.
- User_A allows his/her session to timeout and suspend to RAM.
- User_B presses a key on the keyboard to resume from suspension, and the LightDM lock screen is displayed.
- User_B enters his/her password and then clicks on ‘Unlock’, but the LightDM lock screen remains on display and nobody can log in any more, although the keys on the lock screen are still clickable.
When this occurs, the only way users can access their Desktop is to click on the Power icon in the top right corner of the lock screen and select ‘Restart…’.
The Software Updater in Lubuntu 17.10 recently offered me the choice of upgrading to Lubuntu 18.04, which I accepted. The upgrade was performed and the only hitch that resulted was an incorrect initramfs, which was simple enough to fix (see my post Lubuntu 18.04 ‘Gave up waiting for suspend/resume device’). However, the above-mentioned problem of unlocking after resuming from suspension still occurred in Lubuntu 18.04. Below are the changes I made since the modifications described in my post Getting the lock screen to work properly when resuming from Suspend-to-RAM with multiple sessions in Lubuntu 17.10 (the other changes in that post remain), which seem to have cured the problem.
Change to Item 2 in my earlier post
I reverted the Exec
line in /etc/xdg/autostart/light-locker.desktop
back to how it was originally following installation of Lubuntu:
user $ grep Exec /etc/xdg/autostart/light-locker.desktop
Exec=light-locker
Change to Item 3 in my earlier post
I deleted the file /lib/systemd/system-sleep/hang-fix
that I had previously created:
user $ sudo rm /lib/systemd/system-sleep/hang-fix
Change to Item 7 in my earlier post
The Xfce Power Manager ‘Security’ tab for each user now has ‘Lock screen when system is going for sleep’ ticked:
Light Locker
- Automatically lock the session: Never
- Delay locking after screensaver for: ‘1 Seconds’ is greyed out
- ‘Lock screen when system is going for sleep’ is ticked
The full Xfce Power Manager settings for each user (see the file ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml
in each user’s home directory) are now configured as follows:
<?xml version="1.0" encoding="UTF-8"?> <channel name="xfce4-power-manager" version="1.0"> <property name="xfce4-power-manager" type="empty"> <property name="power-button-action" type="empty"/> <property name="show-tray-icon" type="empty"/> <property name="brightness-switch-restore-on-exit" type="int" value="1"/> <property name="brightness-switch" type="int" value="0"/> <property name="presentation-mode" type="bool" value="false"/> <property name="inactivity-on-ac" type="uint" value="30"/> <property name="blank-on-ac" type="int" value="10"/> <property name="dpms-on-ac-sleep" type="uint" value="0"/> <property name="dpms-on-ac-off" type="uint" value="0"/> <property name="brightness-on-ac" type="uint" value="9"/> <property name="lock-screen-suspend-hibernate" type="bool" value="true"/> <property name="logind-handle-lid-switch" type="bool" value="false"/> <property name="dpms-enabled" type="bool" value="false"/> <property name="general-notification" type="bool" value="true"/> </property> </channel>
Additional modifications
In another of my posts (Prevent Lubuntu 17.10 from leaving an external HDD mounted incorrectly for other users) I explained the modifications I made in Lubuntu 17.10 for a single-seat, multi-user installation to work properly with a permanently connected external USB HDD. However, I recently noticed the following problems resulting from those modifications:
A. The following error message in the LightDM log file /var/log/lightdm/lightdm.log
:
[SeatDefaults] is now called [Seat:*], please update this configuration
So I changed the contents of the file /etc/lightdm/lightdm.conf.d/10_lubuntu.conf
from:
[SeatDefaults] session-cleanup-script=/etc/lightdm/lightdm.conf.d/unmount_FREECOM_HDD.sh
to:
[Seat:*] session-cleanup-script=/etc/lightdm/lightdm.conf.d/unmount_FREECOM_HDD.sh
B. The following error message in the LightDM log file/var/log/lightdm/lightdm.log
when the USB external HDD happened to not be mounted at the time:
DEBUG: Launching process 8569: /etc/lightdm/lightdm.conf.d/unmount_FREECOM_HDD.sh DEBUG: Process 8569 terminated with signal 11
So I changed the contents of my Bash script /etc/lightdm/lightdm.conf.d/unmount_FREECOM_HDD.sh
from:
#!/bin/bash udisksctl unmount --block-device /dev/disk/by-uuid/C6576A087368B015
to:
#!/bin/bash STATUS=`mount | grep $(readlink -f /dev/disk/by-uuid/C6576A087368B015 )` if [[ ! -z $STATUS ]]; then udisksctl unmount --block-device /dev/disk/by-uuid/C6576A087368B015 fi exit 0
Conclusions
It is early days, but so far the login problem for other users after resuming from suspension has not reoccurred since I made the latest changes. I am not sure if the modifications described in my post ‘Prevent Lubuntu 17.10 from leaving an external HDD mounted incorrectly for other users‘ contributed to (or caused) the login problem, or whether one or more of systemd-logind, LightDM, LightDM GTK+ Greeter, Light Locker and Xfce Power Manager are to blame (since they have to work holistically to provide the required functionality). It is frustrating not knowing the root cause of the problem, but at least my family no longer has to worry about being able to log in if a family member has not logged out and left the PC to suspend.