* Plugin callsigns, filechangehandler thread bug fix, plugin file perms
- Plugins are now assigned a callsign (a random string), which they use for all internal identification, like resource fetching and method calls. This is to ensure that plugins only access their own resources and methods.
- Made FileChangeHandler send off events to a queue, that is then consumed by the Loader, instead of calling import_plugin on its own, since that caused weird issues with the event loop and the thread watchdog is using.
- Plugins are now owned by root and have read-only permissions. This is handled automatically.
* Improved general look and feel of plugin tab
* Make all plugin entries have the same padding between them
* Make "No plugins installed" text look the same as "No new notifications"
Co-authored-by: WerWolv <werwolv98@gmail.com>
* root plugins
plugins can now specify if they want their methods to be ran as root. this is done via the multiprocess module. method calls are delegated to a separate process that is then down-privileged by default to user 1000, so the loader can safely be ran as root
except it isn't really safe because the plugin is imported as root anyway
* working implementation
- follows the new plugin format with the plugin.json file
- plugins are loaded in their own isolated process along with their own event loop and unix socket server for calling methods
- private methods are now prepended with _ instead of __
* converted format to f-strings