Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
135 stars 2 forks source link

Custom Dash Screens #2791

Open JackTheFoxOtter opened 1 month ago

JackTheFoxOtter commented 1 month ago

Is your feature request related to a problem? Please describe.

There currently exist multiple community made facets that inject a custom RadiantDashScreen into the dashboard upon placement, which is a widely used feature, and currently works without issues. An example of this is the screen injection facet from my public folder: image (resrec:///U-JackTheFoxOtter/R-c79b181e-bacc-4d63-8bc2-b8ffa87aa415, it's under "Facets")

It does however rely on manually reparenting parts of the facet, and on the structure of the dash / slot names to be consistent. It also requires a facet to act as a "proxy" for the screen, which contributes to cluttering up the dashboard a bit.

Describe the solution you'd like

I would like a easy to use native way of creating / managing custom dash screens, giving them a name and icon, and changing their position relative to the other screens.

Describe alternatives you've considered

Continuing to use the community made facets. This is a pretty solid workaround for the time being, but I believe in the long run a native version would be better, that's why I'm making this request.

Additional Context

No response

Requesters

No response

ProbablePrime commented 1 month ago

I was thinking about this a few months ago.

I couldn't decide the best way to handle it. We could easily shove some UI into the settings screen to allow for it. But that didn't feel as user friendly as it could be so I decided against it.

The other idea i had was something that's a little more facet like/similar to apps on phones. Imagine a screen on the screens button bar not as a button but as an IPhone app and you'll get the idea. That way you could share "screens" with each other much like facets are shared.

I haven't done anything technical wise about this, these are just ideas and it was front of mind as I was in the dash code for other reasons this past month.

JackTheFoxOtter commented 1 month ago

If you want a implementation suggestion, I was thinking about making it part of the UI edit mode. On the button row, when UI edit mode is turned on, a "Add Screen" or "+" button could appear, that when pressed simply adds a new empty screen. The question is where to put the customization options, like changing the name, color and icon of the screen. Could perhaps be a little cogwheel button that shows up to the side of the dash, that opens a modal dialog with those options for the current screen. In there could also be the button to delete the screen again (with confirmation!). Reordering could be done by simply clicking and dragging an individual screen button.

Needless to say some screens (like "Exit") probably shouldn't be editable, so some extra handling for those would make sense to me.

JackTheFoxOtter commented 1 month ago

Somewhat related, there was a request for a re-orderable UIX list, which could be used for the dash screen buttons as well in https://github.com/Yellow-Dog-Man/Resonite-Issues/discussions/1597#discussioncomment-9004507. I'll make a separate request for that, as it looks like that one never made it out of the discussion thread.

JackTheFoxOtter commented 1 month ago

Done, see #2792

JackTheFoxOtter commented 1 month ago

[...] That way you could share "screens" with each other much like facets are shared.

I'm not actually sure sharing individual screens makes much conceptual sense. I feel like screens are just containers for facets, the analog would be grouping multiple apps together into a folder on your phone's home screen. I don't think you'd want to share an entire folder of collected apps, you might want to share individual apps, which would have more intent to it.

What you do however sometimes want is the ability to export / import the ENTIRE home screen layout. So pretty much the entire workspace in Resonite terms. And I'm pretty sure that has been discussed before in a different issue. (Yup just checked, that would probably be better handled by #2456)