Millennium is an open-source low-code modding framework to create, manage and use themes/plugins
for the desktop Steam Client without any low-level internal interaction or overhead.
If you enjoy this tool, please consider starring the project ⭐
Installing Millennium is only a few steps. See this page for a more detailed guide.
- TypeScript (React) frontend container in Steam
- Lua backend container in usermode
- Foreign function interface binding from Lua to TypeScript and vice versa
- Hook modules in the Steam web browser
- Overwrite/Modify HTTP requests
- Load custom JavaScript (Native) into web browser
- Load custom StyleSheets into web browser
- Manage and load custom themes written in JavaScript and CSS.
- Inject JavaScript modules and CSS modules into specific Steam windows,
- Provide customizable color, style, and javascript options for your theme, letting users personalize their experience without touching any code
Millennium is designed to be fully extensible through plugins. To ensure version compatibility and safety, we maintain a separate, curated PluginDatabase repository.
All plugins in the PluginDatabase are versioned and reviewed to work seamlessly with the current Millennium release, reducing the risk of conflicts or instability when adding new features.
For more related information, checkout the plugin database.
Only languages officially supported by the Steam can be added to the Millennium. Check the list here in the Full Platform Supported Languages section.
To add your spoken language to Millennium, fork this repository and place your language json (based on the english locale) among the current locales. Name the file {your_language}.json where your_language is the API language code from the supported language list and append the target file to the localizationFiles in this file.
Millennium is only maintaining the english language, and if any changes are made to the english locales that don't reflect on a target language, contributors are responsible for updating them.
Creating themes and plugins for Millennium is relatively straight foward. Our documentation goes over the basics of both, and we have examples for both plugins and themes
Supported Platforms:
- Windows (x86/x64/ARM) NT (10 and newer)
- Linux (x86/x86_64/i686/i386)
- macOS (experimental wrapper app install via
./scripts/install_macos.sh, legacy tier0 via--tier0-legacy, development launch via./scripts/launch_macos.sh)
Arch Linux (other distros need equivalent packages):
cmake ninja bun
lib32-gcc-libs lib32-openssl lib32-libidn2 lib32-xz lib32-zstd lib32-brotli lib32-libnghttp2 lib32-libpsl
libx11 libxtst
cmake --preset linux-debug
cmake --build buildFor a release build, use linux-release instead.
After building, run the setup script to symlink the build outputs into Steam's runtime directories:
./scripts/linux/setup_devenv.shThis only needs to be run once — the symlinks point into the build tree, so rebuilding automatically picks up changes without re-running the script. Just restart Steam after rebuilding.
To remove the symlinks and restore Steam to its stock state:
./scripts/linux/destroy_devenv.sh- Visual Studio Build Tools (with the "Desktop development with C++" workload — includes CMake and Ninja, add them to PATH)
- Bun
Open a Developer PowerShell for VS, then:
cmake --preset windows-debug
cmake --build buildFor a release build, use windows-release instead.
On Windows, CMake automatically detects your Steam installation from the registry and outputs binaries directly into Steam's directory. No additional setup is needed — just restart Steam after building.
| Free code signing on Windows provided by SignPath.io, certificate by SignPath Foundation |
|---|