Skip to content

Instantly share code, notes, and snippets.

@a9udn9u
Last active November 3, 2025 00:01
Show Gist options
  • Select an option

  • Save a9udn9u/85e0c8e863db85c5b62320766bd7b2e9 to your computer and use it in GitHub Desktop.

Select an option

Save a9udn9u/85e0c8e863db85c5b62320766bd7b2e9 to your computer and use it in GitHub Desktop.
GeForce Now 1440P on Linux Chrome
import json
import re
from mitmproxy import http
url_pattern = re.compile(r"^.*\.nvidiagrid.net/v2/session")
user_agent_pattern = re.compile(r"(Mozilla\/[\d\.]+) \(.+?\)")
def request(flow: http.HTTPFlow) -> None:
# Check if the request matches the regex pattern
if url_pattern.match(flow.request.pretty_url):
flow.request.headers['nv-device-os'] = 'WINDOWS'
flow.request.headers['sec-ch-ua-platform'] = '"WINDOWS"'
flow.request.headers['sec-ch-ua-platform-version'] = '14.0.0'
if "user-agent" in flow.request.headers:
flow.request.headers["user-agent"] = user_agent_pattern.sub(
r'\1 (Windows NT 10.0; Win64; x64)',
flow.request.headers["user-agent"])
if flow.request.headers.get("content-type") == "application/json":
try:
body = json.loads(flow.request.content)
if body.get("sessionRequestData", {}).get("clientRequestMonitorSettings", None) is not None:
body["sessionRequestData"]["clientRequestMonitorSettings"] = [
{
"heightInPixels": 1440,
"framesPerSecond": 120,
"widthInPixels": 2560
}
]
flow.request.content = json.dumps(body).encode("utf-8")
except json.JSONDecodeError:
pass
function FindProxyForURL(url, host) {
var proxy = "PROXY <your proxy server IP>:<your proxy server port>";
if (/^https:\/\/.+\.nvidiagrid.net/.test(url)) {
// Should only proxy /v2/session, but the URL path is removed by Chrome
return proxy;
}
return "DIRECT";
}
@lordgreg
Copy link

lordgreg commented Apr 4, 2025

For me the resolution stayed at 2560x1440 and there is no major input lag (except once in a while for a second or so). Maybe you are having network issues? What is the report ping? Does it go up during those times?

Hi. No, I, sadly have this issue without any package loss or higher ping. Actually, with fibreoptics, my ping is at constant 5ms connected to the Frankfurt server. I even tried Warsaw, with the same result. I tried different games, same result. Also tried Brave, Chrome. No changes. :(

@Arclight83
Copy link

I'm having the same issue. I tried it with a Mint 22.1 Live ISO with persistence on a USB3.0 connected HDD. The games start fine with 1440p (H.264, 8-bits too), but then they drop to 1080p and even lower. Mitmproxy shows that the proxy is filtering nvidiagrid.net as expected. I've tried Google Chrome and Microsoft Edge stable, and I've had the same issue with both. I also tried lowering the frequency to 60 Hz instead of 120 Hz (my screen supports 165 Hz) and disabling V-Sync in different games (C2077, Outlaws, BG3, etc.), which seemed to last a few seconds more, but didn't help either at the end.
I'm wondering if it could be a performance bottleneck with mimproxy on my PC, which isn't the newest, and also the fact that it's not a full Linux install? Of course, GFN runs fine with the same PC at 1440p under W10 with a 1Gbps internet connection.

@kubrickfr
Copy link

@lordgreg the reason why nvidia disabled in on linux is because support for video hardware decoding support is very patchy. You must absolutely have it enabled in chrome, or else you'll have terrible lag and resolution will drop.

Go to chrome://gpu/ in Chrome and look if the Video Acceleration Information section is populated.

@SebastianFalborg
Copy link

This script does not seem to work anymore.
Can anyone confirm if this works?

@finsterdexter
Copy link

Yes, I use this almost every day to get 2560x1440 in destiny 2.

@kubrickfr
Copy link

This script does not seem to work anymore. Can anyone confirm if this works?

Confirmed to work.

@lordgreg
Copy link

lordgreg commented May 16, 2025

how do you use it in the chrome then in fullscreen mode? how do you prevent when escape is being pressed that you dont get thrown out of full screen?

btw, this looks okay:

image

Additionally,

I've tested two browsers, Chrome and Brave from Flatpak, both having GPU Acceleration enabled, the installed RPM version of google chrome. All 3 of them yielded exactly the same result, lowering the resolution to unbearable 720 as soon as I started moving.

Unsure what is causing this, maybe my graphics card, maybe some entry missing under gpuinfo.

I'll probably give up eventually and reboot to windows when I'll want to play, or just move to boosteroid.

Thank you all for the suggestions and support :)

@Pointing8422
Copy link

Is there any way to force 10 bit color support? Btw, the script for me works fine, 2k and 120 fps.

@kubrickfr
Copy link

kubrickfr commented May 18, 2025

@lordgreg

btw, this looks okay:

No it does not. "Video Decode" here, means that the feature is enabled. As I wrote, you need to have codecs listed in Video Acceleration Information

@lordgreg
Copy link

hi @kubrickfr and thank you for your feedback. Can you please post a screenshot on how this looks on your side?

Thank you in advance! 👍

@kubrickfr
Copy link

@lordgreg

Working:
image

Not working:
image

@SebastianFalborg
Copy link

I have tested this with the Nvidia GeForce app, Microsoft Edge and Google Chrome.
I have followed the guides completely, but it still isn't working.
The problem is that the requests the script intercepts, doesn't have content, so it can't replace that.
I have tried just changing the script so it just replaces the headers, and I see it getting replaced with "WINDOWS", but this doesn't change anything.
Could it be a regional thing?
I am from Denmark.

@kubrickfr
Copy link

kubrickfr commented Jun 26, 2025

I have tested this with the Nvidia GeForce app, Microsoft Edge and Google Chrome.

How do you run Microsoft Edge on Linux? This hack is to allow Linux users to run at resolutions above 1080p, if you're already on Windows, this will do nothing for you.

@SebastianFalborg
Copy link

I have tested this with the Nvidia GeForce app, Microsoft Edge and Google Chrome.

How do you run Microsoft Edge on Linux? This hack is to allow Linux users to run at resolutions above 1080p, if you're already on Windows, this will do nothing for you.

https://www.microsoft.com/en-us/edge/download?form=MA13FJ
You can just download it here. There is a deb file.
It is also available as a Flatpack on Flathub.

@kubrickfr
Copy link

Ok, I didn't know that. I'm using it with the EU Central servers, it works well for me.

@SebastianFalborg
Copy link

SebastianFalborg commented Jun 26, 2025

This is my GET to https://prod.cloudmatchbeta.nvidiagrid.net/v2/session

GET /v2/session HTTP/1.1
Host: prod.cloudmatchbeta.nvidiagrid.net
Connection: keep-alive
nv-client-type: BROWSER
authorization: ....
sec-ch-ua-platform: "WINDOWS"
x-device-id: 5cb52e94-c699-43bd-8e32-6d018420c64d
sec-ch-ua: "Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"
sec-ch-ua-mobile: ?0
traceparent: 00-12da1eb766e07aabde28b923189007e8-c8cf635b03a8dcd1-01
nv-client-id: ec7e38d4-03af-4b58-b131-cfb0495903ab
nv-device-type: DESKTOP
content-type: application/json
nv-device-os: WINDOWS
nv-device-model: UNKNOWN
nv-client-streamer: WEBRTC
nv-browser-type: CHROME
nv-client-version: 2.0.75.146
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
nv-device-make: UNKNOWN
Accept: /
Origin: https://play.geforcenow.com
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
sec-ch-ua-platform-version: 14.0.0

And this is the response

HTTP/1.1 200 OK
cache-control: private
content-type: application/json
server: Microsoft-IIS/10.0
x-aspnet-version: 4.0.30319
x-powered-by: ASP.NET
access-control-allow-origin: *
access-control-allow-headers: Content-Type, Authorization, Connection, User-Agent
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
date: Thu, 26 Jun 2025 08:45:58 GMT
content-length: 199
set-cookie: SERVERID=pm10_192_13_22; path=/

{"sessions":[],"requestStatus":{"statusCode":1,"statusDescription":"SUCCESS_STATUS","unifiedErrorCode":0,"requestId":"59d5bc54-247e-4a6a-8531-1ec3c3b41e25","serverId":"NP-SOF-02","countryCode":null}}

I feel like I have tried everything at this point. I am not sure what is wrong here.

@kubrickfr
Copy link

It's normal for most requests to not match the criteria, only one specific request at the start of the gaming sessions will be modified.

@SebastianFalborg
Copy link

@kubrickfr I feel like this is not really explained well anywhere. I was looking in the settings of GeForce Now, and it consistently showed 60 FPS and 1200p as max.
I have been trying this for so long.

@kubrickfr
Copy link

kubrickfr commented Jun 27, 2025 via email

@kubrickfr
Copy link

@SebastianFalborg
Settings:
image

In-game stats:
image

Again, do check that you have video acceleration properly enable in chrome

@SebastianFalborg
Copy link

@kubrickfr Sorry I was not clear. I understand how it works now.
I am getting 1440p 120fps in Witcher 3, and everything works.
But I was just frustrated because I have been trying absolutely everything to get the settings to show 1440p.
I don't feel like it was very well explained that it would look wrong in the settings, but correct in the game.

@FossPrime
Copy link

FossPrime commented Oct 13, 2025

https://chromewebstore.google.com/detail/modify-http-header/pefdbdgalcpplfidblkgpjlpggfepipd

Also works... .*\.(geforcenow\.com)|(nvidia\.com)|(nvidiagrid\.net)|(geforce\.com)
Screenshot From 2025-10-13 16-31-40

This leads to a playable 1440p at 45mbps... at 75mbps the input latency is rediculously high. On the same machine with wIndows, I can comfortably run 100mbps, strange as the fast.com loaded latency speed tests are very close between OSs. I tried Proton unsuccessfully.

@kubrickfr
Copy link

@FossPrime the reason why you're seeing high input latency is most likely because you don't have hardware acceleration.
See my previous comments: this one, that one

Nice that we don't need mitmproxy any more!

@fobiat
Copy link

fobiat commented Oct 15, 2025

https://chromewebstore.google.com/detail/modify-http-header/pefdbdgalcpplfidblkgpjlpggfepipd

Also works... .*\.(geforcenow\.com)|(nvidia\.com)|(nvidiagrid\.net)|(geforce\.com) Screenshot From 2025-10-13 16-31-40

This leads to a playable 1440p at 45mbps... at 75mbps the input latency is rediculously high. On the same machine with wIndows, I can comfortably run 100mbps, strange as the fast.com loaded latency speed tests are very close between OSs. I tried Proton unsuccessfully.

Any chance you could share more info on what you put on the headers? I've added "Chrome OS" & "CHROMEOS" but unable to identify the others but t;s not currently working thanks :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment