Coder Social home page Coder Social logo

steamdeckhomebrew / decky-loader Goto Github PK

View Code? Open in Web Editor NEW
4.0K 41.0 136.0 7.81 MB

A plugin loader for the Steam Deck.

Home Page: https://decky.xyz

License: GNU General Public License v2.0

JavaScript 2.93% Python 40.65% Shell 0.50% TypeScript 55.92%
steam steamdeck plugins steamos python

decky-loader's Introduction

Deckbrew logo
Decky Loader
Download decky

Translation status

Decky screenshot

๐Ÿ“– About

Decky Loader is a homebrew plugin launcher for the Steam Deck. It can be used to stylize your menus, change system sounds, adjust your screen saturation, change additional system settings, and more.

For more information about Decky Loader as well as documentation and development tools, please visit our wiki.

๐ŸŽจ Features

๐Ÿงน Clean injecting and loading of multiple plugins.
๐Ÿ”’ Stays installed between system updates and reboots.
๐Ÿ”— Allows two-way communication between plugins and the loader.
๐Ÿ Supports Python functions run from TypeScript React.
๐ŸŒ Allows plugins to make fetch calls that bypass CORS completely.

๐Ÿค” Common Issues

  • Syncthing may use port 8080 on Steam Deck, which Decky Loader needs to function. If you are using Syncthing as a service, please change its port to something else.
    • 8384 is the recommended port for Syncthing.
  • If you are using any software that uses port 1337 or 8080, please change its port to something else or uninstall it.
  • Sometimes Decky will disappear on SteamOS updates. This can easily be fixed by just re-running the installer and installing the stable branch again. If this doesn't work, try installing the prerelease instead. If that doesn't work, then check the existing issues and if there isn't one then you can file a new issue.

๐Ÿ’พ Installation

  • This installation can be done without an admin/sudo password set.
  1. Prepare a mouse and keyboard if possible.
    • Keyboards and mice can be connected to the Steam Deck via USB-C or Bluetooth.
    • Many Bluetooth keyboard and mouse apps are available for iOS and Android. (KDE connect is preinstalled on the steam deck)
    • The Steam Link app is available on Windows, macOS, and Linux. It works well as a remote desktop substitute.
    • If you have no other options, use the right trackpad as a mouse and press + to open the on-screen keyboard as needed.
  2. Press the button and open the Power menu.
  3. Select "Switch to Desktop".
  4. Navigate to this Github page on a browser of your choice.
  5. Download the installer file. (If using firefox, it will be named decky_installer.desktop.download. Rename it to decky_installer.desktop before running it)
  6. Drag the file onto your desktop and double click it to run it.
  7. Either type your admin password or allow Decky to temporarily set your admin password to Decky! (this password will be removed after the installer finishes)
  8. Choose the version of Decky Loader you want to install.
    • Latest Release
      Intended for most users. This is the latest stable version of Decky Loader.
    • Latest Pre-Release
      Intended for plugin developers. Pre-releases are unlikely to be fully stable but contain the latest changes. For more information on plugin development, please consult the wiki page.
  9. Open the Return to Gaming Mode shortcut on your desktop.
  • There is also a fast install for those who can use Konsole. Run curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/install_release.sh | sh and type your password when prompted.

๐Ÿ‘‹ Uninstallation

We are sorry to see you go! If you are considering uninstalling because you are having issues, please consider opening an issue or joining our Discord so we can help you and other users.

  1. Press the button and open the Power menu.
  2. Select "Switch to Desktop".
  3. Run the installer file again, and select uninstall decky loader.
  • There is also a fast uninstall for those who can use Konsole. Run curl -L https://github.com/SteamDeckHomebrew/decky-installer/releases/latest/download/uninstall.sh | sh and type your password when prompted.

๐Ÿš€ Getting Started

Now that you have Decky Loader installed, you can start using plugins. Each plugin is maintained by a different developer and has its own uses, but most follow a general structure outlined below.

๐Ÿ“ฆ Plugins

  1. Press the button and navigate to the icon. This is the Decky menu used for interacting with plugins and the loader itself.
  2. Select the icon to open the Plugins Browser. This is where you can find and install plugins.
    • You can also install from URL in the Settings menu. We do not recommend installing plugins from untrusted sources.
  3. To install a plugin, select the "Install" button on the plugin you want. You can also select a version from a dropdown menu, but this is not recommended.
  4. To update, uninstall, and reload plugins, navigate to the Decky menu and select the icon.
    • Keep in mind that uninstalling a plugin will only remove its plugin files, not any other files it may have created.

๐Ÿ› ๏ธ Plugin Development

There is no complete plugin development documentation yet. However a good starting point is the plugin template repository. Consider joining our Discord if you have any questions.

๐Ÿค Contributing

Please consult the wiki page regarding development for more information on installing development versions of Decky Loader. You can also install the Steam Deck UI on a Windows or Linux computer for testing by following this YouTube guide.

  1. Clone the repository using the latest commit to main before starting your PR.
  2. In your clone of the repository, run these commands.
    cd frontend
    pnpm i
    pnpm run build
  3. If you are modifying the UI, these commands will need to be run before deploying the changes to your Steam Deck.
  4. Use the VS Code tasks or deck.sh script to deploy your changes to your Steam Deck to test them.
  5. You will be testing your changes with the Python script version. You will need to build, deploy, and reload each time.

โš ๏ธ If you are recieving build errors due to an out of date library, you should run this command inside of your repository.

pnpm update decky-frontend-lib --latest

Source control and deploying plugins are left to each respective contributor for the cloned repos in order to keep dependencies up to date.

๐Ÿ“œ Credits

The original idea for the plugin loader concept is based on the work of marios8543's Steam Deck UI Inject project.

decky-loader's People

Contributors

aagaming00 avatar ademodza avatar aveeryy avatar beebls avatar botatooo avatar david082321 avatar denysdovhan avatar dependabot[bot] avatar elliotfontaine avatar emerald0874 avatar geeksville avatar jan200101 avatar joamjoamjoam avatar johnnycrazy avatar jurassicplayer avatar liamdawe avatar marios8543 avatar partywumpus avatar popsulfr avatar proendreeper avatar rodoma92 avatar scrumplex avatar seanzhang98 avatar spyrexde avatar suchmememanyskill avatar traindoctor avatar ttay24 avatar weblate avatar werwolv avatar werwolvtranslationbot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

decky-loader's Issues

How should external dependencies be handled for plugins?

Since the CI tool builds a python executable and that is what gets shipped, this file contains the dependencies required to run the Plugin Loader. However, it appears to be unable to read other external dependencies even if they are already installed to the Deck user using pip.

[loader][ERROR]: Could not load /home/deck/homebrew/plugins/music-plugin/main.py. No module named 'dbus'

This does not seem to be a systemd issue, as if systemd starts a bash script such as the following, the music plugin will load correctly.

#!/bin/bash
python3 /home/deck/PluginLoader/plugin_loader/main.py

Exit with status code 1

Once enabled, the systemd service exits at system startup with status=1/FAILURE and no further info.

If I manually start the service, it will say

Started SteamDeck Plugin Manager:
  Available Content:
    MainMenu
    Toast
    data:text/html,<body><%2fbody>
    QuickAccess
    data:text/html,<body>
    SP
{"id":1,"result":{"type":"undefined"}}}
plugin_manager.service: Deactivated successfully.
pid 6469 != 5676, skipping destruction (fork without exec?)

And when I open the QuickAccess menu, the system becomes completely unresponsive until I hold the power button to bring up the menu and then the QA menu goes away.

I don't have any plugins installed.

EDIT: After rebooting the device again and running sudo systemctl status plugin_manager I see the error:

ร— plugin_manager.service - SteamDeck Plugin Manager
     Loaded: loaded (/etc/systemd/system/plugin_manager.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Fri 2022-04-01 17:02:12 EDT; 3min 12s ago
    Process: 901 ExecStart=/home/deck/homebrew/services/plugin_manager/plugin_manager (code=exited, status=1/FAILURE)
   Main PID: 901 (code=exited, status=1/FAILURE)
        CPU: 4ms

Apr 01 17:02:12 steamdeck systemd[1]: Started SteamDeck Plugin Manager.
Apr 01 17:02:12 steamdeck plugin_manager[901]: Error: hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" }))
Apr 01 17:02:12 steamdeck systemd[1]: plugin_manager.service: Main process exited, code=exited, status=1/FAILURE
Apr 01 17:02:12 steamdeck systemd[1]: plugin_manager.service: Failed with result 'exit-code'.

I've also tried adding the template_plugin.js file to the plugin directory and once I enable the plugin manager I don't see it in the list and tapping "A" to enter the plugin manager list freezes the system.

Plugin just disappeared

Hi, was using the PowerTools plugin, it crashed the Performance Overlay and had to restart my Deck, now the plugin is gone, the files are on the homebrew folder but it's not showing up on the Plugins section. It just reads "No plugins installed"

Race condition in call_plugin_method

Sometimes, when calling two Python functions at the same time from Javascript, the result of one will be returned by the other.
This is likely caused by the id of the calls being the same, since both are generated at (nearly) the same instant.

Rough reproduction/example:

call_plugin_method("function1", {}).then(x => {
  document.getElementById("foo1").innerText = x.toString()
});
call_plugin_method("function2", {}).then(y => {
  document.getElementById("foo2").innerText = y.toString()
});```

Wrong permissions on the homebrew folder

Hi, by default the homebrew folder and subfolders in /home/ only has the ability to view content.

This needs to be adjusted so the user can actually interact with them, and put the plugins into the folder.

How to remove a plugin?

Might seem a bit stupid, but when I delete the plugin through sudo, I have a big "Server error 500" showing inside the plugin tab bar, any idea how to cleanly remove the plugins?

Wrong filename

Hi, your instructions say:

Open a Terminal and type systemctl --now --user enable plugin_manager

But the file is named plugin_loader

I think the instructions definitely need some love.

Place the executable under ~/homebrew/services/plugin_loader. Do not change the name of the file.

You don't say what executable?

There's also no step telling people to run the installer file, which needs sudo. To copy the service file over, it also needs sudo.

Frontend - Settings Page

  • Manual Install option
  • Uninstall plugins
  • Sort by modified, alphabetical (more?) (after release candidate)

Hot-reload, but files are also made read only, why?

I might be misunderstanding the point of "hot reload", because my interpretation comes from Hot Module Replacement in Javascript, but why are the folder and files getting write disabled when the plugin loader starts?

Currently I'm trying to use a remote VSCode instance on the steam deck while it's in gaming mode to create the plugin on my PC, and I keep running into permission errors while trying to make changes. I'm logged in as the deck user to make these changes.

image

What is the hot reload flag supposed to mean in the config.json of the plugin?

"flags": [
   "_hot_reload",
]

https://github.com/SteamDeckHomebrew/PluginLoader/blob/73559ae8c7b1eba15340bbdde00d8b2b4b31f5ff/plugin_loader/main.py#L30-L32

Uninstall instructions

This plugin loader is really cool, and will likely get reinstalled at some point in the near future, but I'm looking to uninstall it while I wait out some of the more frustrating lockups that I've had with non-steam emulated games.

How would I uninstall the Plugin Loader from my Steam Deck, preferably without a reset?

Thanks!

Several anecdotal reports of plugin loader maybe causing QAM hangs

on new (stable) firmware:

see:
https://old.reddit.com/r/SteamDeck/comments/uzgmiv/steamos_locks_up_after_pressing_quick_access/

I have experienced extended hangs on QAM appearing after you press the ... button, as well as hangs on the new firmware (system needed to be hard powered down).

Dont have a perfect way to replicate, but launching retroarch and playing paper mario (n64) in mupen64plus-next with glide64 after an hour or so playing (maybe shorter, causes those long delays on qam appearing or until it becomes responsive , without a fault).

So seems worse over time (maybe?) So memory leak?

Fix logging

Probably need to run basicConfig and set levels and formatting

The hot-reload mechanism and node_modules can cause "Too many open files"

Looks like developing a plugin with node_modules inside of the plugins folder can cause the loader to die a bit on the inside ๐Ÿ˜† I'm not sure what the best solution could be here.... Should we allow passing in either an watch or ignore lists to the hot-reloader? I'm open for suggestions and could help implement either option here :)

OSError: [Errno 24] Too many open files
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/home/deck/PluginLoader/plugin_loader/loader.py", line 194, in refresh_iframe
    await tab.open_websocket()
  File "/home/deck/PluginLoader/plugin_loader/injector.py", line 20, in open_websocket
  File "/usr/lib/python3.10/site-packages/aiohttp/client.py", line 776, in _ws_connect
  File "/usr/lib/python3.10/site-packages/aiohttp/client.py", line 535, in _request
  File "/usr/lib/python3.10/site-packages/aiohttp/connector.py", line 542, in connect
  File "/usr/lib/python3.10/site-packages/aiohttp/connector.py", line 907, in _create_connection
  File "/usr/lib/python3.10/site-packages/aiohttp/connector.py", line 1206, in _create_direct_connection
  File "/usr/lib/python3.10/site-packages/aiohttp/connector.py", line 1175, in _create_direct_connection
  File "/usr/lib/python3.10/site-packages/aiohttp/connector.py", line 992, in _wrap_create_connection

If anyone else were to hit this, you can disable hot-reloading from the main.py file :)

Please add a proper license

Unless I am missing something, the project is currently unlicensed. Could you please add a proper license so people who help out will know what to expect? :)

Which password?

Which password does it want? I only ever set one password for "Steam Deck User" on this device and apparently it's not the one it wants. It also just gives me literally 5 seconds to type something in before it fails.

Screenshot_20220413_175821

Steam Deck Freezes whenever accessing the menu

Installed this via instructions including PowerTools. Whenever I access the menu the Steam Deck freezes and no commands work. I hold the power button to surpress the menu and then it works again.

I would say this was PowerTools but also happened when PowerTools wasn't installed.

Only odd thing about installation was that the Plugins folder was read only so I had to change the permissions.

Any idea of what this could be?

Thank you.

PluginLoader does not work on beta branch

I am currently running the beta branch on my Steam Deck and am working on a plugin to add performance presets to the UI.
But, before I could even start I am unable to get the plugin loader menu up and running.

I have a password setup for my user account if that might effect anything. Happy to help in any way I can.
I followed the plugin loader install instructions and have added the mopidy-controller plugin and the extra settings plugin but not even the plugin menu appears.
EDIT: Just noticed an update that I hadn't even realized had released. Switching over to stable to see if this improves anything.

Can not leave plugin menu when focused

Probably already known:
When the plugin menu is entered by pressing the "a"-button there is no way to get out of the menu, except using the touchscreen. When inside a plugin view ("main_view_html") even the touch screen method does not work and you have to toggle sleep mode off and on again.
Being able to press the "b"-button when a plugin view is opened to bring the user back to the plugin menu as well as being able to leave the plugin menu would be the optimal solution.

Feature Request D::BUS Integration

Just going to leave this idea here, if we're already running this plugin manager service in system-d we should hook it into D::BUS to allow for some IPC. I think we could probably provide this type of messaging by having some optional properties in the JS Plugin Type and managing the D::BUS calls/responses in the actual Rust code. I would be interested to hear your feedback, I'm working on the application side right now and having functionality like this would benefit quite a few projects.

The other outstanding thing noted here is it looks like plugins are limited to JS code, I wonder can we use native extensions/bindings by default (I would assume not?)

Triggering onload again

I am in the process of writing a small plugin that reads some infos and stats created by my own launcher script.
However, I noticed that when the plugin was activated and you close the side menu once you open it again later the displayed information is not updated.

I fixed that with a setTimeout but that just seems wrong.
Is there a possibility to trigger the onload event again or is there even a better method I have overlooked?

Cannot go back from selected plugin back to main plugin loader menu

Title describes it all. I have to restart the entire device to be able to select a different plugin.
I'm going to assume that this is related to issues with html/js and the hard-coded steam controls.
I also can't enable sshd using the extra-settings plugin but that's not the focus of this issue.

Add support for centered popups

Would be helpful for the plugin browser, loader settings, and plugins that need more space to display their UI content.
Maybe use this compatibility window as a template:

Link up the Plugin Store in the ReadMe?

Title should be "Link to**"

It's a bit tedoous trying to find the plugin store when you're not directly on the steam deck, such as looking on your phone for the specific github page for a plugin. It would be a lot easier if there was a link in the ReadMe

Script for refetching all PluginLoadeplugins

Hi,

I wrote it, because adding form interface doesn't worked few days ago for me. I think it can be useful for others:

#!/bin/sh
chmod -R 750 ~/homebrew
cd ~/homebrew/plugins
for i in SteamDeckHomebrew/Mopidy-Controller SteamDeckHomebrew/ExtraSettingsPlugin SpyrexDE/SDH-BigPictureMode SpyrexDE/SDH-Calculator NegativeI0N/SDH-ClassicTheme SteamDeckHomebrew/ExtraSettingsPlugin NGnius/PowerTools suchmememanyskill/SDH-CssLoader; do
echo "refetching: $i"
rm -rf "$HOME/homebrew/plugins/basename $i"
git clone --recursive "https://github.com/$i"
done

Python backend on 127.0.0.1:1337 only serves text

I have an image in my plugin folder which I'm trying to to show in Steam, however I found out that loading an image (or probably any non-text based asset) returns a 500 server error due to the backend trying to decode it as utf-8 text.

Example:
http://127.0.0.1:1337/plugins/plugin_resource/1650910504.3644676/image.jpg returns 500 server error
http://127.0.0.1:1337/plugins/plugin_resource/1650910504.3644676/main_view.html shows the HTML page as text.

The image is located in ~/homebrew/plugins/my_plugin/image.jpg

This is the error message I got from journalctl:

Apr 25 21:11:34 steamdeck PluginLoader[33099]: [loader][INFO]: <module 'posixpath' from '/tmp/_MEI0WN3n2/posixpath.pyc'>
Apr 25 21:11:34 steamdeck PluginLoader[33099]: [web_protocol][ERROR]: Error handling request
Apr 25 21:11:34 steamdeck PluginLoader[33099]: Traceback (most recent call last):
Apr 25 21:11:34 steamdeck PluginLoader[33099]:   File "aiohttp/web_protocol.py", line 435, in _handle_request
Apr 25 21:11:34 steamdeck PluginLoader[33099]:   File "aiohttp/web_app.py", line 504, in _handle
Apr 25 21:11:34 steamdeck PluginLoader[33099]:   File "loader.py", line 152, in handle_sub_route
Apr 25 21:11:34 steamdeck PluginLoader[33099]:   File "codecs.py", line 322, in decode
Apr 25 21:11:34 steamdeck PluginLoader[33099]: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte

The request I have is to allow the server to serve non-text based static assets.

Deck UI freezing with new version

Testing out the new version, it seems to detect plugins but when you go down to the Plugin menu and either click the A button or moving the Thumbstick right to select an option, the whole Deck UI freezes requiring a suspend and reload to get it working again.

Not really sure how to provide any logs on this one.

Testing with the music plugin: https://github.com/Philip-Scott/media-controls-plugin (since there's no demo plugin)

Edit: happens with no plugins installed too

Seemingly randomly, the Plugins menu doesn't appear

I don't know what's causing it, but at random the Plugins menu just doesn't appear.

Sometimes a Deck restart will make it appear but not always.

What can I do to help you figure out why this is happening?

Feature request

Hey can you please make a script for holoiso ?

[mva@mva ~]$ sudo curl -L https://github.com/SteamDeckHomebrew/PluginLoader/raw/main/dist/install_release.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1202 100 1202 0 0 2313 0 --:--:-- --:--:-- --:--:-- 2313
Installing Steam Deck Plugin Loader release...
sudo: unknown user deck
sudo: error initializing audit plugin sudoers_audit
sudo: unknown user deck
sudo: error initializing audit plugin sudoers_audit
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Warning: Failed to create the file /home/deck/homebrew/services/PluginLoader:
Warning: No such file or directory
0 8482k 0 879 0 0 1242 0 1:56:33 --:--:-- 1:56:33 1242
curl: (23) Failure writing output to destination
chmod: cannot access '/home/deck/homebrew/services/PluginLoader': No such file or directory
Created symlink /etc/systemd/system/multi-user.target.wants/plugin_loader.service โ†’ /etc/systemd/system/plugin_loader.service.
[mva@mva ~]$

Installation instructions ask user to use an external site

I'm curious why this is being done. My best guess is it's for analytics / tracking reasons (which github provides to you already, though with a bit more privacy for the users).

I would recommend hosting the file in the git repo and replacing the command with a link to it, honestly.

Setup - contrib/deck.sh script doesn't prompt for input

When running the command mentioned in the readme to get started with development, instead of prompting for input, it just prints various errors and exits immediately.

curl -L https://github.com/SteamDeckHomebrew/PluginLoader/raw/react-frontend-plugins/contrib/deck.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  9388  100  9388    0     0  14840      0 --:--:-- --:--:-- --:--:-- 14840
Installing Steam Deck Plugin Loader contributor (for Steam Deck)...
THIS SCRIPT ASSUMES YOU ARE RUNNING IT ON A PC, NOT THE DECK!
Not planning to contribute to PluginLoader?
If so, you should not be using this script.

If you have a release/nightly installed this script will disable it.
This script requires you to have nodejs installed. (If nodejs doesn't bundle npm on your OS/distro, then npm is required as well).
Enter the directory in /home/user to clone to.
Example: if your home directory is /home/user you would type: git
The clone directory would be: /root/git
Folder name not provided. Using default, 'git'.
Enter the directory in /home/user to install to.
Example: if your home directory is /home/user you would type: loaderdev
The install directory would be: /root/loaderdev
Folder name not provided. Using default, 'loaderdev'.
An ip address must be provided, exiting.

Support navigation with the d-pad if technically possible

One of the caveats of PluginLoader currently is that 'You can only interact with the Plugin Menu via touchscreen." Is it technically possible to implement navigation by d-pad, or is this a limitation that will be hard or impossible to work around?

Loader - Perpetual failure to inject Javascript bricks Steam Deck (?)

I was able to get the plugin loader installed, rebooted into gaming mode, and I successfully installed power tools and set lower GPU, etc. settings last night. However, I didn't try to turn on my deck again until this morning and it would just hang on a black screen. I tried the hard reset, going into bios and selecting the boot device (only the 1 SSD) but it wasn't until I plugged into an outlet that I was able to get something to run. Unfortunately, it was just the OS reimager.

I tried a few different things but basically I suspect that this error I saw somehow really messed something up on the backend. After running the curl command and entering my sudo password, I ran systemctl status plugin_loader and journalctl -xe to see the following error repeated every second:
PluginLoader93386]: [main][INFO]: Failed to inject JavaScript into tab.

I also saw this log on journalctl once in a while, but it may be unrelated:
(yellow text) pipewire[1196]: spa.alsa: hw:acp5x,1: follower delay:576 target:256 thr:256, resync

I have gone through installing plugin loader multiple times this morning (3-4 reimages) testing out various things. I thought maybe it was because manually setting the wattage/GPU clock super low caused desktop mode to struggle. But the last time, I left everything on default and only did the following things: Login after reimage -> update SteamOS -> reboot -> developer mode and enable CEF remote debugging -> set hostname -> reboot -> desktop mode then switch to gaming mode -> desktop mode, set sudo, install script and check status/journalctl -> uninstall and switch to gaming mode. I have isolated it to this plugin as much as I could because I have been using the steam deck for about 4 days before I added the plugin loader and I had no issues until this morning. No bricking from the uninstall after install suggests that the install process is what bricks my steam deck. It could just be faulty hardware for me if nobody else is even seeing the failure in their logs. It just seems weird that it played nice with SteamOS enough for me to install the loader and the power tools plugin and then decided to brick.

Finding links to plugins and docs page

Was wondering if these small changes could be done to improve navigability between the repo, community plugins listing and the plugin repos?

  • Add a section in the GitHub repo readme that links to the list of community plugins and for the documentation page.
  • Update the community plugins website to have direct links to the website/repo of the plugin so you can read the repos source and asses if you want to actually install this plugin. The names already include the GitHub author and the repo name, so adding a link would make sense.

All plugins running a root, regardless of `root` flag

Even if the plugin.json file does not contain the "root" flag, the plugin seems to be loaded as root. I added the following to the top of the main.py file on a plugin without the root flag,

import os

f = open("/home/deck/media-controls-log", "a")
f.write(os.getenv("USER"))
f.close()

And the file contained root.

This seems to be the change which made the daemon run as root at startup
7aa4e91#diff-
That may be expected, if so maybe what is failing is starting the plugin as the "deck" user if the flag is not there within https://github.com/SteamDeckHomebrew/PluginLoader/blob/7d74e98f4f8a47daac85b5de1ef6aa29a1637c06/plugin_loader/main.py

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.