liqctld socket refactor and other improvements
New Feature
What does this MR do?
This MR refactors the liqctld <-> coolercontrold communication to use a unix socket. This pretty much eliminates any security issues with unwanted parties accessing the liqctld daemon and is a good fit for this use case anyway. Other improvements include:
- some decoupling of the two systemd services: liqctld will now shutdown if no liquidctl devices are detected, saving on resources. The service will still attempt to start with coolercontrold though. More to do in the future.
- debug log output has been improved for easier debugging (less chatter & screen-filling)
- deep debugging logs are reserved for trace level logging
- a liqctld client completely under our control.
- fix liqctld shutdown errors when running as a systemd service
- The unix socket also has much less overhead than using loopback, but there aren't many use cases where we are heavily benefiting from that.
Related issues
Relates to a discussion #220 (comment 1676300241)
Checklist
-
Application works as expected when running from source - quite a bit of testing went into this -
There are dependency changes -
Liquidctl device mock tests are successful (if applicable) -
Any needed documentation changes have been made -
This MR is ready to be merged