dc2006f
diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp
dc2006f
--- a/dom/plugins/base/nsPluginHost.cpp
dc2006f
+++ b/dom/plugins/base/nsPluginHost.cpp
dc2006f
@@ -105,6 +105,10 @@
dc2006f
 #  include "windows.h"
dc2006f
 #  include "winbase.h"
dc2006f
 #endif
dc2006f
+#if (MOZ_WIDGET_GTK)
dc2006f
+#  include <gdk/gdk.h>
dc2006f
+#  include <gdk/gdkx.h>
dc2006f
+#endif
dc2006f
 
dc2006f
 #include "npapi.h"
dc2006f
 
dc2006f
@@ -358,9 +362,15 @@
dc2006f
   mOverrideInternalTypes =
dc2006f
       Preferences::GetBool("plugin.override_internal_types", false);
dc2006f
 
dc2006f
-  mPluginsDisabled = Preferences::GetBool("plugin.disable", false);
dc2006f
-
dc2006f
-  Preferences::AddStrongObserver(this, "plugin.disable");
dc2006f
+  bool waylandBackend = false;
dc2006f
+#if MOZ_WIDGET_GTK
dc2006f
+  waylandBackend = !GDK_IS_X11_DISPLAY(gdk_display_get_default());
dc2006f
+#endif
dc2006f
+  mPluginsDisabled =
dc2006f
+      Preferences::GetBool("plugin.disable", false) || waylandBackend;
dc2006f
+  if (!waylandBackend) {
dc2006f
+    Preferences::AddStrongObserver(this, "plugin.disable");
dc2006f
+  }
dc2006f
 
dc2006f
   nsCOMPtr<nsIObserverService> obsService =
dc2006f
       mozilla::services::GetObserverService();
dc2006f