Skip to content

Apply themes/skins/customize Steam® after the 2023-04-27 Chromium UI update

License

Notifications You must be signed in to change notification settings

shdwmtr/millennium

Repository files navigation

   Millennium for Steam®

Static Badge Static Badge Static Badge Static Badge

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

Installation

Automatic Installation (Recommended)

Installing Millennium is only a few steps. See this page for a more detailed guide.

Manual Installation

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.

 

Core Features

    • 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

 

Creating Plugins & Themes

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

 

Platform Support

Supported Platforms:

  • Windows (x86/x64/ARM) NT (10 and newer)
  • Linux (x86/x86_64/i686/i386)
  • OSX (Support planned, WIP)

 

Building from source

Windows 10/11

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:

Build Steps

  1. Download and install MSYS2

  2. Download and install Visual Studio Build Tools

  3. Run Developer PowerShell for VS 2022 installed from the previous step.

  4. Navigate to somewhere you want to build to

  5. 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
  6. Now, open MSYS2, any of the shells should work fine.

  7. 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
  8. 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

  9. Clone the Millennium repository

    $ git clone https://github.com/shdwmtr/millennium --recursive
    $ cd millennium
  10. From the previous step, where we built python, copy the files to %MILLENNIUM_SRC_DIR%/vendor/python

  11. Build Millennium

    $ cmake --preset="windows-mingw-debug"
    # or for release
    $ cmake --preset="windows-mingw-release"
    $ cmake --build ./build
  12. 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.