marios fa776f0d0b Callsigns (#37)
* 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>
2022-04-18 15:57:51 +03:00
2022-04-11 12:45:00 +03:00
2022-04-18 15:57:51 +03:00
2022-04-01 16:50:41 +02:00
2022-04-18 15:57:51 +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.

S
Description
A plugin loader for the Steam Deck.
Readme GPL-2.0 19 MiB
Languages
TypeScript 56.2%
Python 39.6%
Shell 2%
JavaScript 1.6%
Nix 0.6%