Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

@luk1337@ReenigneArcher@KuleRucket@LizardByte-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

@luk1337@ReenigneArcher@KuleRucket@LizardByte-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

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

Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

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

Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

@luk1337@ReenigneArcher@KuleRucket@LizardByte-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

@luk1337@ReenigneArcher@KuleRucket@LizardByte-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

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

Don't skip disconnected X11 outputs - #1071

Merged
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter
Mar 28, 2023
Merged

Don't skip disconnected X11 outputs#1071
ReenigneArcher merged 3 commits into
LizardByte:nightlyfrom
luk1337:luk/x11_iter

Conversation

@luk1337

Copy link
Copy Markdown
Contributor

Description

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a Sunshine exclusive output when using the following do/undo commands:

  • xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
  • xrandr --output HDMI-0 --off

Screenshot

n/a

Issues Fixed or Closed

n/a

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Dependency update (updates to dependencies)
  • Documentation update (changes to documentation)
  • Repository update (changes to repository files, e.g. .github/...)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated the in code docstring/documentation-blocks for new or existing methods/components

Branch Updates

LizardByte requires that branches be up-to-date before merging. This means that after any PR is merged, this branch
must be updated before it can be merged. You must also
Allow edits from maintainers.

  • I want maintainers to keep my branch updated

@ReenigneArcher

ReenigneArcher commented Mar 27, 2023

Copy link
Copy Markdown
Member

@KuleRucket if you get a chance, could you give a review on this one? Pretty simple change, but want to make sure it won't cause issues in other scenarios.

@KuleRucket

Copy link
Copy Markdown
Contributor

I like the idea that sunshine can start with the display off, and then be able to use it later if it is switched on. It makes sense and the change works for it.

The RR_Connected state is checked twice in the class, once in x11_display_names() and then once in init(). For Sunshine to start up properly x11_display_names() must return at least one connected display and if none are found then there is an error and x11 get selected as a valid capture method. So the situation described above if relying on the DP-0 to be present. I wonder if this could go one step further and allow 0 displays to be connected and allow them to be switched on later.

The config web page might need to be adjusted though. It say to user "xrandr --listmonitors" which only gives you connected. A new way to retrieve the number you want should be provided. In future we could consider using the monitor name instead of the number.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

When you're using just a single monitor, it's usually always connected, so I don't think it's really that important to support "the only monitor is disconnected" case.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

@ReenigneArcher

This comment was marked as resolved.

@KuleRucket

Copy link
Copy Markdown
Contributor

But, if you want, I can update this change to remove the remaining RR_Connected check as that shouldn't really break anything (I hope?)

I think the most important thing is to change the documentation to explain how to get the display number. The easiest way to do this is to change x11_display_names() to list them all with numbers and then the documentation can tell people to check the log file for the display numbers.

I can't see anything wrong with removing the RR_Connected check from x11_display_names(). It will make it easier to print the full list of displays.

@luk1337
luk1337force-pushed the luk/x11_iter branch 2 times, most recently from 6d54460 to fb82c97CompareMarch 28, 2023 07:40
@KuleRucket

Copy link
Copy Markdown
Contributor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

Can you add (Connected)/(Disconnected) to the log message using RR_Connected status? If someone it looking for selecting a connected monitor this would help.

Done.

This change lets me use HDMI-0 (with HDMI dummy plugged in) as a
Sunshine exclusive output when using the following do/undo commands:
* xrandr --output HDMI-0 --mode 1920x1080 --right-of DP-0
* xrandr --output HDMI-0 --off
@luk1337

Copy link
Copy Markdown
ContributorAuthor

Does something like this look good for docs/web update?

diff --git a/docs/source/about/advanced_usage.rst b/docs/source/about/advanced_usage.rst
index d22555f..19fe237 100644
--- a/docs/source/about/advanced_usage.rst+++ b/docs/source/about/advanced_usage.rst@@ -299,13 +299,18 @@ output_name
.. Tip:: To find the name of the appropriate values follow these instructions.
**Linux**
- .. code-block:: bash+ During Sunshine startup, you should see the list of detected monitors:- xrandr --listmonitors+ .. code-block:: text- Example output: ``0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1``+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false- You need to use the value before the colon in the output, e.g. ``0``.+ You need to use the value before the colon in the output, e.g. ``1``.
.. Todo:: macOS
diff --git a/src_assets/common/assets/web/config.html b/src_assets/common/assets/web/config.html
index 9e664ee..9524755 100644
--- a/src_assets/common/assets/web/config.html+++ b/src_assets/common/assets/web/config.html@@ -560,9 +560,17 @@
v-model="config.output_name"
/>
<div class="form-text">
- xrandr --listmonitors<br />- Example output:- <pre> 0: +HDMI-1 1920/518x1200/324+0+0 HDMI-1</pre>+ During Sunshine startup, you should see the list of detected monitors, e.g.:<br />+ <br />+ <pre style="white-space: pre-line;">+ Info: Detecting connected monitors+ Info: Detected monitor 0: DVI-D-0, connected: false+ Info: Detected monitor 1: HDMI-0, connected: true+ Info: Detected monitor 2: DP-0, connected: true+ Info: Detected monitor 3: DP-1, connected: false+ Info: Detected monitor 4: DVI-D-1, connected: false+ </pre>+ You need to use the value before the colon in the output, e.g. <b>1</b>.
</div>
</div>
</div>

@ReenigneArcher

Copy link
Copy Markdown
Member

@luk1337 I think that would be fine.

@luk1337

Copy link
Copy Markdown
ContributorAuthor

@luk1337 I think that would be fine.

ok, I pushed it.

@ReenigneArcher
ReenigneArcher merged commit 1ab1b79 into LizardByte:nightlyMar 28, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants

@luk1337@ReenigneArcher@KuleRucket@LizardByte-bot