athenian200 wrote: ↑2026-04-18, 03:13Basilisk-Dev wrote: ↑2026-04-17, 22:50Off-topic:
I don't think we should drop GTK2 support or NPAPI even if Linux distros are dropping support for GTK2. More experienced users will always be able to compile their own GTK2 if they truly need the GTK2 UI or NPAPI plugins. Even then, when we inevitably in a few years have to switch to an RHEL9 based distro for builds, GTK2 is still available for that OS as well. Same with RHEL10.
It definitely does do things. I had to make a few small patches in UXP, but I am using a modified personal fork of the LightSpark Adobe Flash NPAPI plugin on LoongArch, an architecture which did not even exist until after NPAPI was deprecated. It does not require GTK 2 or 3 at all. It uses SDL2.Off-topic:
You make good points, Basilisk-Dev. Yeah, we would definitely keep NPAPI on non-Linux regardless (I think that's a settled question), but the RHEL10 support for GTK2 was kind of my concern here since I don't think they have GTK2 in the official repos. I was originally thinking of decoupling GTK2 from NPAPI at some point so that people don't have to disable it entirely to build on non-GTK2 systems, but a few years ago it seemed like there was no reason to do that given that all extant Linux NPAPI plugins were built against GTK2 and there were fears of user confusion if they tried to build NPAPI without GTK2 and most plugins were broken. LightSpark does seem like a good argument in favor of keeping NPAPI around on Linux. Granted, a non-GTK2 NPAPI build would support very few plugins, but it would still support some, as the protocol itself doesn't require it. Overall, I don't necessarily want to remove GTK2 (it really wouldn't simplify our code much because the GTK2 stuff is mostly off in its own directories), but I would prefer to minimize our dependency on it as much as possible, and maybe move official support to a different emphasis at some point because I don't think it will be easily accessible forever.
I'm not a developer, but I spoke to a developer friend about this topic recently, and he gave me some advice. I'm wondering if this advice is worthwhile in this context at all? Here's what he said:
Is any of that sensible? Or have you already considered these things and realized they would all fail? Just checking - I am one of those people that haven't used NPAPI plugins for many years, and have no need for them going forward. But I understand trying to help those that do rely on them.One question is this: does NPAPI require GTK2 specifically, or does it require X11/XEmbed-style embedding? GTK3 still has GtkSocket/GtkPlug, and the docs say they support embedding one process’s widget inside another using the XEmbed protocol. Those widgets are X11-only and only work on a GdkX11Display. If Pale Moon’s plugin-hosting dependency is really about XEmbed, then a GTK3 browser may still be able to support NPAPI on X11. That is an inference, but it is a plausible one from the GTK docs.
One way of proceeding might be:
1. Make GTK3 the default/mainline Linux build.
Keep the ordinary browser on the newer supported toolkit path, since Pale Moon already supports GTK3 builds.
2. Define NPAPI as a legacy feature.
If plugin hosting depends on GtkSocket/GtkPlug, then the real compatibility boundary is probably “X11 only,” not “GTK2 forever.”
3. If needed, isolate plugins into a separate helper/container process.
If the current NPAPI code is too entangled with GTK2 internals to move cleanly, then the least bad answer might be something like the following: GTK3 for the browser UI, plus a small legacy plugin host linked against a bundled/private GTK2 runtime. Keep the GTK2 radius small and contained.
Do not vendor GTK2 for the whole browser unless forced.
Shipping a private GTK2 stack for the entire browser means Pale Moon effectively becomes the maintainer of an EOL GUI stack for security fixes, distro integration issues, theme bugs, accessibility quirks, and loader conflicts. That is a bigger commitment than bundling just enough legacy runtime for a plugin host.
4. Consider delivering the legacy path as a separate build or support tier.
For example: normal GTK3 build for most users, and a “legacy NPAPI/X11 build” or “plugin companion package” for the shrinking set of users who still need NPAPI.
The best way forward may not be “vendor GTK2 forever,” but “minimize how much of Pale Moon still needs GTK2.” If they can get NPAPI working in the GTK3/X11 build, that is a win. If not, then confining GTK2 to a small plugin-side compatibility layer could be preferable over making the whole browser depend on an abandoned toolkit.
The first thing I would test is if the current NPAPI hosting code can be made to run in the GTK3 build under X11 with GtkSocket/GtkPlug. If that succeeds, the project may not need to ship vendor GTK2 at all for plugins.





