GModPatchTool: replacing Garry's Mod's bundled Chromium with a patched one
🇬🩹🛠 Patches for Garry's Mod. Updates/Improves CEF and Fixes common launch/performance issues (esp. on Linux/Proton/macOS). Formerly GModCEFCodecFix.
At a glance
- What is it?
- GModPatchTool is a Rust application that patches a Garry's Mod install in place, replacing its Chromium Embedded Framework build with a newer one that has proprietary codecs, Widevine and Site Isolation enabled, and adding launch options and platform fixes for Linux, Proton and macOS. It is a client side patch, it is GPL-3.0, and it breaks addons that call DHTML JavaScript functions too early.
- Who is it for?
- Adopt GModPatchTool if you run Garry's Mod on Linux, macOS or Proton and you want a current CEF with working H.264 and AAC playback, in-game HTML debugging, or the platform specific fixes. Do not adopt it if your addons call DHTML JavaScript functions before the page has begun loading, because Site Isolation is re-enabled and that pattern stops working.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem: a game that ships a frozen browser engine
Garry's Mod is built on Source, and its in-game web panels are drawn by the Chromium Embedded Framework, CEF, a copy of Chromium that Valve bundles with the game. A bundled CEF is convenient for the developer and bad for the player, because it does not move.
That shows up in concrete ways. Web panels in the game play YouTube poorly or not at all without proprietary codecs, because a Chromium build without H.264 and AAC cannot decode them. On macOS and Linux the game can fail to launch or lose its main menu. Under Proton the debug and console fonts render as tiny or broken text because the Lucida Console fonts the game expects are not present.
GModPatchTool is the community answer. It is created by Solstice Game Studios, and the repository description is a one line statement of intent: it patches for Garry's Mod, updates and improves CEF, and fixes common launch and performance issues, especially on Linux, Proton and macOS. The project used to be called GModCEFCodecFix, which is a good hint at the original problem, and the documentation opens by saying it does what Facepunch do not.
The audience is players, and the distribution is deliberately simple. You download the latest release, run the application, and the game is patched. The deeper guide lives on the project's own site at solsticegamestudios.com/fixmedia/. The tool is written in Rust, the licence is GPL-3.0, and the last push was on 2026-10-20, with the most recent release being 20260722 from 2026-07-22.
What the CEF patch changes inside the game
The core of the tool is replacing the CEF build and the libraries around it, and the list of what that buys you is specific.
CEF is updated to 137.0.19, which corresponds to Chromium 137.0.7151.121. On top of that, the patch enables the proprietary video and audio codecs, which is the H.264 and AAC support that makes most web video work. Widevine support is enabled as well, though the documentation is careful to add that there is no VMP, so Netflix and similar services do not currently work.
The rendering side gets Software WebGL enabled, partial GPU acceleration, and an improvement to performance for texture updates, which matters because a game like this redraws a lot of web surfaces. Hardware media keys control of media is disabled, and Site Isolation is re-enabled, which the documentation calls a security feature and notes that some sites require it to function.
That last item is the one with consequences, and the project is direct about it further down. The patch also includes a fix for mainmenu.lua that addresses Garry's Mod's own issues with not using the correct approach, and that is described as a breaking change for any addon that does not handle HTML panel states properly for JavaScript.
Site Isolation destroys JavaScript state on navigation, in the way a real browser does. So if an addon calls DHTML.AddFunction, DHTML.QueueJavascript or DHTML.RunJavascript before the page begins loading, it will not work. The requirement is to call them in HTML.OnBeginLoadingDocument or later.
In other words, the tool moves the game closer to browser behaviour, and addons that relied on the older, laxer behaviour break.
The launch options the patch adds, and why they are opt-in
Besides replacing files, the tool adds launch options to the game, and each one is a decision rather than a default.
The -chromium_fps_max option sets a maximum internal FPS limit for all CEF web panels. The default is 60. The documentation describes the trade explicitly: it may improve game framerate in exchange for less web content framerate. That is the right way to frame a performance option, because the answer depends on whether you are looking at the 3D scene or at a browser panel.
The -chromium_remote_debugging_port option starts CEF's Remote Debugging server, the Chrome DevTools interface, on the port you give, so you can inspect the in-game HTML panels. It is off by default and the port has to be between 1024 and 65535, with 9222 given as the example.
The -chromium_mute_audio option mutes all CEF web panel audio for that game instance, and the stated use is running a second Garry's Mod instance with -multirun without doubled-up sound. This is the kind of option that only makes sense once you have tried it and found the problem.
There are also cross-platform fixes that apply to every platform. The tool fixes various launch and missing main menu issues on macOS and Linux, and it replaces the debug and console fonts with PT Mono to improve consistency and readability across platforms, which the documentation singles out as particularly important for Proton, where text using those fonts is broken or tiny out of the box because Lucida Console is not present.
The Linux and macOS work, including the option that is disabled by default
The Linux section has one entry that stands out, and it is worth reading carefully before you use it.
The Steam Overlay, MangoHud and similar overlays can be fixed by putting this in Garry's Mod's Steam launch options:
GMOD_ENABLE_LD_PRELOAD=1 %command%The tool says it is disabled by default because it could just crash Garry's Mod instead. That is an unusually candid admission for a launcher patch, and it tells you the mechanism: it is a dynamic library preload, which means it runs code before the game does, which is exactly the kind of thing that breaks on a new glibc or a new Steam runtime. The documentation frames it as something to try, with a try it, rather than as a default.
The rest of the Linux work is more contained. mesa_glthread=true is set for more OpenGL performance with Mesa drivers. The tool sets ulimit -n to its own hard limit to fix issues opening and mounting many files, which matters for large addon collections and Lua autorefresh. It also adds various commented exports to hl2.sh to help multi-GPU users point the game at the right GPU, typically on laptops, and it explains in issue 188 why those exports are not turned on by default.
On macOS there is one job: pre-warming the Rosetta translations of the patched libraries on Apple Silicon, so they do not stall the game's first launch. The patch introduces new libraries, and translating them at first launch is what produces a long startup on an Apple Silicon Mac, so the tool does the translation in advance. It can be skipped with the --skip-rosetta-prewarm argument.
The theme patch, and the one switch that turns the cosmetic changes off
The visual patches are the part most likely to be disputed, because they change how the game looks rather than how it runs.
The tool improves the Legacy VGUI Theme with a custom SourceScheme.res, and replaces the debug and console fonts with PT Mono. Both are reversible together, with a single argument, and the documentation says so directly: if you do not like the theme changes or the font replacement, you can disable those patches by using the --no-sourcescheme argument when running the tool.
That is a well handled design choice, because the two changes are related. A theme that references a font the system does not have is exactly the failure Proton users hit, so tying the font swap to the theme makes the switch meaningful: with it you get the old look and the old font behaviour, without it you get both improvements.
The rest of the command line is a list of narrowly scoped switches, and each one exists because of a specific situation. There is --launch-gmod to launch the game after a successful patch, and --skip-exit-prompt to skip the press Enter to exit prompt on tool exit. There is --steam-path to force a specific Steam install path, which the documentation notes is a Steam install path and not a Steam library path, a distinction that catches people out. There is --skip-clear-chromiumcache to skip deleting the ChromiumCache directories and the chromium log from the Garry's Mod directory, --disable-cache to force a redownload of all patch files from scratch and clear the tool's own cache on exit, and --no-system-proxy for machines where the OS proxy configuration gets in the way of the downloads.
The last one is --ignore-gmod-running, which applies the patches even if Garry's Mod is currently running, with the warning that it may cause issues.
For addon developers: detection, the CEF fork, and the exit code
The repository has a section addressed to developers rather than players, and it contains the text that matters if you maintain a Garry's Mod addon.
First, the patch is client side only. The documentation is emphatic about that, and it tells developers to direct players to the player instructions rather than bundling the tool.
Second, there is a detection example. A Lua example in the examples directory shows how to check whether the CEF in use is the patched one, which is what an addon author needs if it wants to behave differently in each case.
Third, and most important, is the Site Isolation warning. If an addon calls DHTML.AddFunction, DHTML.QueueJavascript or DHTML.RunJavascript before the page begins loading, it will not work under the patched CEF, because Site Isolation destroys JavaScript state on navigation the way a real browser does. The requirement is to make those calls in HTML.OnBeginLoadingDocument or later. The tool includes a patch for mainmenu.lua that fixes Garry's Mod's own incorrect approach, and that is described as a breaking change for any addon that does not handle HTML panel states properly for JavaScript.
For anyone building the tool themselves, the repository points at a fork of gmod-html and at the CEF build scripts in the cef_build directory, and the documentation notes that the tool exits non-zero if patching fails, in case you are scripting around it. That single detail is what makes the tool usable in an automated setup, and it is also why the --ignore-gmod-running flag comes with a warning attached.
The Rust implementation is modern. The package version is 20260722.0.0 and the edition is 2024, and the dependencies show a real desktop application: clap for the command line, iced for the optional graphical interface, reqwest with rustls for downloads, indicatif for progress reporting, and blake3 for hashing, alongside qbsdiff for binary patching and rayon for parallelism.
Licence, maintenance and the boundary between a fix and a dependency
The licence is GPL-3.0, and the package metadata is more specific than that, declaring GPL-3.0-only, with the LICENSE.txt file at the root of the repository. Since the tool distributes modified copies of Chromium libraries, the copyleft terms are the reason it is published as a source project rather than a closed installer, and anyone who mirrors the binaries has to respect them.
The project is not archived and the last push was on 2026-10-20. The releases are dated by day rather than by semver, with 20260722 from 2026-07-22, 20260623 from 2026-06-23 and 20251102 from 2025-11-03, and the version string in the package metadata follows the same convention. The repository also carries an AI_POLICY.md, a SECURITY.md, a rustfmt.toml and a .cargo/ directory, and the logos are present in every format a desktop application needs, including a Windows executable manifest.
The documentation is also honest about the project's funding, saying the work is 100 percent funded by users of the tool, with a donation link. For a project that patches a game its users do not own, that framing is the reason it can stay free.
The boundary worth naming is between a fix and a dependency. This tool is a patcher, and it has to be re-run when the game updates, because the files it replaces come back with every patch. That is a different maintenance model from a library you add to a manifest, and a different failure mode: a game update can break the patch, and the tool then needs a new release. For a player, that is a download. For a studio shipping a game, it is a support question, and the honest answer is that the tool is a community fix for an upstream gap rather than something to build a product on.
Editorial conclusion
Adopt GModPatchTool if you run Garry's Mod on Linux, macOS or Proton and you want a current CEF with working H.264 and AAC playback, in-game HTML debugging, or the platform specific fixes. Do not adopt it if your addons call DHTML JavaScript functions before the page has begun loading, because Site Isolation is re-enabled and that pattern stops working. Before you patch, read the option list, decide whether you want the theme and font changes, and check the launch options you are about to add to your Steam launch configuration, since some of them are opt-in for a reason.
Frequently asked questions
What does GModPatchTool actually change in Garry's Mod?
It replaces the bundled Chromium Embedded Framework with a build updated to CEF 137.0.19 with proprietary codecs such as H.264 and AAC enabled, Widevine support without VMP, Software WebGL, partial GPU acceleration and Site Isolation re-enabled, and it applies launch, theme, font and platform specific fixes.
Will my Garry's Mod addons still work after patching?
Not all of them. Because Site Isolation is re-enabled, an addon that calls DHTML.AddFunction, DHTML.QueueJavascript or DHTML.RunJavascript before the page begins loading will stop working, and the project describes the mainmenu.lua fix as a breaking change for addons that do not handle HTML panel states properly for JavaScript.
How do I install GModPatchTool?
Download the latest release and run the application, which patches the game in place. A more detailed guide is on the project site at solsticegamestudios.com/fixmedia/, and the tool exits with a non-zero status if patching fails so it can be scripted around.
What command line options does GModPatchTool accept?
Options include --launch-gmod, --skip-exit-prompt, --steam-path, --no-sourcescheme to skip the theme and font changes, --skip-clear-chromiumcache, --skip-rosetta-prewarm, --disable-cache, --no-system-proxy and --ignore-gmod-running, which applies the patches even if the game is running and may cause issues.
What licence is GModPatchTool released under?
GPL-3.0, declared as GPL-3.0-only in the package metadata, with the full licence text in the LICENSE.txt file at the root of the repository. The project is open source and free for the Garry's Mod community.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/solsticegamestudios-gmodpatchtool)Was this useful?