diff --git a/doc/reference/pidgin/pidgin-docs.xml b/doc/reference/pidgin/pidgin-docs.xml
--- a/doc/reference/pidgin/pidgin-docs.xml
+++ b/doc/reference/pidgin/pidgin-docs.xml
@@ -59,10 +59,10 @@
       <xi:include href="xml/pidginaccountstore.xml" />
       <xi:include href="xml/pidginactiongroup.xml" />
       <xi:include href="xml/pidginattachment.xml" />
-      <xi:include href="xml/pidginbuddylistmenu.xml" />
       <xi:include href="xml/pidgincellrendererexpander.xml" />
       <xi:include href="xml/pidginclosebutton.xml" />
       <xi:include href="xml/pidgincontactcompletion.xml" />
+      <xi:include href="xml/pidgincontactlist.xml" />
       <xi:include href="xml/pidginconversationwindow.xml" />
       <xi:include href="xml/pidgindebug.xml" />
       <xi:include href="xml/pidgindialog.xml" />
diff --git a/pidgin/glade/pidgin3.xml.in b/pidgin/glade/pidgin3.xml.in
--- a/pidgin/glade/pidgin3.xml.in
+++ b/pidgin/glade/pidgin3.xml.in
@@ -6,7 +6,6 @@
     <glade-widget-class name="PidginAccountStore" generic-name="account_store" title="AccountStore"/>
     <glade-widget-class name="PidginAccountFilterConnected" generic-name="account_filter_connected" title="FilterConnected"/>
     <glade-widget-class name="PidginAccountFilterProtocol" generic-name="account_filter_protocol" title="FilterProtocol"/>
-    <glade-widget-class name="PidginBuddyListMenu" generic-name="buddy_list_menu" title="BuddyListMenu"/>
     <glade-widget-class name="PidginCloseButton" generic-name="close-button" title="CloseButton"/>
     <glade-widget-class name="PidginConversationWindow" generic-name="conversation_window" title="ConversationWindow"/>
     <glade-widget-class name="PidginDialog" generic-name="dialog" title="Dialog"/>
@@ -24,7 +23,6 @@
     <glade-widget-class-ref name="PidginAccountStore"/>
     <glade-widget-class-ref name="PidginAccountFilterConnected"/>
     <glade-widget-class-ref name="PidginAccountFilterProtocol"/>
-    <glade-widget-class-ref name="PidginBuddyListMenu"/>
     <glade-widget-class-ref name="PidginCloseButton"/>
     <glade-widget-class-ref name="PidginConversationWindow"/>
     <glade-widget-class-ref name="PidginDialog"/>
diff --git a/pidgin/gtkblist.c b/pidgin/gtkblist.c
--- a/pidgin/gtkblist.c
+++ b/pidgin/gtkblist.c
@@ -44,7 +44,6 @@
 #include "pidgin/pidginaccountfilterconnected.h"
 #include "pidgin/pidginaccountstore.h"
 #include "pidgin/pidginactiongroup.h"
-#include "pidgin/pidginbuddylistmenu.h"
 #include "pidgin/pidgincellrendererexpander.h"
 #include "pidgin/pidginclosebutton.h"
 #include "pidgin/pidgincontactlist.h"
@@ -5231,11 +5230,7 @@
 	gtk_widget_add_events(gtkblist->window, GDK_VISIBILITY_NOTIFY_MASK);
 
 	/******************************* Menu bar *************************************/
-	gtkblist->menu = pidgin_buddy_list_menu_new();
-	gtk_box_pack_start(GTK_BOX(gtkblist->main_vbox), gtkblist->menu, FALSE,
-	                   FALSE, 0);
-
-	gtkblist->menutray = pidgin_buddy_list_menu_get_menu_tray(PIDGIN_BUDDY_LIST_MENU(gtkblist->menu));
+	gtkblist->menutray = pidgin_contact_list_get_menu_tray(PIDGIN_CONTACT_LIST(gtkblist->window));
 
 	/****************************** Notebook *************************************/
 	gtkblist->notebook = gtk_notebook_new();
@@ -7300,10 +7295,10 @@
 	}
 
 	/* replace the old submenu with a new one */
-	if(PIDGIN_IS_BUDDY_LIST_MENU(gtkblist->menu)) {
+	if(PIDGIN_IS_CONTACT_LIST(gtkblist->window)) {
 		GtkWidget *item = NULL;
 
-		item = pidgin_buddy_list_menu_get_sort_item(PIDGIN_BUDDY_LIST_MENU(gtkblist->menu));
+		item = pidgin_contact_list_get_menu_sort_item(PIDGIN_CONTACT_LIST(gtkblist->window));
 		gtk_menu_item_set_submenu(GTK_MENU_ITEM(item),
 		                          gtk_menu_new_from_model(G_MENU_MODEL(menu)));
 		g_object_unref(G_OBJECT(menu));
diff --git a/pidgin/meson.build b/pidgin/meson.build
--- a/pidgin/meson.build
+++ b/pidgin/meson.build
@@ -39,7 +39,6 @@
 	'pidginactiongroup.c',
 	'pidginapplication.c',
 	'pidginattachment.c',
-	'pidginbuddylistmenu.c',
 	'pidgincellrendererexpander.c',
 	'pidginclosebutton.c',
 	'pidgincontactcompletion.c',
@@ -108,7 +107,6 @@
 	'pidginactiongroup.h',
 	'pidginapplication.h',
 	'pidginattachment.h',
-	'pidginbuddylistmenu.h',
 	'pidgincellrendererexpander.h',
 	'pidginclosebutton.h',
 	'pidgincontactcompletion.h',
diff --git a/pidgin/pidginbuddylistmenu.h b/pidgin/pidginbuddylistmenu.h
deleted file mode 100644
--- a/pidgin/pidginbuddylistmenu.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-
-#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
-# error "only <pidgin.h> may be included directly"
-#endif
-
-#ifndef PIDGIN_BUDDY_LIST_MENU_H
-#define PIDGIN_BUDDY_LIST_MENU_H
-
-/**
- * SECTION:pidginbuddylistmenu
- * @section_id: pidgin-buddylist-menu
- * @short_description: A widget to display the menubar in the buddy list window.
- * @title: Buddylist Menu
- *
- * #PidginBuddyListMenu is a transitional widget as we slowly migrate the
- * buddylist window to glade.
- */
-
-#include <glib.h>
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PIDGIN_TYPE_BUDDY_LIST_MENU (pidgin_buddy_list_menu_get_type())
-G_DECLARE_FINAL_TYPE(PidginBuddyListMenu, pidgin_buddy_list_menu, PIDGIN,
-                     BUDDY_LIST_MENU, GtkMenuBar)
-
-/**
- * pidgin_buddy_list_menu_new:
- *
- * Creates a new #PidginBuddyListMenu instance.
- *
- * Returns: (transfer full): The new #PidginBuddyListMenu instance.
- */
-GtkWidget *pidgin_buddy_list_menu_new(void);
-
-/**
- * pidgin_buddy_list_menu_get_sort_item:
- * @menu: The #PidginBuddyList instance.
- *
- * Returns the sort menu item from the buddies menu.
- *
- * Returns: (transfer none): The sort menu item from the buddies menu.
- */
-GtkWidget *pidgin_buddy_list_menu_get_sort_item(PidginBuddyListMenu *menu);
-
-/**
- * pidgin_buddy_list_menu_get_menu_tray:
- * @menu: The #PidginBuddyList instance.
- *
- * Gets the #PidginMenuTray instance from @menu.
- *
- * Returns: (transfer none): The #PidginMenuTray from @menu.
- */
-GtkWidget *pidgin_buddy_list_menu_get_menu_tray(PidginBuddyListMenu *menu);
-
-G_END_DECLS
-
-#endif /* PIDGIN_BUDDY_LIST_MENU_H */
diff --git a/pidgin/pidginbuddylistmenu.c b/pidgin/pidginbuddylistmenu.c
deleted file mode 100644
--- a/pidgin/pidginbuddylistmenu.c
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- */
-
-#include "pidginbuddylistmenu.h"
-
-struct _PidginBuddyListMenu {
-	GtkMenuBar parent;
-
-	GtkWidget *sort_buddies;
-
-	GtkWidget *accounts;
-	GtkWidget *accounts_menu;
-
-	GtkWidget *plugins;
-	GtkWidget *plugins_menu;
-
-	GtkWidget *menu_tray;
-};
-
-/******************************************************************************
- * GObject Implementation
- *****************************************************************************/
-G_DEFINE_TYPE(PidginBuddyListMenu, pidgin_buddy_list_menu, GTK_TYPE_MENU_BAR)
-
-static void
-pidgin_buddy_list_menu_init(PidginBuddyListMenu *menu) {
-	gtk_widget_init_template(GTK_WIDGET(menu));
-
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->accounts),
-	                          menu->accounts_menu);
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->plugins),
-	                          menu->plugins_menu);
-
-	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu->menu_tray);
-}
-
-static void
-pidgin_buddy_list_menu_class_init(PidginBuddyListMenuClass *klass) {
-	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
-
-	gtk_widget_class_set_template_from_resource(
-	    widget_class,
-	    "/im/pidgin/Pidgin/BuddyList/menu.ui"
-	);
-
-	gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
-	                                     sort_buddies);
-	gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
-	                                     accounts);
-	gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
-	                                     accounts_menu);
-	gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
-	                                     plugins);
-	gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
-	                                     plugins_menu);
-	gtk_widget_class_bind_template_child(widget_class, PidginBuddyListMenu,
-	                                     menu_tray);
-}
-
-/******************************************************************************
- * Public API
- *****************************************************************************/
-GtkWidget *
-pidgin_buddy_list_menu_new(void) {
-	return GTK_WIDGET(g_object_new(PIDGIN_TYPE_BUDDY_LIST_MENU, NULL));
-}
-
-GtkWidget *
-pidgin_buddy_list_menu_get_sort_item(PidginBuddyListMenu *menu) {
-	g_return_val_if_fail(PIDGIN_IS_BUDDY_LIST_MENU(menu), NULL);
-
-	return menu->sort_buddies;
-}
-
-GtkWidget *
-pidgin_buddy_list_menu_get_menu_tray(PidginBuddyListMenu *menu) {
-	g_return_val_if_fail(PIDGIN_IS_BUDDY_LIST_MENU(menu), NULL);
-
-	return menu->menu_tray;
-}
diff --git a/pidgin/pidgincontactlist.h b/pidgin/pidgincontactlist.h
--- a/pidgin/pidgincontactlist.h
+++ b/pidgin/pidgincontactlist.h
@@ -43,6 +43,22 @@
 
 G_BEGIN_DECLS
 
+/**
+ * PIDGIN_TYPE_CONTACT_LIST:
+ *
+ * The standard _get_type method for #PidginContactList.
+ *
+ * Since: 3.0.0
+ */
+
+/**
+ * PidginContactList:
+ *
+ * A #GtkWindow that contains the main contact list.
+ *
+ * Since: 3.0.0
+ */
+
 #define PIDGIN_TYPE_CONTACT_LIST (pidgin_contact_list_get_type())
 G_DECLARE_FINAL_TYPE(PidginContactList, pidgin_contact_list, PIDGIN,
                      CONTACT_LIST, GtkApplicationWindow)
@@ -53,6 +69,8 @@
  * Creates a new #PidginContactList instance.
  *
  * Returns: (transfer full): The new #PidginContactList instance.
+ *
+ * Since: 3.0.0
  */
 GtkWidget *pidgin_contact_list_new(void);
 
@@ -63,9 +81,35 @@
  * Gets the main vbox for @contact_list.
  *
  * Returns: (transfer none): The main vbox of @contact_list.
+ *
+ * Since: 3.0.0
  */
 GtkWidget *pidgin_contact_list_get_vbox(PidginContactList *contact_list);
 
+/**
+ * pidgin_contact_list_get_menu_sort_item:
+ * @contact_list: The #PidginContactList instance.
+ *
+ * Returns the sort menu item from the menu of @contact_list.
+ *
+ * Returns: (transfer none): The sort menu item from the menu of @contact_list.
+ *
+ * Since: 3.0.0
+ */
+GtkWidget *pidgin_contact_list_get_menu_sort_item(PidginContactList *contact_list);
+
+/**
+ * pidgin_contact_list_get_menu_tray:
+ * @contact_list: The #PidginContactList instance.
+ *
+ * Gets the #PidginMenuTray instance from the menu of @contact_list.
+ *
+ * Returns: (transfer none): The #PidginMenuTray from the menu of
+ *          @contact_list.
+ *
+ * Since: 3.0.0
+ */
+GtkWidget *pidgin_contact_list_get_menu_tray(PidginContactList *contact_list);
 
 G_END_DECLS
 
diff --git a/pidgin/pidgincontactlist.c b/pidgin/pidgincontactlist.c
--- a/pidgin/pidgincontactlist.c
+++ b/pidgin/pidgincontactlist.c
@@ -28,6 +28,17 @@
 	GtkApplicationWindow parent;
 
 	GtkWidget *vbox;
+
+	GtkWidget *menu_bar;
+	GtkWidget *sort_buddies;
+
+	GtkWidget *accounts;
+	GtkWidget *accounts_menu;
+
+	GtkWidget *plugins;
+	GtkWidget *plugins_menu;
+
+	GtkWidget *menu_tray;
 };
 
 G_DEFINE_TYPE(PidginContactList, pidgin_contact_list,
@@ -48,6 +59,14 @@
 	group = pidgin_action_group_new();
 	gtk_widget_insert_action_group(GTK_WIDGET(contact_list), "blist",
 	                               G_ACTION_GROUP(group));
+
+	gtk_menu_item_set_submenu(GTK_MENU_ITEM(contact_list->accounts),
+	                          contact_list->accounts_menu);
+	gtk_menu_item_set_submenu(GTK_MENU_ITEM(contact_list->plugins),
+	                          contact_list->plugins_menu);
+
+	gtk_menu_shell_append(GTK_MENU_SHELL(contact_list->menu_bar),
+	                      contact_list->menu_tray);
 }
 
 static void
@@ -60,6 +79,21 @@
 	);
 
 	gtk_widget_class_bind_template_child(widget_class, PidginContactList, vbox);
+
+	gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+	                                     menu_bar);
+	gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+	                                     sort_buddies);
+	gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+	                                     accounts);
+	gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+	                                     accounts_menu);
+	gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+	                                     plugins);
+	gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+	                                     plugins_menu);
+	gtk_widget_class_bind_template_child(widget_class, PidginContactList,
+	                                     menu_tray);
 }
 
 /******************************************************************************
@@ -76,3 +110,17 @@
 
 	return contact_list->vbox;
 }
+
+GtkWidget *
+pidgin_contact_list_get_menu_sort_item(PidginContactList *contact_list) {
+	g_return_val_if_fail(PIDGIN_IS_CONTACT_LIST(contact_list), NULL);
+
+	return contact_list->sort_buddies;
+}
+
+GtkWidget *
+pidgin_contact_list_get_menu_tray(PidginContactList *contact_list) {
+	g_return_val_if_fail(PIDGIN_IS_CONTACT_LIST(contact_list), NULL);
+
+	return contact_list->menu_tray;
+}
diff --git a/pidgin/resources/BuddyList/menu.ui b/pidgin/resources/BuddyList/menu.ui
deleted file mode 100644
--- a/pidgin/resources/BuddyList/menu.ui
+++ /dev/null
@@ -1,367 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.2 
-
-Pidgin - Internet Messenger
-Copyright (C) Pidgin Developers <devel@pidgin.im>
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, see <https://www.gnu.org/licenses/>.
-
--->
-<interface>
-  <requires lib="gtk+" version="3.20"/>
-  <requires lib="pidgin" version="3.0"/>
-  <!-- interface-license-type gplv2 -->
-  <!-- interface-name Pidgin -->
-  <!-- interface-description Internet Messenger -->
-  <!-- interface-copyright Pidgin Developers <devel@pidgin.im> -->
-  <template class="PidginBuddyListMenu" parent="GtkMenuBar">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <child>
-      <object class="GtkMenuItem">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes">_Buddies</property>
-        <property name="use_underline">True</property>
-        <child type="submenu">
-          <object class="GtkMenu">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkMenuItem" id="new_message">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.new-message</property>
-                <property name="label" translatable="yes">New Instant _Message...</property>
-                <property name="use_underline">True</property>
-                <accelerator key="m" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="join_chat">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.join-chat</property>
-                <property name="label" translatable="yes">Join a _Chat...</property>
-                <property name="use_underline">True</property>
-                <accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="get_user_info">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.get-user-info</property>
-                <property name="label" translatable="yes">Get User _Info...</property>
-                <property name="use_underline">True</property>
-                <accelerator key="i" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="view_user_log">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.view-user-log</property>
-                <property name="label" translatable="yes">View User _Log...</property>
-                <property name="use_underline">True</property>
-                <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Sh_ow</property>
-                <property name="use_underline">True</property>
-                <child type="submenu">
-                  <object class="GtkMenu">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkCheckMenuItem" id="show_offline_buddies">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="action_name">blist.show-offline-buddies</property>
-                        <property name="label" translatable="yes">_Offline Buddies</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkCheckMenuItem" id="show_empty_groups">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="action_name">blist.show-empty-groups</property>
-                        <property name="label" translatable="yes">_Empty Groups</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkCheckMenuItem" id="show_buddy_icons">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="action_name">blist.show-buddy-icons</property>
-                        <property name="label" translatable="yes">Buddy _Icons</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkCheckMenuItem" id="show_idle_times">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="action_name">blist.show-idle-times</property>
-                        <property name="label" translatable="yes">Idle _Times</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                    </child>
-                    <child>
-                      <object class="GtkCheckMenuItem" id="show_protocol_icons">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="action_name">blist.show-protocol-icons</property>
-                        <property name="label" translatable="yes">_Protocol Icons</property>
-                        <property name="use_underline">True</property>
-                      </object>
-                    </child>
-                  </object>
-                </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="sort_buddies">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">_Sort Buddies</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="add_buddy">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.add-buddy</property>
-                <property name="label" translatable="yes">_Add Buddy...</property>
-                <property name="use_underline">True</property>
-                <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="add_chat">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.add-chat</property>
-                <property name="label" translatable="yes">Add C_hat...</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="add_group">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.add-group</property>
-                <property name="label" translatable="yes">Add _Group...</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="quit">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.quit</property>
-                <property name="label" translatable="yes">_Quit</property>
-                <property name="use_underline">True</property>
-                <accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem" id="accounts">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes">_Accounts</property>
-        <property name="use_underline">True</property>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes">_Tools</property>
-        <property name="use_underline">True</property>
-        <child type="submenu">
-          <object class="GtkMenu">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkMenuItem" id="custom_smileys">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.custom-smiley</property>
-                <property name="label" translatable="yes">Custom Smile_ys</property>
-                <property name="use_underline">True</property>
-                <accelerator key="y" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="preferences">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.preferences</property>
-                <property name="label" translatable="yes">Pr_eferences</property>
-                <property name="use_underline">True</property>
-                <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="privacy">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.privacy</property>
-                <property name="label" translatable="yes">Pr_ivacy</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="set_mood">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.set-mood</property>
-                <property name="label" translatable="yes">Set _Mood</property>
-                <property name="use_underline">True</property>
-                <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkSeparatorMenuItem">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="file_transfers">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.file-transfers</property>
-                <property name="label" translatable="yes">_File Transfers</property>
-                <property name="use_underline">True</property>
-                <accelerator key="t" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="room_list">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.room-list</property>
-                <property name="label" translatable="yes">R_oom List</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="system_log">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.system-log</property>
-                <property name="label" translatable="yes">System _Log</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem" id="plugins">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes">_Plugins</property>
-        <property name="use_underline">True</property>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes">_Help</property>
-        <property name="use_underline">True</property>
-        <child type="submenu">
-          <object class="GtkMenu">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <child>
-              <object class="GtkMenuItem" id="online_help">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.online-help</property>
-                <property name="label" translatable="yes">Online _Help</property>
-                <property name="use_underline">True</property>
-                <accelerator key="F1" signal="activate"/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="debug">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.debug</property>
-                <property name="label" translatable="yes">_Debug Window</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkMenuItem" id="about">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="action_name">app.about</property>
-                <property name="label" translatable="yes">_About</property>
-                <property name="use_underline">True</property>
-              </object>
-            </child>
-          </object>
-        </child>
-      </object>
-    </child>
-  </template>
-  <object class="PidginAccountsMenu" id="accounts_menu">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-  </object>
-  <object class="PidginMenuTray" id="menu_tray">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="right_justified">True</property>
-  </object>
-  <object class="PidginPluginsMenu" id="plugins_menu">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-  </object>
-</interface>
diff --git a/pidgin/resources/BuddyList/window.ui b/pidgin/resources/BuddyList/window.ui
--- a/pidgin/resources/BuddyList/window.ui
+++ b/pidgin/resources/BuddyList/window.ui
@@ -38,15 +38,347 @@
         <property name="can_focus">False</property>
         <property name="orientation">vertical</property>
         <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
-        </child>
-        <child>
-          <placeholder/>
+          <object class="GtkMenuBar" id="menu_bar">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkMenuItem">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Buddies</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkMenuItem" id="new_message">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.new-message</property>
+                        <property name="label" translatable="yes">New Instant _Message...</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="m" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="join_chat">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.join-chat</property>
+                        <property name="label" translatable="yes">Join a _Chat...</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="c" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="get_user_info">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.get-user-info</property>
+                        <property name="label" translatable="yes">Get User _Info...</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="i" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="view_user_log">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.view-user-log</property>
+                        <property name="label" translatable="yes">View User _Log...</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="l" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Sh_ow</property>
+                        <property name="use_underline">True</property>
+                        <child type="submenu">
+                          <object class="GtkMenu">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="show_offline_buddies">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="action_name">blist.show-offline-buddies</property>
+                                <property name="label" translatable="yes">_Offline Buddies</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="show_empty_groups">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="action_name">blist.show-empty-groups</property>
+                                <property name="label" translatable="yes">_Empty Groups</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="show_buddy_icons">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="action_name">blist.show-buddy-icons</property>
+                                <property name="label" translatable="yes">Buddy _Icons</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="show_idle_times">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="action_name">blist.show-idle-times</property>
+                                <property name="label" translatable="yes">Idle _Times</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkCheckMenuItem" id="show_protocol_icons">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="action_name">blist.show-protocol-icons</property>
+                                <property name="label" translatable="yes">_Protocol Icons</property>
+                                <property name="use_underline">True</property>
+                              </object>
+                            </child>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="sort_buddies">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">_Sort Buddies</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="add_buddy">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.add-buddy</property>
+                        <property name="label" translatable="yes">_Add Buddy...</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="add_chat">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.add-chat</property>
+                        <property name="label" translatable="yes">Add C_hat...</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="add_group">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.add-group</property>
+                        <property name="label" translatable="yes">Add _Group...</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="quit">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.quit</property>
+                        <property name="label" translatable="yes">_Quit</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="accounts">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Accounts</property>
+                <property name="use_underline">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Tools</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkMenuItem" id="custom_smileys">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.custom-smiley</property>
+                        <property name="label" translatable="yes">Custom Smile_ys</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="y" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="preferences">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.preferences</property>
+                        <property name="label" translatable="yes">Pr_eferences</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="p" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="privacy">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.privacy</property>
+                        <property name="label" translatable="yes">Pr_ivacy</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="set_mood">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.set-mood</property>
+                        <property name="label" translatable="yes">Set _Mood</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="file_transfers">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.file-transfers</property>
+                        <property name="label" translatable="yes">_File Transfers</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="t" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="room_list">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.room-list</property>
+                        <property name="label" translatable="yes">R_oom List</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="system_log">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.system-log</property>
+                        <property name="label" translatable="yes">System _Log</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="plugins">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Plugins</property>
+                <property name="use_underline">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkMenuItem" id="online_help">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.online-help</property>
+                        <property name="label" translatable="yes">Online _Help</property>
+                        <property name="use_underline">True</property>
+                        <accelerator key="F1" signal="activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="debug">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.debug</property>
+                        <property name="label" translatable="yes">_Debug Window</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="about">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="action_name">app.about</property>
+                        <property name="label" translatable="yes">_About</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
         </child>
       </object>
     </child>
   </template>
+  <object class="PidginAccountsMenu" id="accounts_menu">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+  </object>
+  <object class="PidginMenuTray" id="menu_tray">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="right_justified">True</property>
+  </object>
+  <object class="PidginPluginsMenu" id="plugins_menu">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+  </object>
 </interface>
diff --git a/pidgin/resources/pidgin.gresource.xml b/pidgin/resources/pidgin.gresource.xml
--- a/pidgin/resources/pidgin.gresource.xml
+++ b/pidgin/resources/pidgin.gresource.xml
@@ -9,7 +9,6 @@
     <file compressed="true">Accounts/chooser.ui</file>
     <file compressed="true">Accounts/entry.css</file>
     <file compressed="true">Accounts/menu.ui</file>
-    <file compressed="true">BuddyList/menu.ui</file>
     <file compressed="true">BuddyList/window.ui</file>
     <file compressed="true">Conversations/invite_dialog.ui</file>
     <file compressed="true">Conversations/menu.ui</file>
