diff --git a/briar-gtk/briar_gtk/actions/window.py b/briar-gtk/briar_gtk/actions/window.py
index 1ffc61715d4febe4caa7787b68f04c37126b2f2f..cb0604bdc8766840ca2d8be81fe619564e4baf3d 100644
--- a/briar-gtk/briar_gtk/actions/window.py
+++ b/briar-gtk/briar_gtk/actions/window.py
@@ -25,6 +25,7 @@ class WindowActions(Actions):
         self._setup_back_to_sidebar_action()
         self._setup_open_about_page_action()
         self._setup_open_add_contact_action()
+        self._setup_open_main_window_action()
         self._setup_open_private_chat_action()
 
     def _setup_back_to_sidebar_action(self):
@@ -37,6 +38,9 @@ class WindowActions(Actions):
     def _setup_open_add_contact_action(self):
         self._setup_action("open-add-contact", None, self._open_add_contact)
 
+    def _setup_open_main_window_action(self):
+        self._setup_action("open-main-window", None, self._open_main_window)
+
     def _setup_open_private_chat_action(self):
         self._setup_action("open-private-chat", GLib.VariantType.new("i"),
                            self._open_private_chat)
@@ -54,6 +58,10 @@ class WindowActions(Actions):
     def _open_add_contact(self, action, parameter):
         self.widget.show_add_contact_container()
 
+    # pylint: disable=unused-argument
+    def _open_main_window(self, action, parameter):
+        self.widget.show_main_container()
+
     # pylint: disable=unused-argument
     def _open_private_chat(self, action, contact_id):
         self.widget.current_container.open_private_chat(contact_id.get_int32())
diff --git a/briar-gtk/briar_gtk/containers/add_contact.py b/briar-gtk/briar_gtk/containers/add_contact.py
index 492850055d6ed020968a4f7907ff4fcd27325cf7..94d58751d2c1b75df0e8a1f689725c78dd5be1dc 100644
--- a/briar-gtk/briar_gtk/containers/add_contact.py
+++ b/briar-gtk/briar_gtk/containers/add_contact.py
@@ -4,8 +4,6 @@
 
 from gettext import gettext as _
 
-from gi.repository import GLib
-
 from briar_wrapper.models.contacts import Contacts
 
 from briar_gtk.container import Container
@@ -54,10 +52,6 @@ class AddContactContainer(Container):
     def _on_link_enter(self, widget):
         self.on_links_next_pressed(None)
 
-    # pylint: disable=unused-argument
-    def on_link_back_pressed(self, button):
-        self._back_to_main_window()
-
     # pylint: disable=unused-argument
     def on_links_next_pressed(self, button):
         link_error_label = self.builder.get_object("link_error_label")
@@ -118,7 +112,7 @@ class AddContactContainer(Container):
             return
         alias_error_label.hide()
         self._add_contact()
-        self._back_to_main_window()
+        APP().window.show_main_container()
 
     def _alias_is_empty(self):
         alias = self.builder.get_object("alias_entry").get_text()
@@ -129,7 +123,3 @@ class AddContactContainer(Container):
         their_link = self.builder.get_object("their_link_entry").get_text()
         alias = self.builder.get_object("alias_entry").get_text()
         contacts.add_pending(their_link, alias)
-
-    # pylint: disable=no-self-use
-    def _back_to_main_window(self):
-        GLib.idle_add(APP().window.show_main_container)
diff --git a/briar-gtk/data/ui/add_contact.ui b/briar-gtk/data/ui/add_contact.ui
index 7ad5abee37d98fa4313a6f36606bd05367d4d882..639dfcb8effec36e6942e7c867e9f49235e1ce1e 100644
--- a/briar-gtk/data/ui/add_contact.ui
+++ b/briar-gtk/data/ui/add_contact.ui
@@ -187,7 +187,7 @@
           <object class="GtkButton">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <signal name="clicked" handler="on_link_back_pressed"/>
+            <property name="action_name">win.open-main-window</property>
             <child>
               <object class="GtkImage">
                 <property name="visible">True</property>