|
1 | | -<img src="Assets/opensteam-logo.svg" alt="OpenSteamClient logo" title="OpenSteamClient" align="left" height="65" /> |
| 1 | +<img src="Assets/opensteam-logo.svg" alt="SteamFlow logo" title="SteamFlow" align="left" height="65" /> |
2 | 2 |
|
3 | | -# OpenSteamClient (C# version, still in heavy development) |
4 | | -A partially open-source Steam frontend for Windows and Linux |
| 3 | +# SteamFlow |
| 4 | +A custom, lightweight Steam launcher and client written in Rust. |
5 | 5 |
|
6 | | -# Current development status |
7 | | -Everything below is blockers for release. Lots of stuff that's only documented in my head is also blockers. Lots of code cleanups are due. |
8 | | -Stuff marked later can wait for after we fix the rest of these things. |
9 | | -Stuff marked future can be done eventually or just completely ignored |
10 | | -Stuff marked rebranch-blocker is required to be solved before replacing the main branch. |
11 | | -- [ ] `steam://` protocol handler |
12 | | -- [ ] Startup wizard |
13 | | - - [ ] initial settings |
14 | | - - [ ] steamapps linking |
15 | | -- [ ] Backend stuff: |
16 | | - - [x] (optional) JITEngine classgen with fields |
17 | | - - [x] Callback system |
18 | | - - [ ] Make more performant and de-spaghettify |
19 | | - - Chokes a bit right now with the HTML rendering |
20 | | - - [ ] Misc code cleanups |
21 | | - - [ ] Fix TODO:s and BLOCKER:s |
22 | | - - [x] Callresult system for non-callback results (needed for steamwebhelper/chromehtml/storepages) |
23 | | - - [ ] Make not spaghetti |
24 | | -- [x] Account system: |
25 | | - - [ ] Profile pictures |
26 | | - - [ ] QR code in the loginwindow doesn't have bottom margin |
27 | | - - [x] 2FA |
28 | | - - [ ] 2FA window improvements (the layout is VERY crude) |
29 | | -- [x] Client settings UI |
30 | | - - [x] Library folder management (rebranch-blocker) |
31 | | - - [x] Compat settings (rebranch-blocker) |
32 | | - - [ ] Persona name change |
33 | | - - [ ] Download speed cap |
34 | | -- [x] Fix CPU fan speeding due to IPCClient |
35 | | -- [x] Friends list |
36 | | - - [x] localizations |
37 | | - - [x] Auto-updating "offline since" timer |
38 | | - - [ ] Online, InGame, Offline sorting |
39 | | - - [ ] Chats |
40 | | - - [x] Join friend's game |
41 | | - - [ ] Different colours for different statuses |
42 | | - - [ ] Rich presence |
43 | | - - [ ] Animated avatars |
44 | | - - [ ] Avatar frames |
45 | | - - [ ] Miniprofiles |
46 | | -- [ ] Library UI |
47 | | - - [ ] Game news and patch notes |
48 | | - - [x] Search bar |
49 | | - - [x] Collections backend |
50 | | - - [ ] Needs to have edit functionality |
51 | | - - [x] Sync to the cloud |
52 | | - - [ ] Collection editing GUI (later) |
53 | | - - [x] Games list |
54 | | - - [ ] Stop using TreeView |
55 | | - - Perf. problems |
56 | | - - Stupid "Name" hack. |
57 | | - - [ ] Context menu for launching, settings, etc |
58 | | - - [ ] Focused game view (library art, friends who play, etc) |
59 | | - - [ ] Friends who play section (later) |
60 | | - - [ ] Store, Community, Workshop, etc buttons (later) |
61 | | - - [ ] Settings button |
62 | | - - [ ] Edit collection button |
63 | | - - [ ] Custom library art |
64 | | - - [ ] Game settings page |
65 | | - - [ ] Overlay settings (later) |
66 | | - - Needs to wait until we actually get an overlay |
67 | | - - [ ] Cloud settings |
68 | | - - [ ] How much space is used |
69 | | - - [ ] Cloud file viewer UI (later) |
70 | | - - [ ] Launch settings |
71 | | - - [x] Launch settings dialog |
72 | | - - [ ] Set command line |
73 | | - - [ ] Set default launch option (later) |
74 | | - - [ ] Visualize the full launch option in the command line box (later) |
75 | | - - [ ] Add custom launch options (later) |
76 | | - - [ ] Lang settings |
77 | | - - [x] Beta branch selection (rebranch-blocker) |
78 | | - - [x] Compat settings (rebranch-blocker) |
79 | | - - The API seemingly has a way to set compat strings like forcelgadd, explore adding this functionality (later) |
80 | | - - [ ] Workshop/Mod settings |
81 | | - - [ ] See installed workshop size |
82 | | - - [ ] See installed items |
83 | | - - [ ] Unsubscribe installed items |
84 | | - - [ ] Disabling workshop mods without unsubbing (later) |
85 | | - - [ ] Load order (later) |
86 | | - - [ ] Support 3rd party mod platforms (future) |
87 | | - - [x] Downloads page |
88 | | - - [ ] Reorder items |
89 | | - - [ ] Cancel items |
90 | | - - [ ] Stylize and explain the UI |
91 | | - - [ ] Support showing 3rd party launcher's download statuses (future) |
92 | | -- [x] Steamwebhelper support (later) |
93 | | - - Seems to break with every other update. We need another way to display store pages. |
94 | | - - [x] Store, community |
95 | | - - [ ] Profile tab |
96 | | - - [ ] Fix blurriness on Linux with non-100% DPIs (later) (avalonia bug with x11 scaling, temp fix is to set scaling to 100%) |
97 | | - - [x] Make reliable??? |
98 | | - - Seems to have been fixed. |
99 | | - - [ ] ~~Non-janky typing implementation~~ (probably never, unless we make our own CEF wrapper and use it instead of SteamWebHelper) |
100 | | -- [x] Windows support |
101 | | - - [ ] Installer |
102 | | - - [ ] Uninstaller |
103 | | -- [ ] Close OpenSteamClient when pressing X on the progress dialog |
104 | | -- [x] Split project into multi-repo OpenSteamworks, OpenSteamClient |
105 | | - |
106 | | -# Features |
107 | | -NOTE: The features mentioned here are the criteria for full release. Currently we're in alpha phase. Most of these are not done, and this is not a final list. |
108 | | -- The basics you'd expect: |
109 | | - - Achievements (NOT DONE) |
110 | | - - Steam Cloud (No UI, will try to sync though but file conflicts won't be solvable) |
111 | | - - Invites and friends network (you can send invites, but there's no UI to receive messages) |
112 | | - - There's no overlay yet though, so you'll need to ALT+TAB |
113 | | - - Workshop (should work, but no UI) |
114 | | - - Load order, enable/disable |
115 | | - - Family sharing |
116 | | -- No web technology (also known as CEF, SteamWebHelper) |
117 | | - - It's still not particularly lightweight due to it being in heavy development |
118 | | -- Most games should work |
119 | | - - Steam2 games untested |
120 | | - - Some multiplayer games might not work |
121 | | - - VAC games unsupported (nothing we can do about this, sorry!) |
122 | | - - Games that use ISteamHTMLSurface will not work (source engine MOTDs) |
123 | | -- Depot browser (not done) |
124 | | - - Download extra depots |
125 | | - - Download individual files |
126 | | -- Build history browser (not done) |
127 | | - - Lock specific build |
128 | | -- Steam cloud filebrowser (not done) |
129 | | -- Misc QOL features, such as: |
130 | | - - Download all updates button (not done) |
131 | | -- Linux users will also enjoy: |
132 | | - - 64-bit executable |
133 | | - - One app less that requires multilib/32-bit libraries |
134 | | - - ProtonDB Integration (not done) |
135 | | - - Compat tool improvements: |
136 | | - - Run .exe in prefix (not done) |
137 | | - - Run winecfg/winetricks/protontricks for game (not done) |
138 | | - - Adjust compat preferences like forcelgaddr easily (not done) |
139 | | - - Compat tool downloader (not done) |
| 6 | +SteamFlow (formerly `CustomSteamLauncher`) is the modern successor to the OpenSteamClient project, leveraging Rust for performance, safety, and a better developer experience. It uses `steam-vent` for Steam network communication and `egui` for the user interface. |
140 | 7 |
|
| 8 | +# Current development status |
| 9 | +SteamFlow is currently in alpha. We are actively working on reaching feature parity with the legacy C# version and beyond. |
| 10 | + |
| 11 | +## SteamFlow Roadmap |
| 12 | +- [x] **Authentication** |
| 13 | + - [x] Login with password |
| 14 | + - [x] Steam Guard (Email/Device codes) |
| 15 | + - [x] Steam Guard Mobile App confirmation |
| 16 | + - [x] Session restoration (Refresh tokens) |
| 17 | +- [x] **Library** |
| 18 | + - [x] Fetch owned games from Steam |
| 19 | + - [x] Scan local installed games |
| 20 | + - [x] Display game covers (automated caching) |
| 21 | + - [x] Basic game launching |
| 22 | +- [ ] **Installation & Updates** |
| 23 | + - [x] Download pipeline (WIP) |
| 24 | + - [ ] Update management |
| 25 | + - [ ] Uninstall support |
| 26 | +- [ ] **Features** |
| 27 | + - [ ] Search bar |
| 28 | + - [ ] Collections / Categorization |
| 29 | + - [ ] Friends list & Chat |
| 30 | + - [ ] Steam Cloud integration |
| 31 | + - [ ] Workshop management |
| 32 | + - [ ] Proton/Wine integration improvements |
| 33 | + - [ ] Depot browser (Download specific builds/files) |
| 34 | + |
| 35 | +# Getting Started |
| 36 | +## Prerequisites (Linux) |
| 37 | +Ensure you have the following system dependencies installed (Ubuntu 24.04 example): |
| 38 | +```bash |
| 39 | +sudo apt-get install build-essential pkg-config libssl-dev libx11-dev libxi-dev libxrandr-dev libxinerama-dev libxcursor-dev libxkbcommon-dev libasound2-dev libudev-dev libwayland-dev libgtk-3-dev libpulse-dev libdbus-1-dev libegl1-mesa-dev libgles2-mesa-dev |
| 40 | +``` |
| 41 | + |
| 42 | +## Build and Run |
| 43 | +```bash |
| 44 | +git clone https://github.com/OpenSteamClient/OpenSteamClient.git --recursive |
| 45 | +cd OpenSteamClient/SteamFlow |
| 46 | +cargo run --release |
| 47 | +``` |
| 48 | + |
| 49 | +# Features & Goals |
| 50 | +- **No Web Technology:** Unlike the official Steam client, SteamFlow does not use CEF or WebViews for its core interface, making it extremely lightweight. |
| 51 | +- **Fast and Responsive:** Built with Rust and `egui` for a native, snappy experience. |
| 52 | +- **Privacy Focused:** Open-source implementation of Steam protocols. |
| 53 | +- **Linux First:** Great support for Linux, including 64-bit clean architecture and better Proton management. |
| 54 | + |
| 55 | +--- |
| 56 | + |
| 57 | +# Legacy: OpenSteamClient (C#) |
| 58 | +The original C# implementation of OpenSteamClient is still available in the root directory but is no longer the primary focus of development. |
141 | 59 |
|
142 | 60 | # Contributing |
143 | | -See [CONTRIBUTING.md](https://github.com/OpenSteamClient/OpenSteamClient/blob/c%23-remake/CONTRIBUTING.md) for guidelines. |
144 | | -Clone by running `git clone https://github.com/OpenSteamClient/OpenSteamClient.git --recursive` |
145 | | -Compile and run by going into OpenSteamClient and running `dotnet run`. |
146 | | -Occasionally updates may break existing downloaded repos, just delete the whole repo and reclone if that happens. |
147 | | - |
148 | | - |
149 | | -## Rust launcher prototype: SteamFlow |
150 | | - |
151 | | -This repository now includes **SteamFlow** (formerly `CustomSteamLauncher`) in `SteamFlow/`. |
152 | | - |
153 | | -- Run locally: `cargo run --manifest-path SteamFlow/Cargo.toml` |
154 | | -- CI packaging: `.github/workflows/rust.yaml` builds a `.deb` package on Ubuntu 24.04. |
155 | | - |
156 | | -## Testing |
157 | | -If you decide to test OSC, you should report issues in GitHub issues. |
158 | | -There's also a [Discord server](https://discord.gg/Vrk6sZfh9u), where you can discuss OpenSteamClient and related projects. |
| 61 | +See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines. |
159 | 62 |
|
160 | | -# Screenshots |
161 | | -Nothing for now. |
162 | | - |
163 | | -# Usage |
164 | | -This is only meant for developers. |
165 | | -Once this is in a good enough state I will write new install instructions. |
166 | | - |
167 | | -# System requirements |
168 | | -- 64-bit x86_64 PC |
169 | | -- Arch Linux or Windows 10 |
170 | | -- Dotnet 9 (for development only) |
171 | | - |
172 | | -## Credits |
173 | | -Research resources we've used: |
174 | | -- [open-steamworks](https://github.com/SteamRE/open-steamworks) |
175 | | -- [open-steamworks fork by m4dEngi](https://github.com/m4dEngi/open-steamworks) |
176 | | -- [SteamTracking](https://github.com/SteamDatabase/SteamTracking) |
177 | | -- [protobufs dumped from the steam client](https://github.com/SteamDatabase/Protobufs) |
178 | | -Other credits: |
| 63 | +# Credits |
| 64 | +- [steam-vent](https://github.com/n00b67/steam-vent) - Steam protocol implementation |
| 65 | +- [egui](https://github.com/emilk/egui) - Immediate mode GUI library |
| 66 | +- [open-steamworks](https://github.com/SteamRE/open-steamworks) - Research resources |
179 | 67 | - [Logo and sound assets by nPHYN1T3](https://github.com/nPHYN1T3) |
180 | 68 |
|
181 | 69 | # Q&A |
| 70 | +## Is this a full replacement for Steam? |
| 71 | +SteamFlow aims to provide a lightweight alternative for launching games and managing your library. Some features like VAC-secured games or ISteamHTMLSurface (Source engine MOTDs) may never be supported due to proprietary limitations. |
182 | 72 |
|
183 | | -## Partially open source? |
184 | | -This is a GUI for Valve's own Steam Client binary, the `clientdll` |
185 | | -These binaries are not open source and Valve doesn't support 3rd-party usage of these. |
186 | | -This also means we inherit design choices and potential bugs from these files. |
187 | | -Due to this, we cannot fix everything, such as the client not conforming to the XDG paths specification (although we've limited the pollution to a .steam symlink in your home folder only). |
188 | | - |
189 | | -Also, thank you Valve for improving Linux gaming, and making a native Steam Client in the first place. |
190 | | - |
191 | | -## Is a fully open-source version planned? |
192 | | -Maybe eventually. See [TODO](TODO.md) |
193 | | - |
194 | | -## Any non-Discord support channel? |
195 | | -Sure, just file an issue report. Feature requests, issues and suggestions all go into Github Issues. |
196 | | -The Discord channel is really only meant for people who don't have a Github account, and are not too well versed in programming (so, regular folk) |
197 | | - |
198 | | -## What version of Steam's binaries do you use? |
199 | | -The same as OpenSteamworks, available [here](https://github.com/OpenSteamClient/OpenSteamworks/tree/master/Manifests) |
200 | | - |
201 | | -## The client crashes a lot or doesn't start |
202 | | -Delete `~/.local/share/OpenSteam` and try again. Also check that you have a PC that meets the requirements for Steam officially, as well as OpenSteamClient. |
203 | | -Also, run OpenSteamClient from the terminal and post the logs in a Github issue clearly describing your situation. |
| 73 | +## Is it safe to use? |
| 74 | +SteamFlow uses official Steam protocols. However, it is a 3rd-party client and is not endorsed by Valve. Use at your own risk. |
0 commit comments