+Patch to follow ibus 1.4 config API change.
+Index: ibus-hangul-1.3.1/src/engine.c
+===================================================================
+--- ibus-hangul-1.3.1.orig/src/engine.c
++++ ibus-hangul-1.3.1/src/engine.c
+@@ -111,7 +111,11 @@ static void ibus_hangul_engine_update_lo
+ static void ibus_config_value_changed (IBusConfig *config,
+ const gchar *section,
+ const gchar *name,
++#if IBUS_CHECK_VERSION(1,3,99)
++ GVariant *value,
++#else
+ GValue *value,
++#endif /* !IBUS_CHECK_VERSION(1,3,99) */
+ gpointer user_data);
+
+ static void lookup_table_set_visible (IBusLookupTable *table,
+@@ -136,6 +140,11 @@ static gboolean hanja_key_list_match
+ static gboolean hanja_key_list_has_modifier (HanjaKeyList *list,
+ guint keyval);
+
++static gboolean config_get_string (IBusConfig *config,
++ const gchar *section,
++ const gchar *name,
++ gchar **result);
++
+ static IBusEngineClass *parent_class = NULL;
+ static HanjaTable *hanja_table = NULL;
+ static HanjaTable *symbol_table = NULL;
+@@ -176,7 +185,7 @@ void
+ ibus_hangul_init (IBusBus *bus)
+ {
+ gboolean res;
+- GValue value = { 0, };
++ gchar *str;
+
+ hanja_table = hanja_table_load (NULL);
+
+@@ -187,22 +196,20 @@ ibus_hangul_init (IBusBus *bus)
+ g_object_ref_sink (config);
+
+ hangul_keyboard = g_string_new_len ("2", 8);
+- res = ibus_config_get_value (config, "engine/Hangul",
+- "HangulKeyboard", &value);
++ str = NULL;
++ res = config_get_string (config, "engine/Hangul", "HangulKeyboard", &str);
+ if (res) {
+- const gchar* str = g_value_get_string (&value);
+ g_string_assign (hangul_keyboard, str);
+- g_value_unset(&value);
++ g_free (str);
+ }
+
+ hanja_key_list_init(&hanja_keys);
+
+- res = ibus_config_get_value (config, "engine/Hangul",
+- "HanjaKeys", &value);
++ str = NULL;
++ res = config_get_string (config, "engine/Hangul", "HanjaKeys", &str);
+ if (res) {
+- const gchar* str = g_value_get_string (&value);
+ hanja_key_list_set_from_string(&hanja_keys, str);
+- g_value_unset(&value);
++ g_free (str);
+ } else {
+ hanja_key_list_append(&hanja_keys, IBUS_Hangul_Hanja, 0);
+ hanja_key_list_append(&hanja_keys, IBUS_F9, 0);
+@@ -963,27 +970,71 @@ ibus_hangul_engine_property_activate (IB
+ }
+ }
+
++static gboolean
++config_get_string (IBusConfig *config,
++ const gchar *section,
++ const gchar *name,
++ gchar **result)
++{
++#if IBUS_CHECK_VERSION(1,3,99)
++ GVariant *value = NULL;
++
++ g_return_val_if_fail (result != NULL, FALSE);
++
++ value = ibus_config_get_value (config, section, name);
++ if (value) {
++ *result = g_strdup (g_variant_get_string (value, NULL));
++ g_variant_unref (value);
++ return TRUE;
++ }
++ return FALSE;
++#else
++ GValue value = { 0 };
++
++ g_return_val_if_fail (result != NULL, FALSE);
++
++ if (ibus_config_get_value (config, section, name, &value)) {
++ *result = g_strdup (g_value_get_string (&value));
++ g_value_unset (&value);
++ return TRUE;
++ }
++ return FALSE;
++#endif /* !IBUS_CHECK_VERSION(1,3,99) */
++}
++
++#if IBUS_CHECK_VERSION(1,3,99)
++#define _g_variant_get_string g_variant_get_string
++#define _g_variant_get_int32 g_variant_get_int32
++#else
++#define _g_variant_get_string(value, length) g_value_get_string(value)
++#define _g_variant_get_int32 g_value_get_int
++#endif /* !IBUS_CHECK_VERSION(1,3,99) */
++
+ static void
+ ibus_config_value_changed (IBusConfig *config,
+ const gchar *section,
+ const gchar *name,
++#if IBUS_CHECK_VERSION(1,3,99)
++ GVariant *value,
++#else
+ GValue *value,
++#endif /* !IBUS_CHECK_VERSION(1,3,99) */
+ gpointer user_data)
+ {
+ IBusHangulEngine *hangul = (IBusHangulEngine *) user_data;
+
+ if (strcmp(section, "engine/Hangul") == 0) {
+ if (strcmp(name, "HangulKeyboard") == 0) {
+- const gchar *str = g_value_get_string (value);
++ const gchar *str = _g_variant_get_string (value, NULL);
+ g_string_assign (hangul_keyboard, str);
+ hangul_ic_select_keyboard (hangul->context, hangul_keyboard->str);
+ } else if (strcmp(name, "HanjaKeys") == 0) {
+- const gchar* str = g_value_get_string (value);
++ const gchar* str = _g_variant_get_string (value, NULL);
+ hanja_key_list_set_from_string(&hanja_keys, str);
+ }
+ } else if (strcmp(section, "panel") == 0) {
+ if (strcmp(name, "lookup_table_orientation") == 0) {
+- lookup_table_orientation = g_value_get_int (value);
++ lookup_table_orientation = _g_variant_get_int32 (value);
+ }
+ }
+ }