marios e3d7b50bd9 Root plugins (#35)
* 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
2022-04-13 02:14:44 +03:00
2022-04-13 02:14:44 +03:00
2022-04-13 02:14:44 +03:00

Plugin Loader Chat

steamuserimages-a akamaihd

Installation

  1. Go into the Steam Deck Settings
  2. Under System -> System Settings toggle Enable Developer Mode
  3. Scroll the sidebar all the way down and click on Developer
  4. Under Miscellaneous, enable CEF Remote Debugging
  5. Click on the STEAM button and select Power -> Switch to Desktop
  6. Open a terminal and paste the following command into it:
    • For users:
      • curl -L https://github.com/SteamDeckHomebrew/PluginLoader/raw/main/dist/install_release.sh | sh
    • For developers:
      • curl -L https://github.com/SteamDeckHomebrew/PluginLoader/raw/main/dist/install_nightly.sh | sh
  7. Done! Reboot back into Gaming mode and enjoy your plugins!

Install Plugins

  • Simply copy the plugin's folder into ~/homebrew/plugins

Developing plugins

  • There is no complete plugin development documentation yet. However a good starting point is the Plugin Template repository

Features

  • Clean injecting and loading of one or more plugins
  • Persistent. It doesn't need to be reinstalled after every system update
  • Allows 2-way communication between the plugins and the loader.
  • Allows plugins to define python functions and run them from javascript.
  • Allows plugins to make fetch calls, bypassing cors completely.

Caveats

  • You can only interact with the Plugin Menu via touchscreen.

Credit

The original idea for the concept is based on the work of marios8543's steamdeck-ui-inject project.

Description
Languages
TypeScript 56.2%
Python 39.6%
Shell 2%
JavaScript 1.6%
Nix 0.6%