Are there any open source Steam clients? Maybe it can be like Heroic, because desktop Steam is technically browser with specific website opened.

Steam and Valve has great Linux support, but it would be interesting to try alternative open source client.

  • mox@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    13
    ·
    edit-2
    4 months ago

    because desktop Steam is technically browser with specific website opened.

    The Steam client does use Chromium Embedded Framework for its interface, but there’s a lot more to it than just that. For example, Steam Input, Steam Overlay, Steamworks, and Steam Play (aka Proton) which itself is a collection of of nontrivial components.

    If you just want an alternative launcher, there is Lutris, but there is no stand-alone Steam client alternative as far as I know.

    It might be interesting to see how much functionality could be replicated in an open-source client. Some components, like DXVK and a web engine, are readily available. Others, like Steamworks, are not. SteamDB shows that it’s possible to inspect Steam’s game repositories, but actually downloading from them without Steam (or steamcmd) might be challenging. Goldberg Emulator shows that it’s possible to fool some games into thinking Steam is running, but that’s not enough to run games that include DRM.

    Anyone attempting this would have to weigh the time they spend reverse engineering and re-implementing against the fact that Steam can always change its internal services, rendering all that time and effort wasted. And, of course, there would always be a risk that anyone using it (without explicit permission from Valve) might have their account banned.

  • tal@lemmy.today
    link
    fedilink
    English
    arrow-up
    10
    ·
    edit-2
    4 months ago

    I assume not, but there is a command-line client, steamcmd. I used it the other day when I wasn’t near a machine that I had Steam installed on to remotely install FTL on a machine via ssh that I had Steam installed on so that I could copy it to a remote laptop, which I didn’t have Steam installed on (FTL is one of the games that doesn’t use Steam for DRM)

    I’d imagine that one could theoretically slap an open-source frontend on that.

    EDIT: Also, graphical frontends aside, it doesn’t even have readline/editline support, so running it via:

    $ rlwrap steamcmd
    

    …is already throwing a minimal open-source frontend on it that rather improves the experience.

    EDIT2: I don’t care that much about most of Steam, but I do wish that the downloader portion of Steam were open source so that I could push a patch to let one cap the number of concurrent TCP connections open. Normally, a saturated network connection will tend to allocate bandwidth evenly on a per-TCP-connection basis, and because Steam opens a ton of concurrent connections, it gets the lion’s share of the connection…for Steam downloads, which are very much low priority, and which I don’t want trying to eat up all the bandwidth.

    EDIT3: There’s apparently some Linux ncurses-based client that uses library injection to take over the graphical client, but that repo last saw a change 6 years ago, and I’d bet that it hasn’t worked in a long time. Looking at steam_injector.c, It looks like it prevents XMapWindow() from running, so it should keep the graphical client from actually doing anything graphical.

  • kugmo@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    1
    ·
    4 months ago

    I do not remember the name, but there was one being developed and the UI was made with QT. I don’t know if it used it’s own method to download games or was just a GUI for steamcmd.

    • MajinBlayze@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      4 months ago

      Does this work well on Linux? Looks like it’s dotnet based

      Also, the readme says it requires windows

      • woelkchen@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        4 months ago

        Don’t know if that client specifically works on Linux but .NET supports Linux out of the box since many years.

        • MajinBlayze@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          4 months ago

          The interface “running” is one thing, but does it know to run games in wine/proton? Does it know to grab the Linux versions of games if available? Mono doesn’t make that automatic.