FrogTheFrog / moondeck-buddy

A server-side part of the MoonDeck plugin for the SteamDeck.
GNU Lesser General Public License v3.0
151 stars 9 forks source link

DISCUSSION/FEATURE REQUEST: Reducing duplicate shortcuts #92

Closed Rumik closed 2 weeks ago

Rumik commented 2 weeks ago

Hello again!

I have a crazy idea for you.

TL;DR: Add a Sunshine Button alongside the MoonDeck button. MoonDeck button functions as it currently does. First time pressing the Sunshine button asks you to sync and then select a Sunshine shortcut, and you'd select the shortcut for this game. You're left with a single entry for the game, with multiple ways to play it (Play/Stream/MoonDeck/Sunshine).

The MoonDeck button works great for locally and remotely installed Steam games, but it does nothing for non-steam games.

Steam is able to stream non-steam games, but if you also have the game installed locally, you get two different shortcuts to the same game. Then throw in Sunshine shortcuts and you've got 3 separate shortcuts for the same game!

Firstly it would be great if the MoonDeck button worked for these remotely installed non-steam games.

But my real suggestion/discussion point is a way of reducing the number of duplicate app shortcuts you have by manually linking a locally installed game (steam or non-steam) to a Sunshine App or MoonDeck App.

Use case 1: Steam game, installed both locally on the Steam Deck and remotely. Remote Play is enabled on the Steam Deck. MoonDeck is enabled. A single entry appears in the Steam Deck library with a drop-down Play/Stream button. The MoonDeck button is shown as an alternative to Steam Remote Play streaming.

Use case 2: Steam game is only installed remotely. Remote Play is enabled on the Steam Deck. MoonDeck is enabled. A single entry appears in the Steam Deck library with a Stream button. The MoonDeck button is shown as an alternative to Steam Remote Play streaming.

Use case 3: Steam game (doesn't matter if it's remote and local or just remote), and a Sunshine App shortcut has also been created for it. Remote Play is enabled on the Steam Deck. MoonDeck is enabled. Two entries appear in the Steam Deck library; the official entry (with Stream button) and the Sunshine App entry (with Play button). The MoonDeck button appears on the official entry.

Use case 4: Non-Steam game is only installed remotely. Remote Play is enabled on the Steam Deck. MoonDeck is enabled. A single entry appears in the Steam Deck library with a Stream button. The MoonDeck button does not appear.

Use case 5: Non-steam game is installed both locally on the Steam Deck and remotely. Remote Play is enabled on the Steam Deck. MoonDeck is enabled. Two entries appear for the game in the Steam Deck library - the local version and the remote version. Neither feature the MoonDeck button.

Use case 6: Non-steam game is installed both locally on the Steam Deck and remotely, and a Sunshine App shortcut has been created. Remote Play is enabled on the Steam Deck. MoonDeck is enabled. Three entries appear for the game in the Steam Deck library - the local version, the remote version and the Sunshine version. None feature the MoonDeck button.

It's really use cases 3, 4 and 5 that I'm talking about addressing.

In all cases, add a Sunshine Button alongside the MoonDeck button. MoonDeck button functions as it currently does. First time pressing the Sunshine button asks you to sync and then select a Sunshine shortcut, and you'd select the shortcut for this game. You're left with a single entry for the game, with multiple ways to play it (Play/Stream/MoonDeck/Sunshine).

You'd need the ability in MoonDeck settings to choose which library entries to add the button(s) to, or just add them to every entry. Not sure what the limitations there are.

Is this crazy?

Thanks

FrogTheFrog commented 2 weeks ago

I guess it would be possible to show another button based on game name match (the easiest solution). However, this sounds like a very niche use-case that would need a lot of time to implement that I'm not willing to invest in.

I am closing this as I don't plan to work on it, but I would be happy to accept a PR and even give pointers if you or anyone else wants to implement it.