decky-plugin-database
decky-plugin-database copied to clipboard
Add Decky File Browser Plugin
Decky File Browser Plugin
I am creating this PR as a duplicate of 548, because when I tried updating the submodule I did something wrong that triggered something that was breaking some GitHub Actions.
Third time is a charm.
This plugin allows people to run File Browser on their Steam Deck, enabling an easy-to-use way to transfer files from and to the Steam Deck, over the network with just a browser.
~This plugin currently includes a pre-compiled copy of File Browser, which is far from ideal. For the future releases, I plan to have a more transparent way of distributing File Browser within this project.~
UPDATE: This plugin no longer uses a pre-compiled binary of File Browser, instead it will build from source on plugin build time.
UPDATE 03/21/2024: Now including self-signed certificates for running FileBrowser on HTTPS instead of HTTP.
~The plugin uses the Python back-end to start/stop a File Browser process on port 8082
( arbitrary port selection is in progress )~
UPDATE: The port selection is available now, it still defaults to 8082.
With File Browser you have an authenticated web based file browser, that you can manage and transfer files from your Steam Deck. From the File Browser web interface you can:
- Upload files to your Steam Deck
- Download files from your Steam Deck
- View and Edit files from your Steam Deck
- Consume media ( audio, video as well as text ) that you have on your Steam Deck from the browser itself
- Delete files from your Steam Deck
- Share links of your files from your Steam Deck so that other people can download files straight from your Steam Deck
By default, the File Browser instance requires authorization, and the default credentials are:
User: admin
Password: admin
Checklist:
Developer Checklist
- [x] I am the original author or an authorized maintainer of this plugin.
- [x] I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.
Plugin Checklist
- [x] I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
- [x] I have verified my plugin is unique or alternatively provides more/alternative functionality to a similar plugin already on the store.
Plugin Backend Checklist
- No: I am using a custom backend other than Python.
- No: I am using a tool or software from a 3rd party FOSS project that does not have it's dependencies statically linked.
- Yes: I am using a custom binary that has all of it's dependencies statically linked.
Testing
- [x] Tested on SteamOS Stable/Beta Update Channel.
- [ ] Tested on SteamOS Preview Update Channel.
@TrainDoctor thanks for the tip about the sync, I had no clue how to fix that. Also sorry for making a mess. Now it should be synced and I've removed the assets folder.
I have added the proper backend scripts to build File Browser from source on build time! o/
It was brought to my attention that this plugin exposes it's UI on http rather than https, this will be an issue as we have asked previous plugins to use https to help reduce the attack surface a Steam Deck with Decky Loader and this plugin has on a network. For example, we used to just enable CEF Debugging without disabling CEF Remote forwarding so the Deck's web UI would be exposed to anyone on the network with a chrome browser. We fixed that quickly to help prevent Decky turning Steam Deck's on public networks into easy targets and we will ask the same to our plugin developers. Thanks.
I have added self-signed certificates for running FileBrowser on HTTPS instead of HTTP.
Looks good to me, although you should probably remove the
py_modules
folder, and perhaps comment out the migration code? Neither are blocking for the testing store though :)
Just removed the py_modules
folder and fixed the lockfile issues.
A user that is helping me test this reported that it goes into a broken state if the selected port is invalid. So I added a validation on the port input field.
Would maybe be better if the validation checked if the port was in use via the python backend. (Just a suggestion, feel no need to implement if you do not want to, the current solution is fine)
Would maybe be better if the validation checked if the port was in use via the python backend. (Just a suggestion, feel no need to implement if you do not want to, the current solution is fine)
I have found many other issues with the way I'm managing the filebrowser owser process, which involves port binding.
I will work on using systemd for managing the filebrowser process for a future release.
Just in case you haven't, could you join on our discord to test other devs that are also waiting for testing their plugins in order to see if you can help each other out? We are quite in the need for testers rn. Thanks in any case!
Testing: Seems to work, although some additional instructions would be nice. Server forces https (even though over local network, http is likely preferrable as that doesn't give a massive warning). Also, credentials are not stated in the plugin menu itself. Also the default port is 0, does this always need to be reconfigured?
Steam deck oled Steamos preview (steam 1719967667) Decky pre-release v3.0.0-pre2
@SteamDeckHomebrew/decky-testers this needs a test on current SteamOS versions.
@heydemoura apologies for the wait for merge and thus the need for testing again.
@heydemoura, PRs with no action on them were given a deadline of until August 31st for developers to respond and indicate whether they could continue work on the plugin/PR. I am delisting the plugin from testing store and production store until this PR is updated or a new PR is submitted etc. A new PR can be submitted at any time at your convenience and the plugin is not blacklisted. It just cannot be guaranteed to be working by the Loader team right now so it cannot be made available as if it is.
@heydemoura, PRs with no action on them were given a deadline of until August 31st for developers to respond and indicate whether they could continue work on the plugin/PR. I am delisting the plugin from testing store and production store until this PR is updated or a new PR is submitted etc. A new PR can be submitted at any time at your convenience and the plugin is not blacklisted. It just cannot be guaranteed to be working by the Loader team right now so it cannot be made available as if it is.
Thank you for all the support so far, this community is really great! I haven't had the bandwith to update the plugin in a while because of personal matters, but as this is a plugin that I very much enjoy using myself, I hope to make it available on the store later this year.
Thank you for all the support so far, this community is really great! I haven't had the bandwith to update the plugin in a while because of personal matters, but as this is a plugin that I very much enjoy using myself, I hope to make it available on the store later this year.
Best of luck to ya! Totally understand and wishing you well.