Wayland early display window
Wayland early display window implementation, requested in #98
- [ ] Publish PR to GitHub Packages
Just to clarify: this does not actually work unless you manually update GLFW To 3.4?
the window will load up with wayland on GLFW 3.3+ (default for 1.20.1+), the icon won't load unless GLFW version 3.4+ (default for mc 1.21) is in use, everything else should work fine
notably there is a GLFW error printed to the console 65548: Wayland: The platform does not support setting the cursor position when opening inventories & some other screens, however it does not cause any crashes or actual issues and can be solved with a mixin as demonstrated in my fabric wayland compat mod WayGL
I am against merging this like this, since it feels extremely convoluted to set a window icon using an externally written file & spawned process.
There's apparently a Wayland proposal to be sane about setting window icons. Once that has been merged, I'd hope GLFW will just support this natively: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/269
Regardless of the window icon, setting the app_id is fine.
The rest of it, I do not want a separate window provider for this. It feels unnecessary and just complicates the code.
glfwWindowHint(GLFW_FOCUS_ON_SHOW, GLFW_FALSE);
Why is this actually necessary for Wayland support?
p.s.: Anything that is actually necessary for basic support of Wayland seems to just require a few lines in the current earlydisplay provider, and we can do that. Enabling wayland, for example, could simply be done via CLI args.
I will try to test this on WSL2 l. Wish me luck.
I think this is way easier to merge now. I'll test it out as soon as I can.
Soooo.. How's the testing going :3
glfwWindowHint(GLFW_FOCUS_ON_SHOW, GLFW_FALSE);Why is this actually necessary for Wayland support?
After some testing, it seems that currently KDE Plasma incorrectly reports the Window as "not responding" on initial focus. After alt tabbing away and back onto the window this goes away. I assume that's what this hint is for.
I had initially removed the hint after testing for that issue on my own system, I've added it back to see if it fixes the issue.
@wired-tomato, this PR introduces breaking changes. Fortunately, this project is currently accepting breaking changes, but if they are not intentional, please revert them. Last checked commit: 38f3ea7bbe91357e7c7f2779abd6e6201c2f879a.
Compatibility checks
loader (:loader)
cpw/mods/modlauncher/api/ITransformer- ❗ API class no longer exists
cpw/mods/util/LambdaExceptionUtils- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformer$Target- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerVotingContext$ClassPredicate- ❗ API class no longer exists
cpw/mods/modlauncher/serviceapi/ITransformerDiscoveryService- ❗ API class no longer exists
cpw/mods/modlauncher/ModuleLayerHandler- ❗ API class no longer exists
cpw/mods/jarhandling/impl/JarContentsImpl- ❗ API class no longer exists
cpw/mods/util/LambdaExceptionUtils$Consumer_WithExceptions- ❗ API class no longer exists
cpw/mods/modlauncher/api/TargetType- ❗ API class no longer exists
cpw/mods/util/LambdaExceptionUtils$Runnable_WithExceptions- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerVotingContext$FieldPredicate- ❗ API class no longer exists
cpw/mods/modlauncher/api/IModuleLayerManager$Layer- ❗ API class no longer exists
cpw/mods/modlauncher/ArgumentHandler- ❗ API class no longer exists
cpw/mods/modlauncher/log/ExtraDataTextRenderer- ❗ API class no longer exists
cpw/mods/modlauncher/serviceapi/ILaunchPluginService$ITransformerLoader- ❗ API class no longer exists
cpw/mods/modlauncher/api/LambdaExceptionUtils$Function_WithExceptions- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerActivity- ❗ API class no longer exists
cpw/mods/modlauncher/serviceapi/ILaunchPluginService$ComputeFlags- ❗ API class no longer exists
cpw/mods/jarhandling/JarMetadata- ❗ API class no longer exists
cpw/mods/niofs/union/UnionPathFilter- ❗ API class no longer exists
cpw/mods/modlauncher/api/LambdaExceptionUtils$BiConsumer_WithExceptions- ❗ API class no longer exists
cpw/mods/jarhandling/SecureJar$Status- ❗ API class no longer exists
cpw/mods/modlauncher/DefaultLaunchHandlerService- ❗ API class no longer exists
cpw/mods/cl/JarModuleFinder- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerVotingContext- ❗ API class no longer exists
cpw/mods/modlauncher/api/TypesafeMap$Key- ❗ API class no longer exists
cpw/mods/modlauncher/api/IEnvironment- ❗ API class no longer exists
cpw/mods/modlauncher/serviceapi/ILaunchPluginService- ❗ API class no longer exists
cpw/mods/jarhandling/SecureJar$ModuleDataProvider- ❗ API class no longer exists
cpw/mods/modlauncher/api/TypesafeMap$KeyBuilder- ❗ API class no longer exists
cpw/mods/modlauncher/VoteDeadlockException- ❗ API class no longer exists
cpw/mods/modlauncher/api/LambdaExceptionUtils$Runnable_WithExceptions- ❗ API class no longer exists
cpw/mods/modlauncher/api/TypesafeMap- ❗ API class no longer exists
cpw/mods/modlauncher/InvalidLauncherSetupException- ❗ API class no longer exists
cpw/mods/util/LambdaExceptionUtils$Function_WithExceptions- ❗ API class no longer exists
cpw/mods/niofs/union/UnionPath- ❗ API class no longer exists
cpw/mods/jarhandling/JarContents- ❗ API class no longer exists
cpw/mods/modlauncher/BootstrapLaunchConsumer- ❗ API class no longer exists
cpw/mods/modlauncher/api/LambdaExceptionUtils$Consumer_WithExceptions- ❗ API class no longer exists
cpw/mods/modlauncher/log/MLClassLoaderContextSelector- ❗ API class no longer exists
cpw/mods/modlauncher/serviceapi/ILaunchPluginService$Phase- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerActivity$Type- ❗ API class no longer exists
cpw/mods/modlauncher/VoteRejectedException- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerVotingContext$MethodPredicate- ❗ API class no longer exists
cpw/mods/modlauncher/EnumerationHelper- ❗ API class no longer exists
cpw/mods/jarhandling/impl/JarSigningData- ❗ API class no longer exists
cpw/mods/jarhandling/impl/SecureJarVerifier- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerAuditTrail- ❗ API class no longer exists
cpw/mods/modlauncher/api/NamedPath- ❗ API class no longer exists
cpw/mods/modlauncher/api/IncompatibleEnvironmentException- ❗ API class no longer exists
cpw/mods/modlauncher/TransformerHolder- ❗ API class no longer exists
cpw/mods/modlauncher/util/ServiceLoaderUtils- ❗ API class no longer exists
cpw/mods/modlauncher/LaunchPluginHandler- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformerVotingContext$InsnPredicate- ❗ API class no longer exists
cpw/mods/jarhandling/impl/Jar- ❗ API class no longer exists
cpw/mods/cl/ModularURLHandler$IURLProvider- ❗ API class no longer exists
cpw/mods/cl/ProtectionDomainHelper- ❗ API class no longer exists
cpw/mods/modlauncher/TransformList- ❗ API class no longer exists
cpw/mods/modlauncher/api/ServiceRunner- ❗ API class no longer exists
cpw/mods/modlauncher/Launcher- ❗ API class no longer exists
cpw/mods/modlauncher/api/ILaunchHandlerService- ❗ API class no longer exists
cpw/mods/modlauncher/ClassTransformer- ❗ API class no longer exists
cpw/mods/cl/ModularURLHandler- ❗ API class no longer exists
cpw/mods/modlauncher/api/IEnvironment$Keys- ❗ API class no longer exists
cpw/mods/jarhandling/SecureJar- ❗ API class no longer exists
cpw/mods/modlauncher/api/LambdaExceptionUtils- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformationService- ❗ API class no longer exists
cpw/mods/jarhandling/SecureJar$Provider- ❗ API class no longer exists
cpw/mods/util/Lazy- ❗ API class no longer exists
cpw/mods/modlauncher/api/LambdaExceptionUtils$Supplier_WithExceptions- ❗ API class no longer exists
cpw/mods/cl/ModuleClassLoader- ❗ API class no longer exists
cpw/mods/modlauncher/TransformerAuditTrail- ❗ API class no longer exists
cpw/mods/modlauncher/TransformingClassLoader- ❗ API class no longer exists
cpw/mods/modlauncher/api/TransformerVoteResult- ❗ API class no longer exists
cpw/mods/jarhandling/JarContentsBuilder- ❗ API class no longer exists
cpw/mods/modlauncher/PredicateVisitor- ❗ API class no longer exists
cpw/mods/niofs/union/UnionFileSystem- ❗ API class no longer exists
cpw/mods/jarhandling/LazyJarMetadata- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformationService$OptionResult- ❗ API class no longer exists
cpw/mods/cl/UnionURLStreamHandler- ❗ API class no longer exists
cpw/mods/util/LambdaExceptionUtils$BiConsumer_WithExceptions- ❗ API class no longer exists
cpw/mods/jarhandling/impl/ModuleJarMetadata- ❗ API class no longer exists
cpw/mods/modlauncher/log/TransformingThrowablePatternConverter- ❗ API class no longer exists
cpw/mods/niofs/union/UnionFileSystemProvider- ❗ API class no longer exists
cpw/mods/modlauncher/api/IModuleLayerManager- ❗ API class no longer exists
cpw/mods/modlauncher/TestingLaunchHandlerService- ❗ API class no longer exists
cpw/mods/modlauncher/api/ITransformationService$Resource- ❗ API class no longer exists
cpw/mods/modlauncher/Environment- ❗ API class no longer exists
cpw/mods/modlauncher/TransformationServiceDecorator- ❗ API class no longer exists
cpw/mods/util/LambdaExceptionUtils$Supplier_WithExceptions- ❗ API class no longer exists
cpw/mods/jarhandling/VirtualJar- ❗ API class no longer exists
cpw/mods/modlauncher/TransformTargetLabel- ❗ API class no longer exists
cpw/mods/jarhandling/impl/SimpleJarMetadata- ❗ API class no longer exists
cpw/mods/modlauncher/TransformStore- ❗ API class no longer exists
@wired-tomato, this pull request has conflicts, please resolve them for this PR to move forward.