ValveSoftware / steam-for-linux

Issue tracking for the Steam for Linux beta client
4.21k stars 174 forks source link

[Suggestion] Please consider using GTK or Qt for the client #7454

Open TheEvilSkeleton opened 3 years ago

TheEvilSkeleton commented 3 years ago

Your system information

Please describe your issue in as much detail as possible:

I know it's an unusual issue, but please hear me out.

I love the work you people have done to improve gaming in Linux, but to be honest, the Steam client integrates into Linux terribly.

Since Steam uses Electron for the client - correction: it does not, but the other points remain - there is no uniformity with other GTK (and Qt) applications. It would be a great addition to select the theme we want and have Steam automatically use the GTK theme. Electron The client has been known to be a RAM hog as well, so people playing with 8GB RAM will often be forced to either buy more RAM sticks or use swap. Further, Steam's file picker doesn't use GTK/Qt's file picker, which makes it integrate into Linux even less.

Second, Wayland is being heavily pushed by KDE, GNOME and Red Hat. Electron The client doesn't support Wayland at all (and won't anytime soon), so users using Wayland will still have to fall back to X11.

Third, Flatpak. I personally use Flatpak when Flatpak is available, and a lot of users use the Steam flatpak as well. Using GTK will not only fix a lot of issues in the Steam flatpak and make Steam integrate more into Flatpak, but it will also make it really easy to utilize features of Flatpak like XDG File Portals.

Fourth, open source. There are a lot of users using Steam already, so there is no doubt that Steam will receive a lot of contribution by open sourcing the client, e.g. security, performance, improvements, etc. I know this is easy to say, but knowing how much Valve cares about FOSS not for public relations but for ethics and user freedom, I think this is a good reason. My request is more on the client side and less on the server side, since open sourcing the server side might have some licensing issues, etc. Although it's possible to use GTK for proprietary software:

GTK (formerly GTK+,[4] GIMP ToolKit) is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs).[5] It is licensed under the terms of the GNU Lesser General Public License, allowing both free and proprietary software to use it. Along with Qt, it is one of the most popular toolkits for the Wayland and X11 windowing systems.[6]

https://en.wikipedia.org/wiki/GTK


I hope it is going to be considered. I would love to see Steam integrate more into Linux to have a much better gaming experience than Windows.

12buntu commented 3 years ago

This would be a super useful feature. I feel like if a Valve started a community effort, the community would help

dennis1248 commented 3 years ago

The Linux community has been joking about a GTK Steam client for ages. And I would find it absolutely fantastic if a FOSS Steam Client would be made upon GTK.

The chance of this happening, I think is very small. But with Valve you never know..

My vision of a GTK Steam client would be a simplistic client following the GNOME human interface guidelines which can install games, launch games, provide the usual Linux/Proton configuration options, basic Steam news and chat functionality. Store functionality would be optional. Preferably no build-in web browser.

The benefits of this:

The downsides:

TheEvilSkeleton commented 3 years ago

My vision of a GTK Steam client would be a simplistic client following the GNOME human interface guidelines which can install games, launch games, provide the usual Linux/Proton configuration options, basic Steam news and chat functionality. Store functionality would be optional. Preferably no build-in web browser.

Agreed. There's a program called GameHub, which is a client for platforms like Steam. It's in GTK, and it looks amazing because it integrates in the Linux desktop:

image

image

12buntu commented 3 years ago

My vision of a GTK Steam client would be a simplistic client following the GNOME human interface guidelines which can install games, launch games, provide the usual Linux/Proton configuration options, basic Steam news and chat functionality. Store functionality would be optional. Preferably no build-in web browser.

Agreed. There's a program called GameHub, which is a client for platforms like Steam. It's in GTK, and it looks amazing because it integrates in the Linux desktop:

image

image

How is this too much different from Lutris? That's my solution for now, but I don't get store or other functionalities

TheEvilSkeleton commented 3 years ago

GameHub's goal is to have quick access to all your games in one place, whereas Lutris' goal is to have access to Windows programs in Linux with the help of user-written scripts. Lutris happens to have a feature to store all your games in one application.

Most people would prefer Lutris, because of the scripts written by users, and because it is more mature.

bonkmaykrQ commented 3 years ago

I second this. While I like steam's built in look, making it able to absorb the color scheme or theme of your KDE desktop for example, or able to move the menu buttons from the top left to anywhere depending on the system's title bar text position, would help it blend in more with desktops that have a specific palette.

12buntu commented 3 years ago

or able to move the menu buttons from the top left to anywhere depending on the system's title bar text position, @bonkmaykrQ that's my biggest issue, all of my other apps use menu buttons on the left, and it really surprised me that Steam doesn't respect that, given that Valve is really the hero of the Linux gaming community

bonkmaykrQ commented 3 years ago

Yeah! I always wanted to be able to move the close/minimize buttons to the right and move my action bar to the center.

EntityinArray commented 3 years ago

Wow! Even 8GB of RAM is considered small nowadays, due to ugly web apps. Would love to have Steam GTK client

bonkmaykrQ commented 3 years ago

Haha, I had 8 gb of ram for a long time. Never had a need to upgrade but I did anyway, at 16gb now and just might move to 32 to make room for a KVM. That being said, Electron isn't exactly the most resource efficient! GTK should have a smaller footprint.

saltedcoffii commented 3 years ago

+1 for a steam GTK client

gbschenkel commented 3 years ago

I would prefer a Qt/C++ or QtForPython approach instead. Using it could even help to allow the client to run on WebOS TVs for using as steam link.

appetrosyan commented 3 years ago

As a side note, as Chromium is essentially part of QtWebEngine, Steam could smoothly migrate using incremental steps that lead from a Chromium PWA, to a Qt native app, whilst retaining the code re-use that is apparent with respect to the Steam Store.

Basically, the problem here is that the GTK client will only look good on Linux. Qt looks good everywhere.

TheEvilSkeleton commented 3 years ago

I've had more problems with Qt than with GTK, especially with Flatpak and Wayland; thankfully KDE is working really hard on fixing those issues. Anyway, if Qt is easier to develop/maintain than GTK, then I wouldn't mind the switch to Qt instead, since the current client uses a lot more RAM than it should, especially when it's downloading and installing games/updates.

As for the "GTK client will only look good on Linux", I disagree. GIMP 2.99 for example has been looking great on Windows 10, and it's in GTK 3, https://www.youtube.com/watch?v=7aPDlxG9DUg. Maybe I'm cherry picking or being biased right now, but that's what I think. Though as I said, I think that even Qt would be marginally better than the current client.

12buntu commented 3 years ago

A GTK client would be nice, but I think that overall Qt might be a better choice. I don't have much any experience developing applications with Qt or GTK, so I can't speak to the difficulty of developing/maintaining the application, but I will say GTK tends to look better on Linux, at least on the DEs I use frequently.

SeaDve commented 3 years ago

I think it would be great to have a public API for steam, so third party developers can create frontends for gtk, qt etc.

Or there already is?

Faalagorn commented 3 years ago

I've had more problems with Qt than with GTK, especially with Flatpak and Wayland; thankfully KDE is working really hard on fixing those issues. Anyway, if Qt is easier to develop/maintain than GTK, then I wouldn't mind the switch to Qt instead, since the current client uses a lot more RAM than it should, especially when it's downloading and installing games/updates.

As for the "GTK client will only look good on Linux", I disagree. GIMP 2.99 for example has been looking great on Windows 10, and it's in GTK 3, https://www.youtube.com/watch?v=7aPDlxG9DUg. Maybe I'm cherry picking or being biased right now, but that's what I think. Though as I said, I think that even Qt would be marginally better than the current client.

Actually, GIMP (outside of development 3 version) is one of the last apps still stuck with GTK 2, which is deprecated: https://archlinux.org/todo/gtk-2-eol/

I agree with other options, I initially thought of Steam using GTK since it already has some dependences of it, but while both toolkits can look fine no matter the platform (though GTK has a feel of being more Linux-like due to its history indeed), Qt might be a better approach, as it's more Windows-like out of the box and Steam Deck will be using KDE which pusesh Qt heavily.

The look and feel (which got improved with the latest client updates, and more things can be done from web anyway), along the Wayland support #4924 (which is great on Qt) is the last major gripe I have. :) Open sourcing parts of it would surely help speed it up though, especially as other client does that (Itch, gamejolt and Desura prior to that).

Cthatharsis commented 1 year ago

Guys I found cool GTK Adwaita theme for Steam. It looks neat and blends very well with other Adwaita apps. Link: https://github.com/tkashkin/Adwaita-for-Steam

screenshot

I know it's not GTK client but if you only care about how it loooks this might be good for you.

werdahias commented 1 year ago

there is https://crates.io/crates/steam-api for a rust-based approach. (I might be biased here but rust has nice gtk bindings)