diff --git a/ui/gtk/gtk_key_bindings_handler.cc b/ui/gtk/gtk_key_bindings_handler.cc index 5f13e404e4c78..66a4e5cf5f4f3 100644 --- a/ui/gtk/gtk_key_bindings_handler.cc +++ b/ui/gtk/gtk_key_bindings_handler.cc @@ -84,7 +84,17 @@ constexpr auto kEmacsBindings = } // namespace GtkKeyBindingsHandler::GtkKeyBindingsHandler() { - settings_ = TakeGObject(g_settings_new(kDesktopInterface)); + // g_settings_new() will fatally fail if the schema does not exist, so + // use g_settings_schema_source_lookup() to check for it first. + auto* schema_source = g_settings_schema_source_get_default(); + auto* schema = + g_settings_schema_source_lookup(schema_source, kDesktopInterface, true); + if (!schema) { + return; + } + settings_ = TakeGObject(g_settings_new_full(schema, nullptr, nullptr)); + g_settings_schema_unref(schema); + signal_ = ScopedGSignal( settings_, "changed", base::BindRepeating(&GtkKeyBindingsHandler::OnSettingsChanged,