Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Announcement] The future for SamRewritten #147

Open
PaulCombal opened this issue Feb 14, 2023 · 10 comments
Open

[Announcement] The future for SamRewritten #147

PaulCombal opened this issue Feb 14, 2023 · 10 comments

Comments

@PaulCombal
Copy link
Owner

Hi everyone,

I'm going to be 100% fair, I think this tool is slowly becoming obsolete. I myself use Steam Flatpak since the "apt" version is outdated. This can be fixed, however I simply do not have time to dedicate to this project anymore. If you want it to keep going I'm counting on you all to make new contributions.

Looking back, It was a mistake from me back then in 2018 choosing C++, as the ecosystem is very poor. Conan and vcpkg simply do not get the job done. For the foreseeable future, I would endorse a rewrite in Rust (to make use of cargo), this time clearly separating frontend and backend.

Let me know what you think, and if any of you would like to start this project again with Flatpak and Rust in focus, I would be hyped to take part of it.

Have a wonderful day ❤️

@PaulCombal PaulCombal pinned this issue Feb 14, 2023
@QuendirSkye
Copy link

Hi!

A rewrite where the backend and frontends are separated would be great. And achievable nicely by simply splitting them into different crates.

And Rust bindings already exist for the Steamworks API: crates.io/crates/steamworks

As an avid user of SamRewritten, and a Rust programmer, I would like to do this... But, a small but!
As of right now, I don't have lots of free time to invest into this, so:
If no other motions are made towards this during the next week or two, I can/will start working (probably next week already) on a minimal version/poc in the few hours of free time I have during the next few weeks. Just to get a CLI interface going for at least the very basic features.

@PaulCombal
Copy link
Owner Author

@bugsommelier It's amazing to see motivation already! Feel free to share here your code repo for the curious.
To me, separating front and back end would mean starting with the backend, and the GUI library would be a question for way later into development.

I can still give a bit of insight of my experience: Working with GTK was great, although not really discussed online the documentation is always spot on, and there are plenty of tools making it easy to lay out the base of the application, Glade is fantastic. I chose it in the first place because I know it integrates very well with most Linux desktop environments.

Qt looks ass there's no way around it. As of druid, I've never heard of it, but it seems to target multiplatform as a main goa. If I had to choose I'd go with Gtk again, there's already a crate for it. An other choice could be a tauri/electron app, but where's the fun in that haha

@QuendirSkye
Copy link

^^ Another GUI option would be Iced, which I am personally more familiar with (and a big fan).

But yes, backend first.

I'll get started on my minimal backend implementation within a few hours, and see where it takes me.

@ajwdd
Copy link

ajwdd commented Mar 3, 2023

@PaulCombal Thanks for the code base to base this off of! I have hiccups, but I have created some operational functions with the Steamworks 0.9.0 crate. So far, once steam is running, I can successfully query the user's id and list the owned games (with achievements or editable statistics), lock and unlock the achievements, and commit the changes, but I haven't wrapped my head around numerous bugs with Wayland. I am still working on GUI Vim plugin manager that pulls from vimawesome.com, but lmk if you want to see what I have so far and I'll send my functions or full code for context.

@K1LL3RPUNCH
Copy link

Yeah, i'm too using FLatpak version, so can it be used as flatpak with faltpak steam?

@HanPrower
Copy link

HanPrower commented Aug 14, 2023

I'm just going to throw this out there in the interim of an overhaul/new app...

I use SamRewritten with Flatpak and it works okay. I do not use the UI though. It seems to crash. Not sure if that's due to the Flatpak or because I have over 1000 games and Sam gets a bit wobbly with lots of games :)

If you have a system installed Steam ~/.steam will likely already exist, so back it up (or delete it, your call).

Symlink ~/.steam to ~/.var/app/com.valvesoftware.Steam/.steam
ln -s ~/.var/app/com.valvesoftware.Steam/.steam ~/.steam

Use the command line...

Firstly list all the available achievements with:
samrewritten --app <gameID> --ls

Next pop the wanted achievement with:
samrewritten --app <gameID> --unlock <achievementID>

All the cli commands are in the README:
https://github.com/PaulCombal/SamRewritten#command-line-options

@juliapaci
Copy link

Whats the status of this rewrite? I'm interested in contributing but i don't see a respective branch or repos in anyone's GitHub accounts?

@romatthe
Copy link

romatthe commented Feb 25, 2024

Personally I still use this quite often, whenever I get issues with Achievements not unlocking etc (or recently when I played It Takes Two with a Friend Pass and got no achievements for anything I did). It still works totally fine for me, but I use NixOS which has has pretty well maintained (if somewhat advanced) package that's not the flatpak version. I packaged SamRewritten myself (since it's so easy to compile, for which you have my thanks!).

If you and other people are going to end up with Rust, I'd definitely stick with GTK. It's really well supported in Rust, which has very high quality bindings maintained by the GTK team itself (and many other bindings to projects under the freedesktop umbrella). On top of that, you will also be able to port most of the GUI you currently have over without too many changes, which is great, because the current GUI is nice, slick and very easy to use.

If you end up going with a higher level library, you could check out Relm4, which is built directly on top of GTK4. But if you want to make the porting process nice and easy it's probably a lot easier to just stack with the gtk4 crate. On top of that, the Rust bindings allow you to use Blueprint these days if anyone would want to go down that route (you can directly define them in your Rust code via template macros). Personally I haven't used Blueprint yet, but I would definitely try it out if I would work on a GTK project today.

I can definitely try to help out if there is an attempt at Rust rewrite, even though I don't have a lot of time on my hands these days and I'm not too knowledgeable on how to work with Steam related things.

@LuisMayo
Copy link

Hi!

I wanted to announce that I've been working on a replacement for this project which I've called Samantha https://github.com/LuisMayo/samantha

It's using Rust in the backend and Angular in the frontend, orchestrated through Tauri (I know web dev is not popular but it is what it is)

The project is a bit of a Proof Of Concept, currently it needs the SteamClient library either on the exe path (on Windows) or on the LD_LIBRARY_PATH on Linux. I haven't tested it with Steam Flatpak yet but It works with System Steam on Linux Mint and SteamOS 3

Currently I've stopping directly contributing to it because I'm using my time on other projects but I'll keep working on Pull Requests and that if someone contributes, else I'll probably circle back to this sooner or later

Thanks!

@jsnli
Copy link

jsnli commented Nov 3, 2024

Hello,

I came across this post a few months ago and wanted to share my implementation of SAM on Linux that I've been working on named Samira

https://github.com/jsnli/Samira

Samira is written with Rust, Typescript, and Tauri. Samira currently has core features including game search, achievement unlocking/locking, and statistics support. I'm hoping this initial release is enough to start being of use to those interested and to start gathering feedback.

I feel I've reached a point where my next goal is to reach a stable 1.0.0 release before expanding into further features. If anyone interested has the time to take a look, I'd greatly appreciate it.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants