{"id":28205802,"url":"https://github.com/aetopia/steam-lite","last_synced_at":"2025-08-22T20:03:15.278Z","repository":{"id":196055719,"uuid":"694087856","full_name":"Aetopia/Steam-Lite","owner":"Aetopia","description":"A minimal Steam Client frontend.","archived":true,"fork":false,"pushed_at":"2023-09-20T16:10:52.000Z","size":57,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-17T10:08:33.231Z","etag":null,"topics":["csharp","frontend","minimal","netframework","netframework48","netframework481","steam","ui"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aetopia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-20T10:00:10.000Z","updated_at":"2025-05-02T22:45:24.000Z","dependencies_parsed_at":"2023-09-21T06:18:10.633Z","dependency_job_id":null,"html_url":"https://github.com/Aetopia/Steam-Lite","commit_stats":null,"previous_names":["aetopia/steam-lite"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FSteam-Lite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FSteam-Lite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FSteam-Lite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FSteam-Lite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aetopia","download_url":"https://codeload.github.com/Aetopia/Steam-Lite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aetopia%2FSteam-Lite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259280658,"owners_count":22833432,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","frontend","minimal","netframework","netframework48","netframework481","steam","ui"],"created_at":"2025-05-17T10:08:33.678Z","updated_at":"2025-06-11T14:32:31.901Z","avatar_url":"https://github.com/Aetopia.png","language":"C#","readme":"# Steam Lite\nA minimal Steam Client frontend.\n\u003e [!IMPORTANT]\n\u003e This is an alternative **frontend** not **client**.\u003cbr\u003e\n\u003e Meaning, the project simply serves as a way to interact with a running Steam Client instance.\u003cbr\u003e\n\u003e Currently there is only Windows support due to the way, the project works.\u003cbr\u003e\n\u003e In the future, other platforms might be also supported if possible.\u003cbr\u003e\n\n## Usage\n1. Download the latest release from [GitHub Releases](https://github.com/Aetopia/Steam-Lite/releases/latest).\n2. Start the program.\n3. To launch an app:\u003cbr\u003e\n    - Select an app from the list and click the `Play` button to launch it.\n    - Double click on the app's name to launch it.\n\n\u003e [!NOTE]\n\u003e Closing Steam Lite will also close the Steam Client instance it launched automatically.\n\n## Aim\nThis project started with the intention of replacing the entire Steam Client frontend with something similar to the UI of the Steam Client with the CEF disabled.\u003cbr\u003e\nSteam Lite provides a minimal GUI frontend with the ability to launch apps.\n\n### How does program work?\nThis program wouldn't have been possible without [NoSteamWebHelper](https://github.com/Aetopia/NoSteamWebHelper).\u003cbr\u003e\nMainly due the fact without it suppressing the Steam WebHelper wouldn't have been possible.\u003cbr\u003e\n\u003e [!NOTE]\n\u003e Steam must be running the background to do the following:\u003cbr\u003e\n\u003e 1. Allows any Steam DRM based apps to be launched.\n\u003e 2. Allows apps to use any Steam related services.\n\n1. The program will attempt to invoke `SteamClient.Launch()` and initialize a new Steam Client instance, if an instance of the Steam Client is running, it will be discarded/shutdown.\n2. Once the new Steam Client instance is running, the Steam WebHelper is disabled to save on resources or to make the instance \"minimal\".\n3. To launch a apps, the program calls `SteamClient.RunGameId(string gameId)`, the method re-enables the Steam WebHelper, waits for the app to launch and then suspends the WebHelper again.\n\u003e [!NOTE]\n\u003e The frontend restricts the user to only launching a single app.\u003cbr\u003e\n\u003e Technically the `SteamClient` class, allows you to launch multiple apps but blocks the invoking thread until the app terminates.\n#### Why not use `SteamCMD`?\nThat's a good question, I actually decided to avoid SteamCMD since:\u003cbr\u003e\n- Steam dumps and writes useful information to the following registry key `HKEY_CURRENT_USER\\SOFTWARE\\Valve\\Steam`.\n- Considering what information is required by the `SteamClient` class using SteamCMD is not required.\n\n### Features\n- Ability to launch Steam apps with directly using a Steam Client instance.\n- Ability to minimize to the tray.\u003cbr\u003e\n    \u003e [!NOTE]\n    \u003e The program will always minimize to the tray if an app is launched.\n- Doesn't require the Steam WebHelper.\u003cbr\u003e\n    \u003e [!NOTE]\n    \u003e The Steam Webhelper must be re-enabled briefly for invoking actions like launching an app.\u003cbr\u003e\n    \u003e If you would like to implement your own methods to invoke specific Steam Client actions make sure to surround the method with `SteamClient.WebHelper(bool enable)`.\u003cbr\u003e\n    \u003e ```cs\n    \u003e SteamClient.WebHelper(true);\n    \u003e YourMethod();\n    \u003eSteamClient.WebHelper(false);\n    \u003e```\n\n### [`SteamClient` class](https://github.com/Aetopia/Steam-Lite/blob/main/SteamClient.cs) Documentation\nThe `SteamClient` provides methods for interacting with a Steam Client instance (`\"steam.exe\"`\").\n\n#### Methods\n##### `SteamClient.Launch()`\nInitialize a Steam Client instance and if required shutdown/discard any running Steam Client instance that wasn't invoked by this method.\u003cbr\u003e\nThe method may fail if Steam isn't installed or an instance invoked by this is already running.\u003cbr\u003e\nThe method returns a `Process` class object if a Steam Client instance is created else `null`.\n\n##### `SteamClient.Shutdown()`\nShutdown any instance invoked by `SteamClient.Launch()`.\u003cbr\u003e\nThe method returns true if a Steam Client instance invoked by `SteamClient.Launch()` is running else `false`.\n\n##### `SteamClient.GetInstance()`\nObtain an already running Steam Client instance invoked by `SteamClient.Launch()`.\u003cbr\u003e\nThe method returns `Process` class object if a Steam Client instance invoked by `SteamClient.Launch()` is running else `null`.\n\n##### `SteamClient.GetApps()`\nObtains installed Steam applications with their App ID and name.\u003cbr\u003e\nThis methods returns a dictionary contains the App IDs and names.\u003cbr\u003e\nThe key-value pair is present as follows `{App ID: Name}`.\n\n##### `SteamClient.GetAppsForUser()`\nThis method is similar to `SteamClient.GetApps()` except it queries installed applications for the currently signed in user.\n\n##### `SteamClient.WebHelper(bool enable)`\nDisables or enables the Steam WebHelper for a Steam Client instance.\n|Value of `enable`|Effect|\n|-|-|\n|`true`| Steam WebHelper is enabled.|\n|`false`| Steam WebHelper is disabled.|\n\nThe method returns `true` if a Steam Client instance invoked by `SteamClient.Launch()` is running else `false`.\n\n##### `SteamClient.StartGameId(string gameId)`\nRuns the specified App ID.\u003cbr\u003e\nThe method will block the invoking thread until the the app is terminated, so its best to use this method in a thread of its own.\u003cbr\u003e\nThe method returns `true` if a Steam Client instance invoked by `SteamClient.Launch()` is running else `false`.\n\n# Building\n1. Install the follwing:\u003cbr\u003e\n    - [.NET SDK](https://dotnet.microsoft.com/en-us/download/visual-studio-sdks)\n    - [.NET Framework 4.8.1 Developer Pack](https://go.microsoft.com/fwlink/?linkid=2203306)\n2. Run the following commands in the repository's root directory to build the project:\u003cbr\u003e\n    ```\n    dotnet clean\n    dotnet build --configuration Release\n    ```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faetopia%2Fsteam-lite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faetopia%2Fsteam-lite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faetopia%2Fsteam-lite/lists"}