diff -Naur grsync-1.2.8.orig/configure.in grsync-1.2.8/configure.in
--- grsync-1.2.8.orig/configure.in	2020-05-27 18:16:14.058381000 +0200
+++ grsync-1.2.8/configure.in	2020-05-27 18:16:34.514237609 +0200
@@ -14,6 +14,13 @@
 AM_PROG_CC_STDC
 AC_HEADER_STDC
 
+AC_ARG_ENABLE([gtk3],
+    [AC_HELP_STRING([--enable-gtk3],
+        [compile grsync against gtk+ 3.0 (default: yes)])],
+    [enable_gtk3="${enableval}"],
+    [enable_gtk3="yes"]
+)
+
 PKG_CHECK_EXISTS(maemo-version, [VERSIONOK=`$PKG_CONFIG --atleast-version=5 maemo-version`
 								 if test x"$VERSIONOK" != x; then
 									 AC_MSG_ERROR([You need at least Maemo 5.x for this release of Grsync])
@@ -34,7 +41,13 @@
 				 MAEMO=0
 				 XMLFILE="grsync.glade"
 				 AC_DEFINE_UNQUOTED(XMLFILE, ["$XMLFILE"], [UI Description XML File])
-pkg_modules="gtk+-2.0 >= 2.16.0"
+
+				 if test x"$enable_gtk3" = x"yes"; then
+				     GTK_API_VERSION="3.0"
+				 else
+				     GTK_API_VERSION="2.0"
+				 fi
+				 pkg_modules="gtk+-$GTK_API_VERSION >= 2.16.0"
 				 OTHER_DESKTOP_ENTRIES="Icon=grsync.png"
 				 MIMEINFO_XMLNS="xmlns='http://www.freedesktop.org/standards/shared-mime-info'"
 				 MIME_OSSOCAT=""
diff -Naur grsync-1.2.8.orig/grsync.glade grsync-1.2.8/grsync.glade
--- grsync-1.2.8.orig/grsync.glade	2020-05-27 18:16:18.081553000 +0200
+++ grsync-1.2.8/grsync.glade	2020-05-27 18:17:16.919303348 +0200
@@ -322,7 +322,6 @@
 						<property name="visible">True</property>
 						<property name="can_focus">True</property>
 						<property name="border_width">4</property>
-						<property name="homogeneous">True</property>
 						<child>
 							<object class="GtkTable" id="table_basic">
 								<property name="visible">True</property>
@@ -1313,7 +1312,6 @@
 		<property name="skip_taskbar_hint">True</property>
 		<property name="skip_pager_hint">True</property>
 		<property name="transient_for">main_window</property>
-		<property name="has_separator">False</property>
 		<child internal-child="vbox">
 			<object class="GtkVBox" id="dialog-vbox1">
 				<property name="visible">True</property>
@@ -1414,7 +1412,6 @@
 		<property name="skip_taskbar_hint">True</property>
 		<property name="skip_pager_hint">True</property>
 		<property name="transient_for">main_window</property>
-		<property name="has_separator">False</property>
 		<child internal-child="vbox">
 			<object class="GtkVBox" id="dialog-vbox2">
 				<property name="visible">True</property>
@@ -1651,7 +1648,6 @@
 		<property name="skip_pager_hint">True</property>
 		<property name="urgency_hint">True</property>
 		<property name="transient_for">dialog_rsync</property>
-		<property name="has_separator">False</property>
 		<child internal-child="vbox">
 			<object class="GtkVBox" id="dialog-vbox3">
 				<property name="visible">True</property>
@@ -1736,7 +1732,6 @@
 		<property name="skip_taskbar_hint">True</property>
 		<property name="skip_pager_hint">True</property>
 		<property name="transient_for">main_window</property>
-		<property name="has_separator">False</property>
 		<signal name="hide" handler="on_rsync_hide"/>
 		<signal name="show" handler="on_rsync_show"/>
 		<signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
@@ -1930,7 +1925,6 @@
 		<property name="skip_taskbar_hint">True</property>
 		<property name="skip_pager_hint">True</property>
 		<property name="transient_for">main_window</property>
-		<property name="has_separator">False</property>
 		<signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
 		<child internal-child="vbox">
 			<object class="GtkVBox" id="dialog-vbox5">
diff -Naur grsync-1.2.8.orig/src/callbacks.c grsync-1.2.8/src/callbacks.c
--- grsync-1.2.8.orig/src/callbacks.c	2020-05-03 16:36:45.000000000 +0200
+++ grsync-1.2.8/src/callbacks.c	2020-05-27 18:19:00.715749541 +0200
@@ -58,7 +58,7 @@
 	if (flag) {
 		if (trayIcon == NULL) {
 			trayIcon = gtk_status_icon_new_from_file(icon);
-			g_signal_connect(GTK_STATUS_ICON(trayIcon), "activate", GTK_SIGNAL_FUNC(on_trayicon_activate), main_window);
+			g_signal_connect(GTK_STATUS_ICON(trayIcon), "activate", G_CALLBACK(on_trayicon_activate), main_window);
 		}
 	} else {
 		if (trayIcon != NULL) {
@@ -111,7 +111,7 @@
 void set_main_title(gchar* session, gchar* extra) {
 	gchar *stmp = g_strconcat("Grsync: ", session, " ", extra, NULL);
 	gtk_window_set_title((GtkWindow*) main_window, stmp);
-	if (trayIcon != NULL) gtk_status_icon_set_tooltip(trayIcon, stmp);
+	if (trayIcon != NULL) gtk_status_icon_set_tooltip_text(trayIcon, stmp);
 	g_free(stmp);
 }
 
@@ -815,7 +815,7 @@
 }
 
 
-void on_main_destroy(GtkObject *object, gpointer user_data) {
+void on_main_destroy(GtkWidget *object, gpointer user_data) {
 	gint sel = gtk_combo_box_get_active((GtkComboBox*) gtk_builder_get_object(builder, "combo_session"));
 	save_settings(groups[sel], NULL);
 	g_strfreev(groups);
@@ -860,7 +860,7 @@
 			gtk_widget_hide(rsync_window);
 		}
 	}
-	if (cmdline_execute && !more && !cmdline_stayopen) on_main_destroy((GtkObject*) main_window, NULL);
+	if (cmdline_execute && !more && !cmdline_stayopen) on_main_destroy((GtkWidget*) main_window, NULL);
 }
 
 
@@ -1177,7 +1177,7 @@
 }
 
 
-void on_rsync_hide(GtkObject *object, gpointer user_data) {
+void on_rsync_hide(GtkWidget *object, gpointer user_data) {
 	if (rsync_pid) {
 		if (paused) superkill(SIGCONT);
 		superkill(SIGTERM);
diff -Naur grsync-1.2.8.orig/src/main.c grsync-1.2.8/src/main.c
--- grsync-1.2.8.orig/src/main.c	2013-04-30 13:48:54.000000000 +0200
+++ grsync-1.2.8/src/main.c	2020-05-27 18:19:30.537013492 +0200
@@ -17,7 +17,6 @@
 	textdomain(GETTEXT_PACKAGE);
 #endif
 
-	gtk_set_locale();
 #ifdef MAEMO
 	hildon_gtk_init(&argc, &argv);
 #else
