As far as I understood, currently most if not all plasma services are automatically launched on login, and they are defined in /etc/xdg/autostart/. This has several problems, such as annoying ones like DiscoverNotifier, or security relevant ones like kdeconnect-daemon not being trivial to disable. I am currently experimenting with neutering these autostart entries and replacing them with systemd services. But I am not sure if I know what I am doing, so I am happy for help. Example for KDEConn...
I think systemd targets work opposite to your expectation. The Wants in [unit] define the things that that unit needs to already be available. For instance, you might add Wants=network.target to the unit for nginx so that it won’t try to start until the network is available. When I wrote a unit to start my company’s application, I also had Wants=postgresql.service to ensure that the database came up before the application. Remember that sysyemd tries to run as many things in parallel as it can. This is one thing that makes it much faster than classic sysvinit which started things sequentially. But it means race conditions can occur. You use Wants to break those races where necessary. The targets that you’d specify in WantedBy in [install] more closely resemble SysV runlevels. You might want to read how runlevels used to work in SysV, in order to understand systemd targets.
Requires: If a unit “requires” another unit, it means that the former cannot function properly without the latter being active. If the required unit fails, the dependent unit will also fail.
Wants: As mentioned earlier, “wants” implies a weaker dependency. If a unit wants another unit, it will start if the wanted unit is activated, but it won’t fail if the wanted unit fails.
Sounds like most of the services actually have Requires and not Wants.
So Wants is more used to indicate in what “wave” a service should run. Quite nice!
I fixed them and edited the post. There now is a Github repo for the script, and guess what? Most services still run, so there are at least 2 mechanisms to start them. What a mess
I really don’t understand dbus.
I think systemd targets work opposite to your expectation. The Wants in [unit] define the things that that unit needs to already be available. For instance, you might add Wants=network.target to the unit for nginx so that it won’t try to start until the network is available. When I wrote a unit to start my company’s application, I also had Wants=postgresql.service to ensure that the database came up before the application. Remember that sysyemd tries to run as many things in parallel as it can. This is one thing that makes it much faster than classic sysvinit which started things sequentially. But it means race conditions can occur. You use Wants to break those races where necessary. The targets that you’d specify in WantedBy in [install] more closely resemble SysV runlevels. You might want to read how runlevels used to work in SysV, in order to understand systemd targets.
Something ChatGPT gave me
Sounds like most of the services actually have Requires and not Wants.
So Wants is more used to indicate in what “wave” a service should run. Quite nice!
I fixed them and edited the post. There now is a Github repo for the script, and guess what? Most services still run, so there are at least 2 mechanisms to start them. What a mess