Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add decky-syncthing #406

Merged
merged 3 commits into from
Aug 16, 2023
Merged

Conversation

theCapypara
Copy link
Contributor

@theCapypara theCapypara commented Jul 29, 2023

decky-syncthing (Syncthing)

Plugin for managing Syncthing to synchronize files with other devices. Not officially affiliated with the Syncthing project.

From the README:

A Decky plugin to manage Syncthing from your Steam Deck.

This plugin allows you to start and stop Syncthing from the Quick Access panel of your Steam Deck.

It also has some basic stats and allows you to access the web UI. It can also be configured to automatically start Syncthing with Gamescope (the Steam Deck main UI).

The plugin works no matter if you have HTTPS enabled or not and also no matter if you have basic auth enabled.

Since the Steam Deck UI has no support for self-signed HTTPS certificates or Basic Auth, this plugin starts a proxy server on port 58384 (HTTP, localhost only) that forwards requests to the Syncthing Web UI and API.

Screenshot of the plugin

NOTE: This PR template contained a link asking me to review https://deckbrew.xyz/en/plugin-dev/review-and-testing - this page does not exist! So I did not review that page.

Checklist:

Developer Checklist

  • I am the original author or an authorized maintainer of this plugin.
  • I have abided by the licenses of the libraries I am utilizing, including attaching license notices where appropriate.

Plugin Checklist

  • I have verified that my plugin works properly on the Stable and Beta update channels of SteamOS.
  • I have verified my plugin is unique or alternatively provides more/alternative functionality to a similar plugin already on the store.

Plugin Backend Checklist

  • Yes: I am using a custom backend other than Python.
  • Yes: I am using a tool or software from a 3rd party FOSS project that does not have it's dependencies statically linked.
  • No: I am using a custom binary that has all of it's dependencies statically linked.

The Rust backend is mostly statically linked but does rely on some very standard system libs like OpenSSL 1.1.

Testing

  • Tested on SteamOS Preview Update Channel.

@theCapypara theCapypara requested a review from a team as a code owner July 29, 2023 13:02
@theCapypara
Copy link
Contributor Author

Found the review and testing page at https://wiki.deckbrew.xyz/en/plugin-dev/review-and-testing - will review that now!

@theCapypara
Copy link
Contributor Author

Reviewed the page and removed the assets directory.

@theCapypara theCapypara temporarily deployed to testing_env July 29, 2023 13:15 — with GitHub Actions Inactive
@TrainDoctor TrainDoctor requested a review from a team July 29, 2023 13:20
@PartyWumpus PartyWumpus self-assigned this Jul 29, 2023
@theCapypara
Copy link
Contributor Author

Changed banner to be a PNG.

@theCapypara theCapypara temporarily deployed to testing_env July 29, 2023 14:14 — with GitHub Actions Inactive
@PartyWumpus
Copy link
Member

PartyWumpus commented Jul 29, 2023

You should probably have something in the plugin that mentions that the syncthing flatpak has to be installed, as users are likely to go in with zero knowledge.

The banner image needs to be a png iirc, so if you could change then it would likely work.

Also I can see you're using the custom scrollable element, hopefully that can be replaced by scrollGroup and friends when SteamDeckHomebrew/decky-frontend-lib#90 gets merged.

@theCapypara
Copy link
Contributor Author

We noticed that OpenSSL 1.1 was apparently not guaranteed to be installed on a Deck, so I'm switching to a statically linked TLS implementation.

@theCapypara theCapypara temporarily deployed to testing_env July 29, 2023 15:04 — with GitHub Actions Inactive
@theCapypara
Copy link
Contributor Author

theCapypara commented Jul 29, 2023

I replaced the link to OpenSSL with the statically compiled rustls so it should work now. I tested it on my deck and confirmed the executable does not link against OpenSSL anymore.

Additionally I updated the README and the description in the plugin.json to clarify that the Flatpak needs to already be installed: theCapypara/steamdeck-decky-syncthing@523ec90

@theCapypara theCapypara temporarily deployed to testing_env July 29, 2023 16:00 — with GitHub Actions Inactive
@TrainDoctor TrainDoctor temporarily deployed to testing_env July 30, 2023 20:32 — with GitHub Actions Inactive
@TrainDoctor TrainDoctor temporarily deployed to testing_env August 11, 2023 18:34 — with GitHub Actions Inactive
@PartyWumpus
Copy link
Member

Sorry I took so long to get back around to this. The plugin mostly functions well (entering the API key was a little tedious). However, the actual disabling/enabling of folders doesn't seem to work, they don't do anything when clicked on.

(ignore the errors in the console, they seem unrelated)

2023-08-11.20-35-27_7MB.mp4

@theCapypara
Copy link
Contributor Author

For now that's on purpose. Eventually I'll probably make it so that clicking the folders and devices shows some details.
For now representing them as buttons seemed visually to be the nicest way of doing it, even if the buttons don't do anything.

@PartyWumpus
Copy link
Member

Ah okay, guess it's all working fine then.

Copy link
Member

@PartyWumpus PartyWumpus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@PartyWumpus PartyWumpus merged commit 8ead8eb into SteamDeckHomebrew:main Aug 16, 2023
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants