diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index d98f9a9..9dc5048 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -231,6 +231,27 @@ log_printf(LV2_Log_Handle handle,
 	return ret;
 }
 
+#ifdef __APPLE__
+static unsigned
+cocoa_ui_supported(const char* container_type_uri,
+                  const char* ui_type_uri)
+{
+	enum {
+		SUIL_WRAPPING_UNSUPPORTED = 0,
+		SUIL_WRAPPING_NATIVE      = 1,
+		SUIL_WRAPPING_EMBEDDED    = 2
+	};
+	if (!strcmp(container_type_uri, ui_type_uri)) {
+		return SUIL_WRAPPING_NATIVE;
+	} else if ((!strcmp(container_type_uri, LV2_UI__GtkUI)
+	               && !strcmp(ui_type_uri, LV2_UI__CocoaUI))) {
+		return SUIL_WRAPPING_EMBEDDED;
+	} else {
+		return SUIL_WRAPPING_UNSUPPORTED;
+	}
+}
+#endif /* __APPLE__ */
+
 struct LV2Plugin::Impl {
 	Impl() : plugin(0), ui(0), ui_type(0), name(0), author(0), instance(0)
 	       , work_iface(0)
@@ -565,7 +586,11 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate)
 			const LilvUI*   this_ui      = lilv_uis_get(uis, u);
 			const LilvNode* this_ui_type = NULL;
 			if (lilv_ui_is_supported(this_ui,
+#	ifdef __APPLE__
+			                         cocoa_ui_supported,
+#	else
 			                         suil_ui_supported,
+#	endif /* __APPLE__ */
 			                         _world.ui_GtkUI,
 			                         &this_ui_type)) {
 				// TODO: Multiple UI support
