modulemanager: port to pipewire
with pipewire being the most used server implementation these days it makes no sense to hold on to the old code that doesn't work with pipewire.
while technically gsettings is supported these days, it doesn't appear to be enabled in a lot of distros. so, instead we are just moving to the pipewire native solution of writing drop in configs to persistently enable modules.
to facilitate this some rejiggering has happened:
- ConfigModule is no longer a gesettingsitem and is called GenericModule now, implementing generic module enabling
- SwitchOnConnectModule is a special leaf class that implements SOC logic (i.e. device-manager disabling in addition to SOC enabling)
- module enabling/disabling is done by writing/removing a drop-in config; (persistent) enabledness is indicated by the presence of the file
- to load/unload modules at runtime PAQt 1.7 is now required
unfortunately while working on this I stumbled upon a tiny buggy wuggy in how configs are handled prior to (currently unreleased) pipewire 1.3. a suitable runtime version check has been put in place via a PipeWireDaemon singleton