[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16
, '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

[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16
, '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

[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16
, '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

[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16
, '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

[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16
, '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

[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16
, '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

[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16
, '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

[Blocked] Linux: Use Wayland by default; fallback to X11 - #142

Draft
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland
Draft

[Blocked] Linux: Use Wayland by default; fallback to X11#142
dreamsyntax wants to merge 2 commits into
hedge-dev:mainfrom
dreamsyntax:wayland

Conversation

@dreamsyntax

@dreamsyntaxdreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

BLOCKED/PENDING:

  • Waiting for KDE Window Decorator support (expected in Avalonia UI 12.2.0+)
  • Fullscreen breaks layout until context changes

Simple/light Wayland support for Linux. There's a few ways to handle this, but I grabbed what's been working for ShadowONE.

Until Avalonia 12.2.0 (or later) comes out, window icons will be missing:

Note the top left icon will be a "W" when running with Wayland.
image

Currently, Wayland renders through EGL (with an optional dmabuf path). It supports all core functionalities you would expect: mouse, touch, keyboard, clipboard, drag-and-drop... However, a few KDE-specific niceties (global app menu, window icons, blur-behind) are planned as follow-ups.
https://avaloniaui.net/blog/release-12-1

If the Window icon is a dealbreaker, I would suggest to wait until the next Avalonia 12 update.

I will note that scaling behavior seems the same regardless of X11/Wayland - so there's not much of an advantage to have this in now other than to be ahead of the curve.

@thesupersonic16

Copy link
Copy Markdown
Member

Does this fix any other issues like scaling?

Also can you check if wayland works on flatpak? I believe permissions needed to be changed to allow it.

@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

I'll double check the flatpak + permissions as I don't think I tried CI build.

Does this fix any other issues like scaling?

#124 (comment)
Nope, noted that above. I don't see any change. Probably implemented intentionally so scaling is uniform

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Yep, you're right. Flatpak breaks, marking draft until I resolve.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 15:56
@dreamsyntax
dreamsyntax marked this pull request as ready for review July 25, 2026 16:13
@dreamsyntax

dreamsyntax commented Jul 25, 2026

Copy link
Copy Markdown
ContributorAuthor

Flatpak working properly now. Tested codes and file replacement mods worked just to be sure as well.
If you want to test:
https://github.com/dreamsyntax/HedgeModManager/releases/tag/8.0.0-wayland-flatpak

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

I'll test the flatpak on a Linux Mint VM (Cinnamon is still X11 in latest stable) just to make sure the fallback is working properly for X11.

@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Verified works fine with X11 after the flatpak change.

@thesupersonic16

Copy link
Copy Markdown
Member

Does full screen work on wayland? Other than that I think we should wait until the window icon is fixed then merge.

@dreamsyntax
dreamsyntax marked this pull request as draft July 25, 2026 17:27
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Marking as draft for now until next Avalonia release (I'm interested for my other apps, so I'll come reopen this when I see its ready).

As for full screen, it breaks after toggling until you change pages:
image

I'll look into that once the new Avalonia.Wayland posts.

@dreamsyntaxdreamsyntax changed the title Linux: Use Wayland by default; fallback to X11[Blocked] Linux: Use Wayland by default; fallback to X11Jul 25, 2026
@dreamsyntax

Copy link
Copy Markdown
ContributorAuthor

Note for myself
They added their own fallback handler in 12.1.1, so I can drop the wrapper

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dreamsyntax@thesupersonic16