DavidoTek / ProtonUp-Qt

Install and manage GE-Proton, Luxtorpeda & more for Steam and Wine-GE & more for Lutris with this graphical user interface.
https://davidotek.github.io/protonup-qt
GNU General Public License v3.0
1.18k stars 39 forks source link

enhancement/tabbed views instead of opening additional windows #239

Closed kev-odin closed 1 year ago

kev-odin commented 1 year ago

Is your feature request related to a problem? Please describe. I am confused by the various window sizes that appear after selecting an option. It would be beneficial to the end user for expecting a consistent UI/UX design. From an accessibility standpoint, the experience could be improved.

Could also be a benefit for Steam Deck users.

Describe the solution you'd like I am unfamiliar with Qt/PySide6, so I had to dive into the docs to see if there was a better widget to use for different tabbed views. The content of each window will remain unchanged, I think this will be a purely aesthetic improvement.

Something like example 1 or example 2. And relevant docs: here

image

image

Possible tab name options:

  1. Currently installed
  2. Add Proton Version
  3. Game List
  4. About

Describe alternatives you've considered An alternative route would be to change the window sizes in the ui folder to be consistent with each other.

sonic2kk commented 1 year ago

This would indeed be an aesthetic change, but I think the UI of ProtonUp-Qt is intuitive and consistent with other utility applications. I don't think it makes sense to put different options such as installed tools and then adding new tools into a tabbed layout. The about menu potentially could, as could the games list, but I think it makes more sense to have these as separate dialog windows. You're viewing "extra" information, and it's fairly intuitive to assume that a dialog will appear when pressing a button such as the games list. Some convergent applications may use a "page" approach where things move from side to side, but it still makes more sense in my opinion to use dialogs.

Window pop-ups are a standard part of application design, as are the varying sizes. If you look at other utilities that use Qt, such as the Dolphin Emulator, it follows similar practices to ProtonUp-Qt. The KDE Desktop Environment makes heavy use of Qt and many of its applications use a similar design pattern.

An example closer-to-home would be the Steam Client itself. The Steam Client makes extensive use of pop-up dialogs without a fixed size. For example, its about dialog and system information dialog. Game properties uses a separate dialog (could be compared to ProtonUp-Qt's Compatibility Tool Information dialog), and adding a Non-Steam Game also uses a separate dialog (could be compared to ProtonUp-Qt's Install Compatibility Tool dialog). The Friends List inside of Steam uses a separate dialog, as does its settings menu.

The point I'm trying to illustrate here is that the UI you are proposing is much less of a standard than a central UI with dialogs. When viewing extra information, such as an "About" screen, or extra information such as compatibility tool information, or fetching things such as new tools, it is fairly standard for a pop-up window too appear.

I'm not trying to be rude, I just don't see how this would be confusing when it is standard desktop application behaviour.

I am also not sure how this would benefit Steam Deck users exactly. Maybe in Game Mode but that also seems like a stretch to me.

kev-odin commented 1 year ago

Okay no worries, you are not rude. Thank you for taking the time to explain your thought process with the decision. I think that you are right that the audience for this application is mainly desktop and probably a sprinkle of users that use this with the Steam Deck.

I can close up this issue.

Love the project and keep up the hard work! 👍

sonic2kk commented 1 year ago

I think there are plenty of Steam Deck users, but I am just not sure how a tabbed UI would benefit them. The Steam Deck is still a PC after all, just in the form-factor of a handheld. From the touch screen angle, I am not sure that Qt's tabbed layout would change much as it would be equally as hard imo to touch the tabs as it would be to touch the buttons, but this is why Valve designed the Steam Deck with touchpads, as it allows for easier mouse control. I'm not sure if there's any other angle I could see a potential benefit to using a tabbed UI.

The Steam Deck runs SteamOS, which when running in Desktop Mode (probably the easiest place to use desktop applications) is just a standard KDE Linux Desktop, albiet running on a fixed snapshot of Arch Linux. So I am not sure how Steam Deck users would be different from regular desktop users in this case, or how the current UI is not intuitive for the Steam Deck. Using desktop applications in GameScope on a regular Linux Desktop is a bit of a pain but it's lessened a little bit on the Steam Deck with the ability to switch the active window (though I have heard this is pretty buggy). When it comes to the Desktop side of things, I don't think there's much difference between using ProtonUp-Qt on a Linux Desktop and a Steam Deck. The touchpads, at least to me, are fairly similar to using a trackpad on a laptop to interact with the UI. Plus, you could still connect a keyboard/mouse to the Steam Deck (which I often do), and then aside from the smaller screen it's the same as using ProtonUp-Qt on a Linux Desktop.

So along with not being as intuitive as the current UI, which as far as I am aware is fairly consistent with other desktop utilities, I am not sure how this change would impact Steam Deck users at all.

Also, I'm not the maintainer, just a semi-frequent contributor and user of ProtonUp-Qt, so I don't have any authority on these decisions :sweat_smile: @DavidoTek is the maintainer and should also weigh in here. Though from what I have contributed I could say that the change to using a tabbed layout would need some code changes as well, to move away from using QDialogs. Right now the dialogs are loaded from Qt Designer UI files, so this would need to change. The widgets would need to be carefully implemented maybe in a separate QWidget parent instead of a QDialog (preserving the relevant naming so the existing logic can be as lift-and-shift as possible) and then added to a tabbed layout for the main UI. This might take a significant refactor, but the refactor effort alone wouldn't be enough to discount this kind of change imo. I am moreso concerned with the benefit this would bring in relation to the work, i.e. intuitiveness, and what I've tried to outline in my replies is that as a user (without my developer goggles on :nerd_face:), I can't really see the problem that this proposal would solve.

DavidoTek commented 1 year ago

An alternative route would be to change the window sizes in the ui folder to be consistent with each other.

I've considered redesigning the UI to be more usable on touch screens. See https://github.com/DavidoTek/ProtonUp-Qt/issues/55 That would be a huge undertaking though as the UI needs to be completely redesigned in this case. Also, some of the backend logic is tethered a bit to the UI.

This would indeed be an aesthetic change, but I think the UI of ProtonUp-Qt is intuitive and consistent with other utility applications. I don't think it makes sense to put different options such as installed tools and then adding new tools into a tabbed layout.

We could design a "convergent" UI that scales depending on the device (square window on the desktop, full screen on the Steam Deck). Then we could work with modal popups, a bit like the predecessor of ProtonUp-Qt (https://github.com/AUNaseef/protonup/pull/9 :smile:). But again, that would be a lot of effort.

An example closer-to-home would be the Steam Client itself

It would be possible to implement two UIs like Steam does, but I don't think that makes much sense for a small utility like ProtonUp-Qt...

Using desktop applications in GameScope on a regular Linux Desktop is a bit of a pain but it's lessened a little bit on the Steam Deck with the ability to switch the active window (though I have heard this is pretty buggy).

Actually, I'm wondering how it looks on Steam Deck. I've seens a screenshot somewhere. Maybe @kev-odin, can you provide some photos how ProtonUp-Qt looks in Handheld mode?

Right now the dialogs are loaded from Qt Designer UI files

I think it is possible to load the UI from a .ui file as a QWidget which will be a child of a parent window, hmm... Actually, I've tried to implement modal popups inside the Main Window with Qt Widgets, but wasn't successful.

sonic2kk commented 1 year ago

Making the UI more touch-friendly may be a challenge, though not a bad idea 😄 I'm just not sure the original proposal here solves that, and I disagreed with the notion that dialogs were confusing and that using a tabbed layout solves a problem in this instance.

Some things to consider for touchscreen friendliness is cross-distribution theming (KDE is moving to Qt6 soon and this could impact theming, probably mainly outside of Flatpak like with PyQt5 apps) and that any UI element sizing could be solved with a global scale factor (as any touch screen usability issues like this would not be specifically limited to ProtonUp-Qt , it should follow the OS scaling).

Some apps like Electron may lend themselves more to independent UI scaling but as ProtonUp-Qt uses a desktop GUI toolkit the intent, in my mind, is to match the users desktop experience as close as possible, rather than having a radically different UI.