diff --git a/src/ringmainwindow.cpp b/src/ringmainwindow.cpp
index 051e397..b0de236 100644
--- a/src/ringmainwindow.cpp
+++ b/src/ringmainwindow.cpp
@@ -126,6 +126,7 @@
     GtkWidget *account_creation_wizard;
     GtkWidget *account_migration_view;
     GtkWidget *spinner_lookup;
+    GtkWidget *combobox_account_selector;
 
     /* Pending ring usernames lookup for the search entry */
     QMetaObject::Connection username_lookup;
@@ -761,6 +762,12 @@
 
     /* show the settings button*/
     gtk_widget_show(priv->ring_settings);
+
+    /* show the account selector */
+    gtk_widget_show(priv->combobox_account_selector);
+
+    /* init the selection for the account selector */
+    gtk_combo_box_set_active(GTK_COMBO_BOX(priv->combobox_account_selector), 0);
 }
 
 static void
@@ -781,6 +788,7 @@
 
     /* hide settings button until account creation is complete */
     gtk_widget_hide(priv->ring_settings);
+    gtk_widget_hide(priv->combobox_account_selector);
 
     gtk_widget_show(priv->account_creation_wizard);
 
@@ -1058,6 +1066,7 @@
         g_signal_connect_swapped(priv->account_migration_view, "account-migration-failed", G_CALLBACK(handle_account_migrations), win);
 
         gtk_widget_hide(priv->ring_settings);
+        gtk_widget_hide(priv->combobox_account_selector);
         gtk_widget_show(priv->account_migration_view);
         gtk_stack_add_named(
             GTK_STACK(priv->stack_main_view),
@@ -1072,10 +1081,28 @@
     else
     {
         gtk_widget_show(priv->ring_settings);
+        gtk_widget_show(priv->combobox_account_selector);
+
+        /* init the selection for the account selector */
+        gtk_combo_box_set_active(GTK_COMBO_BOX(priv->combobox_account_selector), 0);
     }
 }
 
 static void
+selected_account_changed(GtkComboBox *gtk_combo_box, RingMainWindow *self)
+{
+    int nbr = gtk_combo_box_get_active(gtk_combo_box);
+
+    QModelIndex idx = AccountModel::instance().userSelectionModel()->model()->index(nbr, 0);
+    auto account = AccountModel::instance().getAccountByModelIndex(idx);
+
+    AccountModel::instance().setUserChosenAccount(account);
+
+    // we closing any view opened to avoid confusion (especially between SIP and Ring protocols).
+    hide_view_clicked(nullptr, self);
+}
+
+static void
 ring_main_window_init(RingMainWindow *win)
 {
     RingMainWindowPrivate *priv = RING_MAIN_WINDOW_GET_PRIVATE(win);
@@ -1158,6 +1185,17 @@
     priv->treeview_history = history_view_new();
     gtk_container_add(GTK_CONTAINER(priv->scrolled_window_history), priv->treeview_history);
 
+    /* use this event to refresh the treeview_conversations when account selection changed */
+    QObject::connect(AccountModel::instance().userSelectionModel(), &QItemSelectionModel::currentChanged, [priv](const QModelIndex& idx){
+        // next line will refresh the recentmodel so the treeview will do
+        RecentModel::instance().peopleProxy()->setFilterRegExp("");
+
+        // set the good index to the combox. Required when the selected account changed by different way than selecting
+        // from the combo box.
+        gtk_combo_box_set_active(GTK_COMBO_BOX(priv->combobox_account_selector), idx.row());
+
+    });
+
     /* welcome/default view */
     priv->welcome_view = ring_welcome_view_new();
     g_object_ref(priv->welcome_view); // increase ref because don't want it to be destroyed when not displayed
@@ -1213,6 +1251,26 @@
         /* user has to create the ring account */
         show_account_creation_wizard(win);
     }
+
+    /* model for the combobox for Account chooser */
+    auto account_model = gtk_q_tree_model_new(AccountModel::instance().userSelectionModel()->model(), 1,
+        0, Account::Role::Alias, G_TYPE_STRING);
+
+    gtk_combo_box_set_model(GTK_COMBO_BOX(priv->combobox_account_selector), GTK_TREE_MODEL(account_model));
+
+    auto *renderer = gtk_cell_renderer_text_new();
+
+    /* layout */
+    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(priv->combobox_account_selector), renderer, FALSE);
+    gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(priv->combobox_account_selector), renderer, "text", 0, NULL);
+
+
+    g_signal_connect(priv->combobox_account_selector, "changed", G_CALLBACK(selected_account_changed), win);
+
+    /* init the selection for the account selector */
+    selected_account_changed(GTK_COMBO_BOX(priv->combobox_account_selector), win);
+
+    g_object_unref(account_model);
 }
 
 static void
@@ -1272,6 +1330,7 @@
     gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), RingMainWindow, radiobutton_media_settings);
     gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), RingMainWindow, radiobutton_account_settings);
     gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), RingMainWindow, spinner_lookup);
+    gtk_widget_class_bind_template_child_private(GTK_WIDGET_CLASS (klass), RingMainWindow, combobox_account_selector);
 }
 
 GtkWidget *
