Session-lock recovery, in this merge, will not take a lock another program may hold
Pull request 15020 merges a recovery that will not take a session lock while another Quickshell or hyprlock for that user is running. David Heinemeier Hansson wrote that a second shell had taken a live lock. The merge is not in version 4.0.4.
Hansson wrote that a throwaway second shell started while the real shell held the lock. He wrote that its check saw Hyprland locked, but not by itself, and took the lock, and that when the copy exited the session was left on Hyprland's failsafe screen with no lock screen. Hyprland draws the windows. Hansson wrote that the real shell still reported the session as secure, so a restart refused to recover it, and that this looked like Hyprland had crashed.
The merged helper treats the owner as undetermined while any other Quickshell or hyprlock of this user is running. The shell retries for about 10 seconds and does not take a lock someone else may hold. A restart still recovers a real orphan, because it waits for the old shell to exit. Hansson wrote that another Quickshell left running would leave an orphan on the failsafe, and that this was less harmful than taking a live lock.