Improving start up time ideas:
Most should be profiled first before committing heavily to huge ports. There's a chance I'm talking rubbish
- start kwin and plasmashell (and the rest of autophase0) in parallel with ksmserver
(d_ed started this already, see T9779, the biggest challenge is properly syncing the SESSION_MANAGER properly)
- redo the way plasma signals to ksplash. We don't need to wait for panels, we do want to wait for the wallpaper. I'd like to see some sort of ref counted blocker object, and we signal when that's gone completely.
- get rid of panel waiting timer on first run? - ideally requires knowledge that kscreen has finished
- Make solid not suck with a billion blocking calls
(Kai has started this D19677)
- Removing blocking calls in plasma-nm
- kpackage as a qt resource (that Marco started)
- Proper use of KPluginFactory - one plugin with a factory for loading N plugins means we only link once. I think this will give noticable speed boosts.
Similarly we only need one binary lib for loading multiple QML plugins.
- System service to precache all used files? Gather a big list with strace and then open + fadvise them in a service?
Tested, different make a diffence.
- Better disable X Session Manager on autostart phase 0/1 services. It creates a blocking call to ksessionmanager for info that we only discard. Can just unset env during QApp constructor, but ideally I'd like: https://codereview.qt-project.org/c/qt/qtbase/+/254679
- KConfig loading in a thread? Could be done whilst we do other slow startup tasks
- Porting more things to QtQuickcontrols2 to reduce the sheer quantity of QML code involved
- Delay (or at least optimize and/or profile why they're heavy) starting up services that aren't critical for the session: baloo, krunner.
- Plasma::SvgPrivate::elementRect is surprisingly slow and called a lot