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 ⭐
millennium.mp4
Installing Millennium is only a few steps. See this page for a more detailed guide.
For normal users, installing via the installers makes the most sense. However when wanting to either develop Millennium, or when the installers do not work, this option can be used. Check our documentation for a guide on how to do this.
-
- TypeScript (React) frontend container in Steam
- Python backend container in usermode
- Foreign function interface binding from Python to JavaScript 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 user themes into Steam
- Manage custom plugins for steam
- Maintain theme & plugin versions.
- Manage embedded Python installation
- Manage Millennium Python Developer Tools
- Custom package manager for all plugins
Creating themes and plugins for Millennium is relatively straight foward. Our documentation goes over the basics of both, and we have examples for both in examples
Supported Platforms:
- Windows (x86/x64/ARM) NT (10 and newer)
- Linux (x86/x86_64/i686/i386)
- OSX (Support planned, WIP)
Building Millennium will require a long list of steps, however everything should work smoothly given you follow the instructions
The following guide includes the installation of the following:
- MSYS2 (MinGW32 specifically)
- Visual Studio Build Tools
-
Download and install MSYS2
-
Download and install Visual Studio Build Tools
-
Run
Developer PowerShell for VS 2022
installed from the previous step. -
Navigate to somewhere you want to build to
-
Next, open Powershell to download and build Python 3.11.8 (Win32).
-
Download & Extract Python 3.11.8
$ curl -o python3.11.8.tgz https://www.python.org/ftp/python/3.11.8/Python-3.11.8.tgz $ tar -xzvf python3.11.8.tgz $ cd python3.11.8
-
Update Build Configuration to be MultiThreaded
$ (Get-Content "PCbuild/pythoncore.vcxproj" -Raw) -replace '</ClCompile>', '<RuntimeLibrary Condition="`$(Configuration)|`$(Platform)"=="Release|Win32">MultiThreaded</RuntimeLibrary><RuntimeLibrary Condition="`$(Configuration)|`$(Platform)"=="Debug|Win32">MultiThreadedDebug</RuntimeLibrary></ClCompile>' | Set-Content "PCbuild/pythoncore.vcxproj"
-
Bootstrap Python builder
$ ./PCbuild/get_externals.bat
-
Build Python
$ msbuild PCBuild/pcbuild.sln /p:Configuration=Release /p:Platform=Win32 /p:RuntimeLibrary=MT $ msbuild PCBuild/pcbuild.sln /p:Configuration=Debug /p:Platform=Win32 /p:RuntimeLibrary=MT
-
Check Python version
$ ./PCbuild/win32/python.exe --version
-
Check the following items have been built, you'll need them later
# Release binaries, required for building Millennium in release mode PCbuild/win32/python311.dll PCbuild/win32/python311.lib # Debug binaries, required for building Millennium in debug mode PCbuild/win32/python311_d.dll PCbuild/win32/python311_d.lib
-
-
Now, open MSYS2, any of the shells should work fine.
-
Run the following and close the shell.
$ pacman -Syu $ pacman -S mingw-w64-i686-cmake $ pacman -S --needed base-devel mingw-w64-i686-toolchain $ pacman -S git
-
Open CMD, and navigate to somewhere you want to build millennium and then run:
C:\msys64\msys2_shell.cmd -defterm -no-start -mingw32
this will put you in the MinGW shell -
Clone the Millennium repository
$ git clone https://github.com/shdwmtr/millennium --recursive $ cd millennium
-
From the previous step, where we built python, copy the files to
%MILLENNIUM_SRC_DIR%/vendor/python
-
Build Millennium
$ cmake --preset="windows-mingw-debug" # or for release $ cmake --preset="windows-mingw-release" $ cmake --build ./build
-
Next, you'll need to build Millenniums internal plugin from source. You can install NodeJs from MinGW, or you could use your local install from PowerShell/CMD
$ cd "%MILLENNIUM_SRC_DIR%/assets" $ npm install $ npm run dev
Millennium expects these shim assets to be at
%MILLENNIUM_DIR%/ext/data/assets
where
%MILLENNIUM_DIR%
is:- Steam path (default
C:\Program Files (x86)\Steam
) on Windows ~/.millennium
on Unix
You can either symlink them or copy them over.
- Steam path (default