-
-
Notifications
You must be signed in to change notification settings - Fork 29
Open
Labels
bugSomething isn't workingSomething isn't working
Description
What happened?
Description:
When using OpenNow on a 1440p monitor with a 200% scaling factor (HiDPI), the cursor becomes confined to a restricted rectangular zone that is smaller than the window. This happens specifically when the stream resolution is set to 4K (3840x2160) while the monitor is 1440p.
Key Findings:
Constraint area shift: The boundary of the cursor's movement is not static; it shifts its position within the window depending on which side of the screen is clicked first.
Scaling conflict: With 200% scaling active on Gnome/Niri, the 4K stream seems to miscalculate the pointer constraints relative to the 1440p physical display.
Visuals: The cursor appears very small, suggesting the application is rendering the cursor at 4K scale without accounting for the compositor's downscaling to 1440p.
Environment:
OS: CachyOS (Wayland)
Compositors: Gnome and Niri (Consistent behavior on both)
Display: 1440p at 120Hz (System preference)
Scaling: 200%
Stream settings: 4K at 240Hz
App state: Fullscreen
Steps to reproduce:
Set system scaling to 200% on a 1800p monitor.
Launch OpenNow in fullscreen with 4K or more stream settings.
Start BF6 / Silksong but probably any other games .
Observe the cursor being trapped in a sub-rectangle of the screen.
Operating System
macOS
GeForce NOW Tier
Free
Logs (required)
(I had trouble rejoining a session and had to wait for it to be killed before restarting btw)
OpenNOW Logs Export
Generated: 2026-02-26T22:25:45.847Z
Source: main
Total Entries: 82
============================================================
2026-02-26T22:23:31.980Z LOG [main] Resolved membership tier: ULTIMATE
2026-02-26T22:23:32.072Z LOG [Main] Permission check: media from
2026-02-26T22:23:32.072Z LOG [Main] Permission check: media from
2026-02-26T22:23:32.072Z LOG [Main] Permission check: web-app-installation from
2026-02-26T22:23:32.072Z LOG [Main] Permission check: geolocation from
2026-02-26T22:23:32.458Z LOG [main] Loaded 14 providers
2026-02-26T22:23:32.526Z LOG [main] Resolved membership tier: ULTIMATE
2026-02-26T22:23:36.265Z ERROR [main] Error occurred in handler for 'gfn:claim-session': {"httpStatus":400,"statusCode":0,"statusDescription":"UNKNOWN 8A8C0000","unifiedErrorCode":0,"sessionErrorCode":1,"gfnErrorCode":0,"title":"Error","description":"An error occurred (HTTP 400)."}
2026-02-26T22:23:43.692Z ERROR [main] Error occurred in handler for 'gfn:claim-session': {"httpStatus":400,"statusCode":0,"statusDescription":"UNKNOWN 8A8C0000","unifiedErrorCode":0,"sessionErrorCode":1,"gfnErrorCode":0,"title":"Error","description":"An error occurred (HTTP 400)."}
2026-02-26T22:23:47.526Z ERROR [main] Error occurred in handler for 'gfn:claim-session': {"httpStatus":400,"statusCode":0,"statusDescription":"UNKNOWN 8A8C0000","unifiedErrorCode":0,"sessionErrorCode":1,"gfnErrorCode":0,"title":"Error","description":"An error occurred (HTTP 400)."}
2026-02-26T22:23:47.880Z ERROR [main] Error occurred in handler for 'gfn:create-session': {"httpStatus":403,"statusCode":11,"statusDescription":"SESSION_LIMIT_EXCEEDED_STATUS 41F1C0A5","unifiedErrorCode":1106362533,"sessionErrorCode":1,"gfnErrorCode":3237093643,"title":"Session Limit Exceeded","description":"You have reached your session limit. Another session may already be running on your account."}
2026-02-26T22:23:55.607Z ERROR [main] Error occurred in handler for 'gfn:claim-session': {"httpStatus":400,"statusCode":0,"statusDescription":"UNKNOWN 8A8C0000","unifiedErrorCode":0,"sessionErrorCode":1,"gfnErrorCode":0,"title":"Error","description":"An error occurred (HTTP 400)."}
2026-02-26T22:23:58.441Z ERROR [main] Error occurred in handler for 'gfn:claim-session': {"httpStatus":400,"statusCode":0,"statusDescription":"UNKNOWN 8A8C0000","unifiedErrorCode":0,"sessionErrorCode":1,"gfnErrorCode":0,"title":"Error","description":"An error occurred (HTTP 400)."}
2026-02-26T22:25:01.253Z LOG [CloudMatch] resolveMediaConnectionInfo: usage=14 candidate: ip=np-par-07.cloudmatchbeta.nvidiagrid.net, port=48322 (serverIp fallback=np-par-07.cloudmatchbeta.nvidiagrid.net)
2026-02-26T22:25:01.253Z LOG [CloudMatch] toSessionInfo: status=1, queuePosition=n/a, connectionInfo=2 entries, serverIp=np-par-07.cloudmatchbeta.nvidiagrid.net, signalingServer=np-par-07.cloudmatchbeta.nvidiagrid.net:443, signalingUrl=wss://np-par-07.cloudmatchbeta.nvidiagrid.net:443/nvst/
2026-02-26T22:25:01.253Z LOG [CloudMatch] conn: usage=14 ip=null port=322 resourcePath=rtsps://.cloudmatchbeta.nvidiagrid.net:322
2026-02-26T22:25:01.253Z LOG [CloudMatch] conn: usage=14 ip=null port=48322 resourcePath=rtsps://.cloudmatchbeta.nvidiagrid.net:48322
2026-02-26T22:25:03.284Z LOG [CloudMatch] resolveMediaConnectionInfo: usage=14 candidate: ip=[Redacted for privacy].net, port=48322 (serverIp fallback=[Redacted for privacy].net)
2026-02-26T22:25:03.284Z LOG [CloudMatch] toSessionInfo: status=1, queuePosition=n/a, connectionInfo=2 entries, serverIp=[Redacted for privacy].net, signalingServer=[Redacted for privacy].net:443, signalingUrl=wss://[Redacted for privacy].net:443/nvst/
2026-02-26T22:25:03.284Z LOG [CloudMatch] conn: usage=14 ip=null port=322 resourcePath=rtsps://[Redacted for privacy].net:322
2026-02-26T22:25:03.284Z LOG [CloudMatch] conn: usage=14 ip=null port=48322 resourcePath=rtsps://[Redacted for privacy].net:48322
2026-02-26T22:25:05.318Z LOG [CloudMatch] resolveMediaConnectionInfo: usage=14 candidate: ip=[Redacted for privacy].net, port=48322 (serverIp fallback=[Redacted for privacy].net)
2026-02-26T22:25:05.318Z LOG [CloudMatch] toSessionInfo: status=1, queuePosition=n/a, connectionInfo=2 entries, serverIp=[Redacted for privacy].net, signalingServer=[Redacted for privacy].net:443, signalingUrl=wss://[Redacted for privacy].net:443/nvst/
2026-02-26T22:25:05.318Z LOG [CloudMatch] conn: usage=14 ip=null port=322 resourcePath=rtsps://[Redacted for privacy].net:322
2026-02-26T22:25:05.318Z LOG [CloudMatch] conn: usage=14 ip=null port=48322 resourcePath=rtsps://[Redacted for privacy].net:48322
2026-02-26T22:25:07.349Z LOG [CloudMatch] resolveMediaConnectionInfo: usage=14 candidate: ip=[Redacted for privacy].net, port=48322 (serverIp fallback=[Redacted for privacy].net)
2026-02-26T22:25:07.349Z LOG [CloudMatch] toSessionInfo: status=1, queuePosition=n/a, connectionInfo=2 entries, serverIp=[Redacted for privacy].net, signalingServer=[Redacted for privacy].net:443, signalingUrl=wss://[Redacted for privacy].net:443/nvst/
2026-02-26T22:25:07.349Z LOG [CloudMatch] conn: usage=14 ip=null port=322 resourcePath=rtsps://[Redacted for privacy].net:322
2026-02-26T22:25:07.349Z LOG [CloudMatch] conn: usage=14 ip=null port=48322 resourcePath=rtsps://[Redacted for privacy].net:48322
2026-02-26T22:25:09.380Z LOG [CloudMatch] resolveMediaConnectionInfo: usage=14 candidate: ip=[Redacted for privacy].net, port=48322 (serverIp fallback=[Redacted for privacy].net)
2026-02-26T22:25:09.380Z LOG [CloudMatch] toSessionInfo: status=1, queuePosition=n/a, connectionInfo=2 entries, serverIp=[Redacted for privacy].net, signalingServer=[Redacted for privacy].net:443, signalingUrl=wss://[Redacted for privacy].net:443/nvst/
2026-02-26T22:25:09.380Z LOG [CloudMatch] conn: usage=14 ip=null port=322 resourcePath=rtsps://[Redacted for privacy].net:322
2026-02-26T22:25:09.380Z LOG [CloudMatch] conn: usage=14 ip=null port=48322 resourcePath=rtsps://[Redacted for privacy].net:48322
2026-02-26T22:25:11.412Z LOG [CloudMatch] resolveMediaConnectionInfo: usage=14 candidate: ip=[Redacted for privacy].net, port=48322 (serverIp fallback=[Redacted for privacy].net)
2026-02-26T22:25:11.412Z LOG [CloudMatch] toSessionInfo: status=1, queuePosition=n/a, connectionInfo=2 entries, serverIp=[Redacted for privacy].net, signalingServer=[Redacted for privacy].net:443, signalingUrl=wss://[Redacted for privacy].net:443/nvst/
2026-02-26T22:25:11.412Z LOG [CloudMatch] conn: usage=14 ip=null port=322 resourcePath=rtsps://[Redacted for privacy].net:322
2026-02-26T22:25:11.412Z LOG [CloudMatch] conn: usage=14 ip=null port=48322 resourcePath=rtsps://[Redacted for privacy].net:48322
2026-02-26T22:25:13.447Z LOG [CloudMatch] resolveMediaConnectionInfo: usage=14 candidate: ip=[Redacted for privacy].net, port=48322 (serverIp fallback=[Redacted for privacy].net)
2026-02-26T22:25:13.447Z LOG [CloudMatch] toSessionInfo: status=2, queuePosition=n/a, connectionInfo=2 entries, serverIp=[Redacted for privacy].net, signalingServer=[Redacted for privacy].net:443, signalingUrl=wss://[Redacted for privacy].net:443/nvst/
2026-02-26T22:25:13.447Z LOG [CloudMatch] conn: usage=14 ip=null port=322 resourcePath=rtsps://[Redacted for privacy].net:322
2026-02-26T22:25:13.447Z LOG [CloudMatch] conn: usage=14 ip=null port=48322 resourcePath=rtsps://[Redacted for privacy].net:48322
2026-02-26T22:25:13.448Z LOG [Signaling] URL: wss://[Redacted for privacy].net:443/nvst/sign_in?peer_id=peer-8099897058&version=2 (server: [Redacted for privacy].net:443 , signalingUrl: wss://[Redacted for privacy].net:443/nvst/ )
2026-02-26T22:25:13.448Z LOG [Signaling] Connecting to: wss://[Redacted for privacy].net:443/nvst/sign_in?peer_id=peer-8099897058&version=2
2026-02-26T22:25:13.448Z LOG [Signaling] Session ID: 8e019548-3db4-f692-5fb1-e883ec761ec3
2026-02-26T22:25:13.448Z LOG [Signaling] Protocol: x-nv-sessionid.8e019548-3db4-f692-5fb1-e883ec761ec3
2026-02-26T22:25:13.556Z LOG [Signaling] Received OFFER SDP (2730 chars), first 500 chars:
2026-02-26T22:25:13.556Z LOG [main] v=0
o=- 4373647202393833435 2 IN IP4 [Redacted IP]
s=odrerir
t=0 0
a=group:BUNDLE 0 1 2
a=ice-options:trickle
a=ice-lite
a=ice-ufrag:590a27f6
a=ice-pwd:a0514f0a-8cb9-45f1-be11-1696fc2f4200
a=fingerprint:sha-256 BA:35:36:C1:43:47:10:84:62:31:24:FF:08:30:83:00:42:AB:D6:7E:13:04:F9:DD:32:9C:E1:09:4B:AF:DE:2A
a=setup:actpass
m=audio 47998 UDP/TLS/RTP/SAVPF 63 111
c=IN IP4 [Redacted IP]
a=rtcp:47998 IN IP4 [Redacted IP]
a=mid:0
a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-ext
2026-02-26T22:25:13.573Z LOG [Main] Permission check: media from file:///
2026-02-26T22:25:13.573Z LOG [Main] Permission check: media from file:///
2026-02-26T22:25:13.575Z LOG [Main] Permission check: media from file:///
2026-02-26T22:25:13.636Z LOG [Main] Permission check: media from file:///
2026-02-26T22:25:13.650Z LOG [Signaling] Sending local ICE candidate: candidate:3210989404 1 udp 2122063615 [Redacted IP] 43420 typ host generation 0 ufrag pw0c network-id 1 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.650Z LOG [Signaling] Sending local ICE candidate: candidate:3281637765 1 udp 2122265343 fd85:dd57:5f64:0:fae7:d218:d9bc:e157 42078 typ host generation 0 ufrag pw0c network-id 3 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.650Z LOG [Signaling] Sending local ICE candidate: candidate:3454371272 1 udp 2122199807 fdfe:c59a:db50:43df:6d70:5405:ab73:ee2b 60701 typ host generation 0 ufrag pw0c network-id 4 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.650Z LOG [Signaling] Sending local ICE candidate: candidate:312515065 1 udp 2122131711 2a01:e0a:b5b:8180:29d7:498:4d05:be2 41761 typ host generation 0 ufrag pw0c network-id 2 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.680Z LOG [Signaling] Sending local ICE candidate: candidate:271134306 1 udp 1685855999 [Redacted IP] 43420 typ srflx raddr [Redacted IP] rport 43420 generation 0 ufrag pw0c network-id 1 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.771Z LOG [Signaling] Sending local ICE candidate: candidate:3249286596 1 tcp 1518083839 [Redacted IP] 9 typ host tcptype active generation 0 ufrag pw0c network-id 1 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.772Z LOG [Signaling] Sending local ICE candidate: candidate:3176543005 1 tcp 1518285567 fd85:dd57:5f64:0:fae7:d218:d9bc:e157 9 typ host tcptype active generation 0 ufrag pw0c network-id 3 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.772Z LOG [Signaling] Sending local ICE candidate: candidate:3005900624 1 tcp 1518220031 fdfe:c59a:db50:43df:6d70:5405:ab73:ee2b 9 typ host tcptype active generation 0 ufrag pw0c network-id 4 network-cost 10 (sdpMid=0)
2026-02-26T22:25:13.772Z LOG [Signaling] Sending local ICE candidate: candidate:1819245409 1 tcp 1518151935 2a01:e0a:b5b:8180:29d7:498:4d05:be2 9 typ host tcptype active generation 0 ufrag pw0c network-id 2 network-cost 10 (sdpMid=0)
2026-02-26T22:25:18.652Z LOG [Signaling] Sending ANSWER SDP (3044 chars), first 500 chars:
2026-02-26T22:25:18.652Z LOG [main] v=0
o=- 3748159627102816310 2 IN IP4 [Redacted IP]
s=-
t=0 0
a=group:BUNDLE 0 1 2
a=msid-semantic: WMS
m=audio 43420 UDP/TLS/RTP/SAVPF 63 111
c=IN IP4 [Redacted IP]
b=AS:128
a=rtcp:9 IN IP4 [Redacted IP]
a=candidate:3210989404 1 udp 2122063615 [Redacted IP] 43420 typ host generation 0 network-id 1 network-cost 10
a=candidate:3281637765 1 udp 2122265343 fd85:dd57:5f64:0:fae7:d218:d9bc:e157 42078 typ host generation 0 network-id 3 network-cost 10
a=candidate:3454371272 1 udp 2122199807 fdfe:c59a
2026-02-26T22:25:18.652Z LOG [Signaling] Sending nvstSdp (3285 chars):
2026-02-26T22:25:18.653Z LOG [main] v=0
o=SdpTest test_id_13 14 IN IPv4 [Redacted IP]
s=-
t=0 0
a=general.icepassword: [Redacted for privacy]
a=general.iceUserNameFragment:pw0c
a=general.dtlsFingerprint:7C:91:1C:3F:4A:D7:7D:D1:A2:88:96:2B:D3:38:19:0A:15:1E:8A:3F:D5:1F:2C:3C:10:B7:2C:EB:3F:86:7A:A7
m=video 0 RTP/AVP
a=msid:fbc-video-0
a=vqos.fec.rateDropWindow:10
a=vqos.fec.minRequiredFecPackets:2
a=vqos.fec.repairMinPercent:5
a=vqos.fec.repairPercent:5
a=vqos.fec.repairMaxPercent:35
a=vqos.drc.enable:0
a=vqos.dfc.enable:0
a=video.dx9EnableNv12:1
a=video.dx9EnableHdr:1
a=vqos.qpg.enable:1
a=vqos.resControl.qp.qpg.featureSetting:7
a=bwe.useOwdCongestionControl:1
a=video.enableRtpNack:1
a=vqos.bw.txRxLag.minFeedbackTxDeltaMs:200
a=vqos.drc.bitrateIirFilterFactor:18
a=video.packetSize:1140
a=packetPacing.minNumPacketsPerGroup:15
a=bwe.iirFilterFactor:8
a=video.encoderFeatureSetting:47
a=video.encoderPreset:6
a=vqos.resControl.cpmRtc.badNwSkipFramesCount:600
a=vqos.resControl.cpmRtc.decodeTimeThresholdMs:9
a=video.fbcDynamicFpsGrabTimeoutMs:18
a=vqos.resControl.cpmRtc.serverResolutionUpdateCoolDownCount:12000
a=video.enableNextCaptureMode:1
a=vqos.maxStreamFpsEstimate:240
a=video.videoSplitEncodeStripsPerFrame:3
a=video.updateSplitEncodeStateDynamically:1
a=vqos.adjustStreamingFpsDuringOutOfFocus:1
a=vqos.resControl.cpmRtc.ignoreOutOfFocusWindowState:1
a=vqos.[Redacted for privacy]:1
a=vqos.resControl.cpmRtc.featureMask:0
a=vqos.resControl.cpmRtc.enable:0
a=vqos.resControl.cpmRtc.minResolutionPercent:100
a=vqos.resControl.cpmRtc.resolutionChangeHoldonMs:999999
a=packetPacing.numGroups:5
a=packetPacing.maxDelayUs:1000
a=packetPacing.minNumPacketsFrame:10
a=video.rtpNackQueueLength:1024
a=video.rtpNackQueueMaxPackets:512
a=video.rtpNackMaxPacketCount:25
a=vqos.drc.qpMaxResThresholdAdj:4
a=vqos.grc.qpMaxResThresholdAdj:4
a=vqos.drc.iirFilterFactor:100
a=vqos.drc.minQpHeadroom:20
a=vqos.drc.lowerQpThreshold:100
a=vqos.drc.upperQpThreshold:200
a=vqos.drc.minAdaptiveQpThreshold:180
a=vqos.drc.qpCodecThresholdAdj:0
a=vqos.drc.qpMaxResThresholdAdj:20
a=vqos.dfc.minQpHeadroom:20
a=vqos.dfc.qpLowerLimit:100
a=vqos.dfc.qpMaxUpperLimit:200
a=vqos.dfc.qpMinUpperLimit:180
a=vqos.dfc.qpMaxResThresholdAdj:20
a=vqos.dfc.qpCodecThresholdAdj:0
a=vqos.grc.minQpHeadroom:20
a=vqos.grc.lowerQpThreshold:100
a=vqos.grc.upperQpThreshold:200
a=vqos.grc.minAdaptiveQpThreshold:180
a=vqos.grc.qpMaxResThresholdAdj:20
a=vqos.grc.qpCodecThresholdAdj:0
a=video.minQp:25
a=video.enableAv1RcPrecisionFactor:1
a=video.clientViewportWd:2560
a=video.clientViewportHt:1600
a=video.maxFPS:240
a=video.initialBitrateKbps:105000
a=video.initialPeakBitrateKbps:150000
a=vqos.bw.maximumBitrateKbps:150000
a=vqos.bw.minimumBitrateKbps:52500
a=vqos.bw.peakBitrateKbps:150000
a=vqos.bw.serverPeakBitrateKbps:150000
a=vqos.bw.enableBandwidthEstimation:1
a=vqos.bw.disableBitrateLimit:0
a=vqos.grc.maximumBitrateKbps:150000
a=vqos.grc.enable:0
a=video.maxNumReferenceFrames:4
a=video.mapRtpTimestampsToFrames:1
a=video.encoderCscMode:3
a=video.dynamicRangeMode:0
a=video.bitDepth:10
a=video.scalingFeature1:1
a=video.prefilterParams.prefilterModel:0
m=audio 0 RTP/AVP
a=msid:audio
m=mic 0 RTP/AVP
a=msid:mic
a=rtpmap:0 PCMU/8000
m=application 0 RTP/AVP
a=msid:input_1
a=ri.partialReliableThresholdMs:300
2026-02-26T22:25:18.766Z LOG [Signaling] Received remote ICE candidate: candidate:1467211956 1 udp 2130569217 [Redacted IP] 13111 typ host
2026-02-26T22:25:24.347Z LOG [Main] Permission check: automatic-fullscreen from file:///
2026-02-26T22:25:24.348Z LOG [Main] Permission request: fullscreen from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:24.348Z LOG [Main] Granting permission: fullscreen
2026-02-26T22:25:24.350Z LOG [Main] Permission request: keyboardLock from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:24.350Z LOG [Main] Granting permission: keyboardLock
2026-02-26T22:25:24.354Z LOG [Main] Permission request: keyboardLock from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:24.354Z LOG [Main] Granting permission: keyboardLock
2026-02-26T22:25:24.356Z LOG [Main] Permission request: pointerLock from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:24.356Z LOG [Main] Granting permission: pointerLock
2026-02-26T22:25:26.870Z LOG [Main] Permission request: keyboardLock from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:26.870Z LOG [Main] Granting permission: keyboardLock
2026-02-26T22:25:26.881Z LOG [Main] Permission request: pointerLock from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:26.881Z LOG [Main] Granting permission: pointerLock
2026-02-26T22:25:26.881Z LOG [Main] Permission request: pointerLock from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:26.881Z LOG [Main] Granting permission: pointerLock
2026-02-26T22:25:29.500Z LOG [Main] Permission request: keyboardLock from file:///tmp/.mount_opennof4a7lA/resources/app.asar/dist/index.html
2026-02-26T22:25:29.501Z LOG [Main] Granting permission: keyboardLockScreenshots (optional)
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working