Hey all,
After working on this bugfix and becoming a little more familiar with the plasma ecosystem, I would like to propose and work on developing a small set of visual enhancements to the log-in process. The end goal of these enhancements would be to seamlessly enable the visual transition from plasma-login-manager to the user’s desktop, without the blinking or blacking out of the screen caused by the VT switch. Think KDE3’s behavior, GDM, or MacOS.
I have a general idea how this might be accomplished, but I’d like to get input on whether or not it’s something I should do. Also, get input on additional considerations of factors I may not be aware of, as the gaps in my Plasma knowledge are somewhat massive ![]()
Plan
- Implement
useUserBackgroundsetting and behavior inplasma-login-manager - TBD
Currently:
plasma-login-managerhas a configured background that is displayed.- The background is blurred when a user is selected, the password input is focused and the user begins typing.
After authentication, the screen goes black and blinks as the VT is switched and plasma-login-managerquits- There’s a brief blackout as the session VT is activated.
KSplash shows a black background and the configured splash screen.
KSplash fades out and shows the user’s desktop.
General Proposal:
- Add a
useUserBackgroundsetting to theplasma-login-managerkcm, to use the selected user’s background for the login manager background. - Changing users on a multi-user machine should transition the background. I propose using a simple crossfade for now.
- Instead of closing
plasma-login-managerimmediately, and switching VTs, wait until the user’s session is ready and the first frame has been rendered. This is the GDM approach (source)- This would entail updating
slotSessionStartedfrom the fixed 5 second timer to some explicit signal that the session is ready, with a fallback timer. Maybe watching fororg.kde.KSplash.setStage(“desktop”)?
- This would entail updating
- Change KSplash’s black background to be transparent under this condition (show the background)
- For text-based log-in, use the default configured
plasma-login-managerbackground, then transition to the user’s background after authentication.
Possible alternatives to the VT “flash”:
- GDM doesn’t teardown until the first session frame is rendered- requires the same display mode to minimize flashing. Likely most practical path.
- First session frame is rendered to an offscreen buffer, once it’s rendered then switch VT and commit.
- Preserve the DRM framebuffer and have KWin’s first atomic commit be that same framebuffer.
Other Considerations:
- A user can install a custom wallpaper provider. A number of these are not functional yet in current plasma-login-manager (like the animated wallpapers ones, or the Apply-style time-based transitioning ones). This is likely out of scope.
- Users can install “live” wallpapers that require an internet connection, and potentially require authentication. My gut feeling is that this functionality should be limited to the built-in Image wallpaper type for now.
- A user can install and use custom splash screens. Should I create a new one called “Seamless”, or update “Breeze”?