diff -pruN 5.0.16-1/CMakeLists.txt 5.0.17-1/CMakeLists.txt
--- 5.0.16-1/CMakeLists.txt	2022-07-03 17:55:31.000000000 +0000
+++ 5.0.17-1/CMakeLists.txt	2022-07-31 02:03:15.000000000 +0000
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.6)
-project(fcitx5-gtk VERSION 5.0.16)
+project(fcitx5-gtk VERSION 5.0.17)
 
 find_package(ECM REQUIRED 1.0.0)
 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
@@ -16,6 +16,7 @@ option(ENABLE_GTK2_IM_MODULE "Enable GTK
 option(ENABLE_GTK3_IM_MODULE "Enable GTK3 IM Module" ON)
 option(ENABLE_GTK4_IM_MODULE "Enable GTK4 IM Module" ON)
 option(ENABLE_SNOOPER "Enable Key Snooper for gtk app" ON)
+option(BUILD_ONLY_PLUGIN "Build only IM Module" OFF)
 
 set(NO_SNOOPER_APPS ".*chrome.*,.*chromium.*,firefox.*,Do.*"
     CACHE STRING "Disable Key Snooper for following app by default.")
@@ -36,6 +37,12 @@ set(CMAKE_C_VISIBILITY_PRESET default)
 
 include(cmake/CompilerSettings.cmake)
 
+if (BUILD_ONLY_PLUGIN)
+    set(GCLIENT_LIBRARY_TYPE STATIC)
+else()
+    set(GCLIENT_LIBRARY_TYPE SHARED)
+endif()
+
 set(NEED_X11 FALSE)
 if (ENABLE_GTK2_IM_MODULE)
     pkg_check_modules(Gtk2 REQUIRED IMPORTED_TARGET "gtk+-2.0")
diff -pruN 5.0.16-1/debian/changelog 5.0.17-1/debian/changelog
--- 5.0.16-1/debian/changelog	2022-07-09 01:55:47.000000000 +0000
+++ 5.0.17-1/debian/changelog	2022-08-03 21:10:57.000000000 +0000
@@ -1,3 +1,15 @@
+fcitx5-gtk (5.0.17-1) unstable; urgency=medium
+
+  * New upstream release.
+  * debian/rules: Pass -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON via
+    dh_auto_configure override. (Closes: #1001867)
+  * debian/control: Bump Standards-Version to 4.6.1.
+  * debian/patches: Backport upstream commits to fix FTBFS.
+  * debian/libfcitx5gclient2.symbols: Update symbols to hide
+    private symbols accordingly.
+
+ -- Boyuan Yang <byang@debian.org>  Wed, 03 Aug 2022 17:10:57 -0400
+
 fcitx5-gtk (5.0.16-1) unstable; urgency=medium
 
   * New upstream release.
diff -pruN 5.0.16-1/debian/control 5.0.17-1/debian/control
--- 5.0.16-1/debian/control	2021-11-24 15:54:33.000000000 +0000
+++ 5.0.17-1/debian/control	2022-08-03 19:53:33.000000000 +0000
@@ -20,7 +20,7 @@ Build-Depends:
  libxkbcommon-x11-dev,
  pkg-config,
 Rules-Requires-Root: no
-Standards-Version: 4.6.0
+Standards-Version: 4.6.1
 Homepage: https://github.com/fcitx/fcitx5-gtk
 Vcs-Git: https://salsa.debian.org/input-method-team/fcitx5-gtk.git
 Vcs-Browser: https://salsa.debian.org/input-method-team/fcitx5-gtk
diff -pruN 5.0.16-1/debian/libfcitx5gclient2.symbols 5.0.17-1/debian/libfcitx5gclient2.symbols
--- 5.0.16-1/debian/libfcitx5gclient2.symbols	2022-07-09 01:54:35.000000000 +0000
+++ 5.0.17-1/debian/libfcitx5gclient2.symbols	2022-08-03 21:10:53.000000000 +0000
@@ -1,9 +1,5 @@
 libFcitx5GClient.so.2 libfcitx5gclient2 #MINVER#
 * Build-Depends-Package: libfcitx5gclient-dev
- _fcitx_g_client_handle_process_key_reply@Base 5.0.15
- _fcitx_g_watcher_connection_closed@Base 5.0.15
- buildCandidateArray@Base 0.0~git20200819.d26dd52
- buildFormattedTextArray@Base 0.0~git20200819.d26dd52
  fcitx_g_client_focus_in@Base 0.0~git20200402.3e6795d
  fcitx_g_client_focus_out@Base 0.0~git20200402.3e6795d
  fcitx_g_client_get_type@Base 0.0~git20200402.3e6795d
diff -pruN 5.0.16-1/debian/patches/0001-Fix-the-order-of-add_subdirectory.patch 5.0.17-1/debian/patches/0001-Fix-the-order-of-add_subdirectory.patch
--- 5.0.16-1/debian/patches/0001-Fix-the-order-of-add_subdirectory.patch	1970-01-01 00:00:00.000000000 +0000
+++ 5.0.17-1/debian/patches/0001-Fix-the-order-of-add_subdirectory.patch	2022-08-03 21:07:25.000000000 +0000
@@ -0,0 +1,32 @@
+From: Weng Xuetian <wengxt@gmail.com>
+Date: Wed, 3 Aug 2022 11:18:39 -0700
+Subject: Fix the order of add_subdirectory
+
+subdirectory need to be added after set required variables.
+
+Fix #20
+---
+ CMakeLists.txt | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2dbf7d7..00b1b89 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -31,7 +31,6 @@ pkg_check_modules(GLib2 REQUIRED IMPORTED_TARGET "glib-2.0>=2.56")
+ pkg_check_modules(Gio2 REQUIRED IMPORTED_TARGET "gio-2.0")
+ pkg_check_modules(GioUnix2 REQUIRED IMPORTED_TARGET "gio-unix-2.0")
+ pkg_check_modules(GObject2 REQUIRED IMPORTED_TARGET "gobject-2.0")
+-add_subdirectory(fcitx-gclient)
+ 
+ set(CMAKE_C_VISIBILITY_PRESET default)
+ 
+@@ -43,6 +42,8 @@ else()
+     set(GCLIENT_LIBRARY_TYPE SHARED)
+ endif()
+ 
++add_subdirectory(fcitx-gclient)
++
+ set(NEED_X11 FALSE)
+ if (ENABLE_GTK2_IM_MODULE)
+     pkg_check_modules(Gtk2 REQUIRED IMPORTED_TARGET "gtk+-2.0")
diff -pruN 5.0.16-1/debian/patches/0002-Hide-non-public-function.patch 5.0.17-1/debian/patches/0002-Hide-non-public-function.patch
--- 5.0.16-1/debian/patches/0002-Hide-non-public-function.patch	1970-01-01 00:00:00.000000000 +0000
+++ 5.0.17-1/debian/patches/0002-Hide-non-public-function.patch	2022-08-03 21:07:25.000000000 +0000
@@ -0,0 +1,53 @@
+From: Weng Xuetian <wengxt@gmail.com>
+Date: Wed, 3 Aug 2022 13:55:19 -0700
+Subject: Hide non public function
+
+---
+ fcitx-gclient/fcitxgclient.c  | 6 +++---
+ fcitx-gclient/fcitxgwatcher.c | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/fcitx-gclient/fcitxgclient.c b/fcitx-gclient/fcitxgclient.c
+index 1de6c36..3652e29 100644
+--- a/fcitx-gclient/fcitxgclient.c
++++ b/fcitx-gclient/fcitxgclient.c
+@@ -569,7 +569,7 @@ void fcitx_g_client_set_surrounding_text(FcitxGClient *self, gchar *text,
+     }
+ }
+ 
+-gboolean _fcitx_g_client_handle_process_key_reply(FcitxGClient *self,
++static gboolean _fcitx_g_client_handle_process_key_reply(FcitxGClient *self,
+                                                   GVariant *result) {
+ 
+     gboolean ret = FALSE;
+@@ -903,7 +903,7 @@ static void _candidate_free(gpointer arg) {
+     g_free(item);
+ }
+ 
+-void buildFormattedTextArray(GPtrArray *array, GVariantIter *iter) {
++static void buildFormattedTextArray(GPtrArray *array, GVariantIter *iter) {
+     gchar *string;
+     int type;
+     while (g_variant_iter_next(iter, "(si)", &string, &type)) {
+@@ -915,7 +915,7 @@ void buildFormattedTextArray(GPtrArray *array, GVariantIter *iter) {
+     g_variant_iter_free(iter);
+ }
+ 
+-void buildCandidateArray(GPtrArray *array, GVariantIter *iter) {
++static void buildCandidateArray(GPtrArray *array, GVariantIter *iter) {
+     gchar *label, *candidate;
+     while (g_variant_iter_next(iter, "(ss)", &label, &candidate)) {
+         FcitxGCandidateItem *item = g_malloc0(sizeof(FcitxGCandidateItem));
+diff --git a/fcitx-gclient/fcitxgwatcher.c b/fcitx-gclient/fcitxgwatcher.c
+index 3096ba8..d7565b3 100644
+--- a/fcitx-gclient/fcitxgwatcher.c
++++ b/fcitx-gclient/fcitxgwatcher.c
+@@ -170,7 +170,7 @@ static gboolean _fcitx_g_watcher_recheck(gpointer user_data) {
+     return FALSE;
+ }
+ 
+-void _fcitx_g_watcher_connection_closed(
++static void _fcitx_g_watcher_connection_closed(
+     GDBusConnection *connection G_GNUC_UNUSED,
+     gboolean remote_peer_vanished G_GNUC_UNUSED, GError *error G_GNUC_UNUSED,
+     gpointer user_data) {
diff -pruN 5.0.16-1/debian/patches/series 5.0.17-1/debian/patches/series
--- 5.0.16-1/debian/patches/series	1970-01-01 00:00:00.000000000 +0000
+++ 5.0.17-1/debian/patches/series	2022-08-03 21:07:25.000000000 +0000
@@ -0,0 +1,2 @@
+0001-Fix-the-order-of-add_subdirectory.patch
+0002-Hide-non-public-function.patch
diff -pruN 5.0.16-1/debian/rules 5.0.17-1/debian/rules
--- 5.0.16-1/debian/rules	2020-08-17 20:40:45.000000000 +0000
+++ 5.0.17-1/debian/rules	2022-08-02 15:58:51.000000000 +0000
@@ -4,3 +4,6 @@ export DEB_BUILD_MAINT_OPTIONS = hardeni
 
 %:
 	dh $@ --with gir
+
+override_dh_auto_configure:
+	dh_auto_configure -- -DCMAKE_BUILD_RPATH_USE_ORIGIN=ON
diff -pruN 5.0.16-1/fcitx-gclient/CMakeLists.txt 5.0.17-1/fcitx-gclient/CMakeLists.txt
--- 5.0.16-1/fcitx-gclient/CMakeLists.txt	2022-07-03 17:55:31.000000000 +0000
+++ 5.0.17-1/fcitx-gclient/CMakeLists.txt	2022-07-31 02:03:15.000000000 +0000
@@ -33,13 +33,14 @@ add_custom_command(OUTPUT marshall.h
   ${PROJECT_SOURCE_DIR}/gtk-common/marshall.list > marshall.h
   DEPENDS ${PROJECT_SOURCE_DIR}/gtk-common/marshall.list)
 
-add_library(Fcitx5GClient SHARED ${FCITX_GCLIENT_SOURCES}
+add_library(Fcitx5GClient ${GCLIENT_LIBRARY_TYPE} ${FCITX_GCLIENT_SOURCES}
   ${FCITX_GCLIENT_BUILT_SOURCES} ${FCITX_GCLIENT_BUILT_HEADERS})
 set_target_properties(Fcitx5GClient
   PROPERTIES VERSION ${Fcitx5GClient_VERSION}
   SOVERSION ${Fcitx5GClient_SOVERSION}
   EXPORT_NAME GClient
   C_VISIBILITY_PRESET default
+  POSITION_INDEPENDENT_CODE ON
   )
 target_include_directories(Fcitx5GClient
     PUBLIC
@@ -51,44 +52,48 @@ target_include_directories(Fcitx5GClient
 )
 target_link_libraries(Fcitx5GClient LINK_PRIVATE PkgConfig::Gio2 PkgConfig::GLib2 PkgConfig::GObject2)
 
-configure_file(Fcitx5GClient.pc.in ${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClient.pc @ONLY)
+add_library(Fcitx5::GClient ALIAS Fcitx5GClient)
 
-install(TARGETS Fcitx5GClient EXPORT Fcitx5GClientTargets LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClient.pc
-  DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
-install(FILES ${FCITX_GCLIENT_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/Fcitx5/GClient/fcitx-gclient")
+if (NOT BUILD_ONLY_PLUGIN)
+  configure_file(Fcitx5GClient.pc.in ${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClient.pc @ONLY)
 
-add_library(Fcitx5::GClient ALIAS Fcitx5GClient)
+  install(TARGETS Fcitx5GClient EXPORT Fcitx5GClientTargets LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClient.pc
+    DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+  install(FILES ${FCITX_GCLIENT_HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/Fcitx5/GClient/fcitx-gclient")
 
-configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/Fcitx5GClientConfig.cmake.in"
-                              "${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClientConfig.cmake"
-                              INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Fcitx5GClient
-)
 
-install(EXPORT Fcitx5GClientTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Fcitx5GClient FILE Fcitx5GClientTargets.cmake NAMESPACE Fcitx5::)
+  configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/Fcitx5GClientConfig.cmake.in"
+                                "${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClientConfig.cmake"
+                                INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Fcitx5GClient
+  )
+
+  install(EXPORT Fcitx5GClientTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Fcitx5GClient FILE Fcitx5GClientTargets.cmake NAMESPACE Fcitx5::)
+
+  install(FILES  "${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClientConfig.cmake"
+                "${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClientConfigVersion.cmake"
+          DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Fcitx5GClient
+          COMPONENT Devel )
+
+  if(ENABLE_GIR)
+    include(GObjectIntrospection)
+    gobject_introspection(
+      FILENAME FcitxG-1.0.gir
+      NSVERSION 1.0
+      INCLUDE Gio-2.0 GObject-2.0 GLib-2.0
+      PACKAGE_EXPORT Fcitx5GClient
+      LIBRARY Fcitx5GClient
+      NAMESPACE FcitxG
+      SCANNER_ARGS --warn-all --add-include-path=${CMAKE_CURRENT_SOURCE_DIR}
+      COMPILER_ARGS "--includedir=${CMAKE_CURRENT_SOURCE_DIR}"
+      SYMBOL_PREFIXES fcitx_g
+      SOURCES ${FCITX_GCLIENT_SOURCES} ${FCITX_GCLIENT_HEADERS}
+      QUIET
+      )
+    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/FcitxG-1.0.gir"
+      DESTINATION "${GOBJECT_INTROSPECTION_GIRDIR}")
+    install(FILES "${CMAKE_CURRENT_BINARY_DIR}/FcitxG-1.0.typelib"
+      DESTINATION "${GOBJECT_INTROSPECTION_TYPELIBDIR}")
+  endif()
 
-install(FILES  "${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClientConfig.cmake"
-               "${CMAKE_CURRENT_BINARY_DIR}/Fcitx5GClientConfigVersion.cmake"
-        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Fcitx5GClient
-        COMPONENT Devel )
-
-if(ENABLE_GIR)
-  include(GObjectIntrospection)
-  gobject_introspection(
-    FILENAME FcitxG-1.0.gir
-    NSVERSION 1.0
-    INCLUDE Gio-2.0 GObject-2.0 GLib-2.0
-    PACKAGE_EXPORT Fcitx5GClient
-    LIBRARY Fcitx5GClient
-    NAMESPACE FcitxG
-    SCANNER_ARGS --warn-all --add-include-path=${CMAKE_CURRENT_SOURCE_DIR}
-    COMPILER_ARGS "--includedir=${CMAKE_CURRENT_SOURCE_DIR}"
-    SYMBOL_PREFIXES fcitx_g
-    SOURCES ${FCITX_GCLIENT_SOURCES} ${FCITX_GCLIENT_HEADERS}
-    QUIET
-    )
-  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/FcitxG-1.0.gir"
-    DESTINATION "${GOBJECT_INTROSPECTION_GIRDIR}")
-  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/FcitxG-1.0.typelib"
-    DESTINATION "${GOBJECT_INTROSPECTION_TYPELIBDIR}")
 endif()
