Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Nonary/ResolutionAutomation: Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required · GitHub
Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Nonary/ResolutionAutomation: Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required · GitHub
Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Nonary/ResolutionAutomation: Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required · GitHub
Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - Nonary/ResolutionAutomation: Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required · GitHub
Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Nonary/ResolutionAutomation: Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required · GitHub
Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Nonary/ResolutionAutomation: Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required · GitHub
Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - Nonary/ResolutionAutomation: Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required · GitHub
Skip to content

Repository files navigation

Host Resolution Matching for Moonlight Streaming

This script changes your host resolution to match exactly with Moonlight's resolution. This is mostly used for users who have different aspect ratios between the client and host, or anyone who wishes to match the resolution while streaming.

Requirements

  • Host must be Windows.
  • Sunshine 0.21.0 or higher

Caveats:

  • If using Windows 11, you'll need to set the default terminal to Windows Console Host as there is currently a bug in Windows Terminal that prevents hidden consoles from working properly.
    • That can be changed at Settings > System > For Developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
    • On older versions of Windows 11 it can be found at: Settings > Privacy & security > Security > For developers > Terminal [Let Windows decide] >> (change to) >> Terminal [Windows Console Host]
  • The script will stop working if you move the folder, simply reinstall it to resolve that issue.
  • Due to Windows API restrictions, this script does not work on cold reboots (hard crashes or shutdowns of your computer).
    • If you're cold booting, simply sign into the computer using the "Desktop" app on Moonlight, then end the stream, then start it again.

GFE Users


Vibeshine

Vibeshine is a custom fork of Sunshine that makes display swaps smoother and more reliable as well as add exclusive features like Playnite integration, Windows Graphic Capture in Service mode and more! It is the closest experience you can get to Geforce Experience because you can add games directly with their box art in the Web UI.

You can download it here: Vibeshine

Vibeshine also supports changing resolution in the Audio/Video tab, at Step 2: Pre stream setup select any of the options other than disabled (default).

NOTE: You do not need to use this script after installing Vibeshine, but I am still maintaining it for users who rather remain on Sunshine or Apollo.


Installation Instructions

  1. Store the downloaded folder in a location you intend to keep. If you delete this folder or move it, the automation will stop working.
  2. To install, double click the Install.bat file.
  3. To uninstall, double click the Uninstall.bat file.

This script will ask for elevated rights because Sunshine configuration is be locked from modifications for non-administrator users.

How it Works

  1. When you start streaming any application in Sunshine, it will start the script.
  2. The script reads the environment variables passed to it via Sunshine, which contains client information such as screen resolution.
  3. It sets the host's resolution to match the Moonlight resolution (including refresh rate), unless overridden with the overrides file.
  4. The script waits for Sunshine to be suspended for more than 120 seconds or until the user ends the stream.
  5. It sets the host resolution back to the same resolution it was prior to starting the stream (including refresh rate).

This will only work if the resolution is available to be used, so you will need to make sure to use NVIDIA Custom Resolution or CRU to add the client resolution first.

Overrides (Setting)

You may have a mobile device that you wish to stream at a lower resolution to save bandwidth or some devices may perform better when streaming at a lower resolution. If you want your host to change the resolution to something higher than the client, make modifications to the overrides section in the settings.json file

Format

WidthxHeightxRefresh=WidthxHeightxRefresh

The resolution on the left is what triggers the override, and the one on the right is what the host will be set to.

Example

To stream at 720p and keep the host at 4k resolution, you would add this line:

"overrides": [
// recommended for steam deck users, uncomment to enable, but make sure you have 3840x2400 added on your host!
// sunshine has issues downscaling to smaller resolutions, so it is recommended to stream above native (you will see a significant difference)
// simply uncomment below line once done
//"2560x1440x90=3840x2400x60",
"1280x720x60=3840x2160x60"
]

About

Automates changing the host resolution to match the client resolution of Moonlight, with capabilities of supersampling if required

Resources

Stars

989 stars

Watchers

8 watching

Forks

Releases

Packages

Contributors

Languages