diff --git a/src/gnome-terminal.schemas.in b/src/gnome-terminal.schemas.in
index e0c270b..d4124b6 100644
--- a/src/gnome-terminal.schemas.in
+++ b/src/gnome-terminal.schemas.in
@@ -149,6 +149,21 @@
     </schema>
 
     <schema>
+      <key>/schemas/apps/gnome-terminal/profiles/Default/default_show_tabbar</key>
+      <applyto>/apps/gnome-terminal/profiles/Default/default_show_tabbar</applyto>
+      <owner>gnome-terminal</owner>
+      <type>bool</type>
+      <default>true</default>
+      <locale name="C">
+         <short>Whether to show tabbar in new windows with multiple tabs</short>
+         <long>
+           True if the menubar should be shown in new windows that have
+	   multiple tabs for windows with this profile.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/gnome-terminal/profiles/Default/foreground_color</key>
       <applyto>/apps/gnome-terminal/profiles/Default/foreground_color</applyto>
       <owner>gnome-terminal</owner>
@@ -878,6 +893,7 @@
          </long>
       </locale>
     </schema>
+
     <schema>
       <key>/schemas/apps/gnome-terminal/keybindings/toggle_menubar</key>
       <applyto>/apps/gnome-terminal/keybindings/toggle_menubar</applyto>
@@ -895,6 +911,22 @@
     </schema>
 
     <schema>
+      <key>/schemas/apps/gnome-terminal/keybindings/toggle_tabbar</key>
+      <applyto>/apps/gnome-terminal/keybindings/toggle_tabbar</applyto>
+      <owner>gnome-terminal</owner>
+      <type>string</type>
+      <locale name="C">
+         <short>Keyboard shortcut to toggle the visibility of the tab-bar</short>
+         <long>
+          Keyboard shortcut key to toggle the visibility of the tab-bar. Expressed as a string
+          in the same format used for GTK+ resource files.
+          If you set the option to the special string "disabled", then there 
+          will be no keyboard shortcut for this action.
+         </long>
+      </locale>
+    </schema>
+
+    <schema>
       <key>/schemas/apps/gnome-terminal/keybindings/set_terminal_title</key>
       <applyto>/apps/gnome-terminal/keybindings/set_terminal_title</applyto>
       <owner>gnome-terminal</owner>
diff --git a/src/profile-editor.c b/src/profile-editor.c
index 11f8e81..71d49e3 100644
--- a/src/profile-editor.c
+++ b/src/profile-editor.c
@@ -215,6 +215,10 @@ profile_notify_sensitivity_cb (TerminalProfile *profile,
     SET_SENSITIVE ("show-menubar-checkbutton",
                    !terminal_profile_property_locked (profile, TERMINAL_PROFILE_DEFAULT_SHOW_MENUBAR));
 
+  if (!prop_name || prop_name == I_(TERMINAL_PROFILE_DEFAULT_SHOW_TABBAR))
+    SET_SENSITIVE ("show-tabbar-checkbutton",
+                   !terminal_profile_property_locked (profile, TERMINAL_PROFILE_DEFAULT_SHOW_TABBAR));
+
   if (!prop_name || prop_name == I_(TERMINAL_PROFILE_TITLE))
     SET_SENSITIVE ("title-entry",
                    !terminal_profile_property_locked (profile, TERMINAL_PROFILE_TITLE));
@@ -885,6 +889,7 @@ terminal_profile_edit (TerminalProfile *profile,
   CONNECT ("scroll-on-keystroke-checkbutton", TERMINAL_PROFILE_SCROLL_ON_KEYSTROKE);
   CONNECT ("scroll-on-output-checkbutton", TERMINAL_PROFILE_SCROLL_ON_OUTPUT);
   CONNECT ("show-menubar-checkbutton", TERMINAL_PROFILE_DEFAULT_SHOW_MENUBAR);
+  CONNECT ("show-tabbar-checkbutton", TERMINAL_PROFILE_DEFAULT_SHOW_TABBAR);
   CONNECT ("solid-radiobutton", TERMINAL_PROFILE_BACKGROUND_TYPE);
   CONNECT ("system-font-checkbutton", TERMINAL_PROFILE_USE_SYSTEM_FONT);
   CONNECT ("title-entry", TERMINAL_PROFILE_TITLE);
diff --git a/src/profile-preferences.glade b/src/profile-preferences.glade
index 0f4563c..683cc8c 100644
--- a/src/profile-preferences.glade
+++ b/src/profile-preferences.glade
@@ -272,6 +272,25 @@
 	      </child>
 
 	      <child>
+		<widget class="GtkCheckButton" id="show-tabbar-checkbutton">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">Show _tab-bar by default in new terminals</property>
+		  <property name="use_underline">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <property name="active">False</property>
+		  <property name="inconsistent">False</property>
+		  <property name="draw_indicator">True</property>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
+		</packing>
+	      </child>
+
+	      <child>
 		<widget class="GtkCheckButton" id="bell-checkbutton">
 		  <property name="visible">True</property>
 		  <property name="can_focus">True</property>
diff --git a/src/terminal-accels.c b/src/terminal-accels.c
index 6f15e95..6cbcf51 100644
--- a/src/terminal-accels.c
+++ b/src/terminal-accels.c
@@ -56,6 +56,7 @@
 #define ACCEL_PATH_COPY                 ACCEL_PATH_ROOT "EditCopy"
 #define ACCEL_PATH_PASTE                ACCEL_PATH_ROOT "EditPaste"
 #define ACCEL_PATH_TOGGLE_MENUBAR       ACCEL_PATH_ROOT "ViewMenubar"
+#define ACCEL_PATH_TOGGLE_TABBAR        ACCEL_PATH_ROOT "ViewTabbar"
 #define ACCEL_PATH_FULL_SCREEN          ACCEL_PATH_ROOT "ViewFullscreen"
 #define ACCEL_PATH_RESET                ACCEL_PATH_ROOT "TerminalReset"
 #define ACCEL_PATH_RESET_AND_CLEAR      ACCEL_PATH_ROOT "TerminalResetClear"
@@ -90,6 +91,7 @@
 #define KEY_SAVE_CONTENTS       CONF_KEYS_PREFIX "/save_contents"
 #define KEY_SET_TERMINAL_TITLE  CONF_KEYS_PREFIX "/set_window_title"
 #define KEY_TOGGLE_MENUBAR      CONF_KEYS_PREFIX "/toggle_menubar"
+#define KEY_TOGGLE_TABBAR       CONF_KEYS_PREFIX "/toggle_tabbar"
 #define KEY_ZOOM_IN             CONF_KEYS_PREFIX "/zoom_in"
 #define KEY_ZOOM_NORMAL         CONF_KEYS_PREFIX "/zoom_normal"
 #define KEY_ZOOM_OUT            CONF_KEYS_PREFIX "/zoom_out"
@@ -146,6 +148,8 @@ static KeyEntry view_entries[] =
 {
   { N_("Hide and Show menubar"),
     KEY_TOGGLE_MENUBAR, ACCEL_PATH_TOGGLE_MENUBAR, 0, 0, NULL, FALSE, TRUE },
+  { N_("Hide and Show tab-bar"),
+    KEY_TOGGLE_TABBAR, ACCEL_PATH_TOGGLE_TABBAR, 0, 0, NULL, FALSE, TRUE },
   { N_("Full Screen"),
     KEY_FULL_SCREEN, ACCEL_PATH_FULL_SCREEN, 0, GDK_F11, NULL, FALSE, TRUE },
   { N_("Zoom In"),
diff --git a/src/terminal-app.c b/src/terminal-app.c
index 39ea6bc..a82f473 100644
--- a/src/terminal-app.c
+++ b/src/terminal-app.c
@@ -1766,6 +1766,9 @@ terminal_app_handle_options (TerminalApp *app,
       if (iw->force_menubar_state)
         terminal_window_set_menubar_visible (window, iw->menubar_state);
 
+      if (iw->force_tabbar_state)
+        terminal_window_set_tabbar_visible (window, iw->tabbar_state);
+
       if (iw->start_fullscreen)
         gtk_window_fullscreen (GTK_WINDOW (window));
       if (iw->start_maximized)
diff --git a/src/terminal-app.h b/src/terminal-app.h
index 300d91a..6f824ee 100644
--- a/src/terminal-app.h
+++ b/src/terminal-app.h
@@ -44,6 +44,7 @@ G_BEGIN_DECLS
 #define TERMINAL_CONFIG_WINDOW_PROP_GEOMETRY         "Geometry"
 #define TERMINAL_CONFIG_WINDOW_PROP_MAXIMIZED        "Maximized"
 #define TERMINAL_CONFIG_WINDOW_PROP_MENUBAR_VISIBLE  "MenubarVisible"
+#define TERMINAL_CONFIG_WINDOW_PROP_TABBAR_VISIBLE   "TabbarVisible"
 #define TERMINAL_CONFIG_WINDOW_PROP_ROLE             "Role"
 #define TERMINAL_CONFIG_WINDOW_PROP_TABS             "Terminals"
 
diff --git a/src/terminal-options.c b/src/terminal-options.c
index 39ef2ba..92006e9 100644
--- a/src/terminal-options.c
+++ b/src/terminal-options.c
@@ -107,6 +107,14 @@ apply_defaults (TerminalOptions *options,
       options->default_window_menubar_forced = FALSE;
     }
 
+  if (options->default_window_tabbar_forced)
+    {
+      iw->force_tabbar_state = TRUE;
+      iw->tabbar_state = options->default_window_tabbar_state;
+
+      options->default_window_tabbar_forced = FALSE;
+    }
+
   iw->start_fullscreen |= options->default_fullscreen;
   iw->start_maximized |= options->default_maximize;
 }
@@ -412,6 +420,70 @@ option_hide_menubar_callback (const gchar *option_name,
 }
 
 static gboolean
+option_show_tabbar_callback (const gchar *option_name,
+                             const gchar *value,
+                             gpointer     data,
+                             GError     **error)
+{
+  TerminalOptions *options = data;
+  InitialWindow *iw;
+
+  if (options->initial_windows)
+    {
+      iw = g_list_last (options->initial_windows)->data;
+      if (iw->force_tabbar_state && iw->tabbar_state == TRUE)
+        {
+          g_printerr (_("\"%s\" option given twice for the same window\n"),
+                        "--show-tabbar");
+
+          return TRUE;
+        }
+
+      iw->force_tabbar_state = TRUE;
+      iw->tabbar_state = TRUE;
+    }
+  else
+    {
+      options->default_window_tabbar_forced = TRUE;
+      options->default_window_tabbar_state = TRUE;
+    }
+
+  return TRUE;
+}
+
+static gboolean
+option_hide_tabbar_callback (const gchar *option_name,
+                             const gchar *value,
+                             gpointer     data,
+                             GError     **error)
+{
+  TerminalOptions *options = data;
+  InitialWindow *iw;
+
+  if (options->initial_windows)
+    {
+      iw = g_list_last (options->initial_windows)->data;
+
+      if (iw->force_tabbar_state && iw->tabbar_state == FALSE)
+        {
+          g_printerr (_("\"%s\" option given twice for the same window\n"),
+                        "--hide-menubar");
+          return TRUE;
+        }
+
+      iw->force_tabbar_state = TRUE;
+      iw->tabbar_state = FALSE;
+    }
+  else
+    {
+      options->default_window_tabbar_forced = TRUE;
+      options->default_window_tabbar_state = FALSE;
+    }
+
+  return TRUE;
+}
+
+static gboolean
 option_maximize_callback (const gchar *option_name,
                           const gchar *value,
                           gpointer     data,
@@ -703,6 +775,8 @@ terminal_options_parse (const char *working_directory,
   options->remote_arguments = remote_arguments;
   options->default_window_menubar_forced = FALSE;
   options->default_window_menubar_state = TRUE;
+  options->default_window_tabbar_forced = FALSE;
+  options->default_window_tabbar_state = TRUE;
   options->default_fullscreen = FALSE;
   options->default_maximize = FALSE;
   options->execute = FALSE;
@@ -849,6 +923,11 @@ terminal_options_merge_config (TerminalOptions *options,
           iw->force_menubar_state = TRUE;
           iw->menubar_state = g_key_file_get_boolean (key_file, window_group, TERMINAL_CONFIG_WINDOW_PROP_MENUBAR_VISIBLE, NULL);
         }
+      if (g_key_file_has_key (key_file, window_group, TERMINAL_CONFIG_WINDOW_PROP_TABBAR_VISIBLE, NULL))
+        {
+          iw->force_tabbar_state = TRUE;
+          iw->tabbar_state = g_key_file_get_boolean (key_file, window_group, TERMINAL_CONFIG_WINDOW_PROP_TABBAR_VISIBLE, NULL);
+        }
 
       for (j = 0; tab_groups[j]; ++j)
         {
@@ -1011,6 +1090,24 @@ get_goption_context (TerminalOptions *options)
       NULL
     },
     {
+      "show-tabbar",
+      0,
+      G_OPTION_FLAG_NO_ARG,
+      G_OPTION_ARG_CALLBACK,
+      option_show_tabbar_callback,
+      N_("Turn on the tab-bar if window has multiple tabs"),
+      NULL
+    },
+    {
+      "hide-tabbar",
+      0,
+      G_OPTION_FLAG_NO_ARG,
+      G_OPTION_ARG_CALLBACK,
+      option_hide_tabbar_callback,
+      N_("Turn off the tab-bar"),
+      NULL
+    },
+    {
       "maximize",
       0,
       G_OPTION_FLAG_NO_ARG,
diff --git a/src/terminal-options.h b/src/terminal-options.h
index 59fa065..68dbc62 100644
--- a/src/terminal-options.h
+++ b/src/terminal-options.h
@@ -36,6 +36,8 @@ typedef struct
   GList   *initial_windows;
   gboolean default_window_menubar_forced;
   gboolean default_window_menubar_state;
+  gboolean default_window_tabbar_forced;
+  gboolean default_window_tabbar_state;
   gboolean default_fullscreen;
   gboolean default_maximize;
   char    *default_role;
@@ -76,6 +78,9 @@ typedef struct
   gboolean force_menubar_state;
   gboolean menubar_state;
 
+  gboolean force_tabbar_state;
+  gboolean tabbar_state;
+
   gboolean start_fullscreen;
   gboolean start_maximized;
 
diff --git a/src/terminal-profile.c b/src/terminal-profile.c
index 3481d5e..9e072f4 100644
--- a/src/terminal-profile.c
+++ b/src/terminal-profile.c
@@ -62,6 +62,7 @@ enum
   PROP_DEFAULT_SIZE_COLUMNS,
   PROP_DEFAULT_SIZE_ROWS,
   PROP_DEFAULT_SHOW_MENUBAR,
+  PROP_DEFAULT_SHOW_TABBAR,
   PROP_DELETE_BINDING,
   PROP_EXIT_ACTION,
   PROP_FONT,
@@ -101,6 +102,7 @@ enum
 #define KEY_CURSOR_SHAPE "cursor_shape"
 #define KEY_CUSTOM_COMMAND "custom_command"
 #define KEY_DEFAULT_SHOW_MENUBAR "default_show_menubar"
+#define KEY_DEFAULT_SHOW_TABBAR "default_show_tabbar"
 #define KEY_DEFAULT_SIZE_COLUMNS "default_size_columns"
 #define KEY_DEFAULT_SIZE_ROWS "default_size_rows"
 #define KEY_DELETE_BINDING "delete_binding"
@@ -140,6 +142,7 @@ enum
 #define DEFAULT_CURSOR_SHAPE          (VTE_CURSOR_SHAPE_BLOCK)
 #define DEFAULT_CUSTOM_COMMAND        ("")
 #define DEFAULT_DEFAULT_SHOW_MENUBAR  (TRUE)
+#define DEFAULT_DEFAULT_SHOW_TABBAR   (TRUE)
 #define DEFAULT_DEFAULT_SIZE_COLUMNS  (80)
 #define DEFAULT_DEFAULT_SIZE_ROWS     (24)
 #define DEFAULT_DELETE_BINDING        (VTE_ERASE_DELETE_SEQUENCE)
@@ -1297,6 +1300,7 @@ terminal_profile_class_init (TerminalProfileClass *klass)
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (ALLOW_BOLD, DEFAULT_ALLOW_BOLD, KEY_ALLOW_BOLD);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (BOLD_COLOR_SAME_AS_FG, DEFAULT_BOLD_COLOR_SAME_AS_FG, KEY_BOLD_COLOR_SAME_AS_FG);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (DEFAULT_SHOW_MENUBAR, DEFAULT_DEFAULT_SHOW_MENUBAR, KEY_DEFAULT_SHOW_MENUBAR);
+  TERMINAL_PROFILE_PROPERTY_BOOLEAN (DEFAULT_SHOW_TABBAR, DEFAULT_DEFAULT_SHOW_TABBAR, KEY_DEFAULT_SHOW_TABBAR);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (LOGIN_SHELL, DEFAULT_LOGIN_SHELL, KEY_LOGIN_SHELL);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (SCROLL_BACKGROUND, DEFAULT_SCROLL_BACKGROUND, KEY_SCROLL_BACKGROUND);
   TERMINAL_PROFILE_PROPERTY_BOOLEAN (SCROLLBACK_UNLIMITED, DEFAULT_SCROLLBACK_UNLIMITED, KEY_SCROLLBACK_UNLIMITED);
diff --git a/src/terminal-profile.h b/src/terminal-profile.h
index ad52a53..6034c15 100644
--- a/src/terminal-profile.h
+++ b/src/terminal-profile.h
@@ -78,6 +78,7 @@ typedef enum
 #define TERMINAL_PROFILE_CURSOR_SHAPE           "cursor-shape"
 #define TERMINAL_PROFILE_CUSTOM_COMMAND         "custom-command"
 #define TERMINAL_PROFILE_DEFAULT_SHOW_MENUBAR   "default-show-menubar"
+#define TERMINAL_PROFILE_DEFAULT_SHOW_TABBAR    "default-show-tabbar"
 #define TERMINAL_PROFILE_DEFAULT_SIZE_COLUMNS   "default-size-columns"
 #define TERMINAL_PROFILE_DEFAULT_SIZE_ROWS      "default-size-rows"
 #define TERMINAL_PROFILE_DELETE_BINDING         "delete-binding"
diff --git a/src/terminal-window.c b/src/terminal-window.c
index fa4ca84..45342a0 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -71,6 +71,9 @@ struct _TerminalWindowPrivate
   guint menubar_visible : 1;
   guint use_default_menubar_visibility : 1;
 
+  guint tabbar_visible : 1;
+  guint use_default_tabbar_visibility : 1;
+
   /* Compositing manager integration */
   guint have_argb_visual : 1;
 
@@ -158,6 +161,8 @@ static void file_new_profile_callback         (GtkAction *action,
                                                TerminalWindow *window);
 static void view_menubar_toggled_callback     (GtkToggleAction *action,
                                                TerminalWindow *window);
+static void view_tabbar_toggled_callback      (GtkToggleAction *action,
+                                               TerminalWindow *window);
 static void view_fullscreen_toggled_callback  (GtkToggleAction *action,
                                                TerminalWindow *window);
 static void view_zoom_in_callback             (GtkAction *action,
@@ -1084,11 +1089,8 @@ update_tab_visibility (TerminalWindow *window,
 {
   TerminalWindowPrivate *priv = window->priv;
   gboolean show_tabs;
-  guint num;
-
-  num = gtk_notebook_get_n_pages (GTK_NOTEBOOK (priv->notebook));
 
-  show_tabs = (num + change) > 1;
+  show_tabs = priv->tabbar_visible && (gtk_notebook_get_n_pages (GTK_NOTEBOOK (priv->notebook)) + change) > 1;
   gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), show_tabs);
 }
 
@@ -1865,11 +1867,14 @@ terminal_window_init (TerminalWindow *window)
   
   const GtkToggleActionEntry toggle_menu_entries[] =
     {
-      /* View Menu */
       { "ViewMenubar", NULL, N_("Show _Menubar"), NULL,
         NULL,
         G_CALLBACK (view_menubar_toggled_callback),
         FALSE },
+      { "ViewTabbar", NULL, N_("Show _Tab-bar"), NULL,
+        NULL,
+        G_CALLBACK (view_tabbar_toggled_callback),
+        FALSE },
       { "ViewFullscreen", NULL, N_("_Full Screen"), NULL,
         NULL,
         G_CALLBACK (view_fullscreen_toggled_callback),
@@ -1901,8 +1906,7 @@ terminal_window_init (TerminalWindow *window)
   gtk_window_set_title (GTK_WINDOW (window), _("Terminal"));
 
   priv->active_screen = NULL;
-  priv->menubar_visible = FALSE;
-  
+
   main_vbox = gtk_vbox_new (FALSE, 0);
   gtk_container_add (GTK_CONTAINER (window), main_vbox);
   gtk_widget_show (main_vbox);
@@ -2002,6 +2006,9 @@ terminal_window_init (TerminalWindow *window)
   terminal_window_set_menubar_visible (window, TRUE);
   priv->use_default_menubar_visibility = TRUE;
 
+  terminal_window_set_tabbar_visible (window, TRUE);
+  priv->use_default_tabbar_visibility = TRUE;
+
   terminal_window_update_size_to_menu (window);
 
   /* We have to explicitly call this, since screen-changed is NOT
@@ -2426,6 +2433,47 @@ terminal_window_get_menubar_visible (TerminalWindow *window)
   return priv->menubar_visible;
 }
 
+void
+terminal_window_set_tabbar_visible (TerminalWindow *window,
+				    gboolean        setting)
+{
+  TerminalWindowPrivate *priv = window->priv;
+  GtkAction *action;
+
+  /* it's been set now, so don't override when adding a screen.
+   * this side effect must happen before we short-circuit below.
+   */
+  priv->use_default_tabbar_visibility = FALSE;
+
+  if (setting == priv->tabbar_visible)
+    return;
+
+  priv->tabbar_visible = setting;
+
+  action = gtk_action_group_get_action (priv->action_group, "ViewTabbar");
+  gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), setting);
+
+  update_tab_visibility (window, 0);
+
+  /* FIXMEchpe: use GTK_WIDGET_REALIZED instead? */
+  if (priv->active_screen)
+    {
+      _terminal_debug_print (TERMINAL_DEBUG_GEOMETRY,
+                             "[window %p] setting size after toggling tabbar visibility\n",
+                             window);
+
+      terminal_window_set_size (window, priv->active_screen, TRUE);
+    }
+}
+
+gboolean
+terminal_window_get_tabbar_visible (TerminalWindow *window)
+{
+  TerminalWindowPrivate *priv = window->priv;
+  
+  return priv->tabbar_visible;
+}
+
 GtkWidget *
 terminal_window_get_notebook (TerminalWindow *window)
 {
@@ -2656,6 +2704,15 @@ notebook_page_selected_callback (GtkWidget       *notebook,
       terminal_window_set_menubar_visible (window, setting);
     }
 
+  /* Override tabbar setting if it wasn't restored from session */
+  if (priv->use_default_tabbar_visibility)
+    {
+      gboolean setting =
+        terminal_profile_get_property_boolean (terminal_screen_get_profile (screen), TERMINAL_PROFILE_DEFAULT_SHOW_TABBAR);
+
+      terminal_window_set_tabbar_visible (window, setting);
+    }
+
   sync_screen_icon_title_set (screen, NULL, window);
   sync_screen_icon_title (screen, NULL, window);
   sync_screen_title (screen, NULL, window);
@@ -3330,6 +3387,13 @@ view_menubar_toggled_callback (GtkToggleAction *action,
 }
 
 static void
+view_tabbar_toggled_callback (GtkToggleAction *action,
+                              TerminalWindow *window)
+{
+  terminal_window_set_tabbar_visible (window, gtk_toggle_action_get_active (action));
+}
+
+static void
 view_fullscreen_toggled_callback (GtkToggleAction *action,
                                   TerminalWindow *window)
 {
@@ -3750,6 +3814,9 @@ terminal_window_save_state (TerminalWindow *window,
   g_key_file_set_boolean (key_file, group, TERMINAL_CONFIG_WINDOW_PROP_MENUBAR_VISIBLE,
                           priv->menubar_visible);
 
+  g_key_file_set_boolean (key_file, group, TERMINAL_CONFIG_WINDOW_PROP_TABBAR_VISIBLE,
+                          priv->tabbar_visible);
+
   g_key_file_set_string (key_file, group, TERMINAL_CONFIG_WINDOW_PROP_ROLE,
                          gtk_window_get_role (GTK_WINDOW (window)));
 
diff --git a/src/terminal-window.h b/src/terminal-window.h
index 43da5f2..1926289 100644
--- a/src/terminal-window.h
+++ b/src/terminal-window.h
@@ -69,14 +69,19 @@ void terminal_window_move_screen (TerminalWindow *source_window,
                                   TerminalScreen *screen,
                                   int dest_position);
 
-/* Menubar visibility is part of session state, except that
+/* Menubar and tabbar visibility are part of session state, except that
  * if it isn't restored from session, the window gets the setting
  * from the profile of the first screen added to the window
  */
+
 void terminal_window_set_menubar_visible     (TerminalWindow *window,
                                               gboolean        setting);
 gboolean terminal_window_get_menubar_visible (TerminalWindow *window);
 
+void terminal_window_set_tabbar_visible     (TerminalWindow *window,
+                                             gboolean        setting);
+gboolean terminal_window_get_tabbar_visible (TerminalWindow *window);
+
 void            terminal_window_switch_screen (TerminalWindow *window,
                                                TerminalScreen *screen);
 TerminalScreen* terminal_window_get_active (TerminalWindow *window);
diff --git a/src/terminal.xml b/src/terminal.xml
index 4f3a318..620f7e1 100644
--- a/src/terminal.xml
+++ b/src/terminal.xml
@@ -25,6 +25,7 @@
     </menu>
     <menu action="View">
       <menuitem action="ViewMenubar" />
+      <menuitem action="ViewTabbar" />
       <menuitem action="ViewFullscreen" />
       <separator />
       <menuitem action="ViewZoomIn" />
@@ -85,6 +86,7 @@
         <menuitem action="EditCurrentProfile" />
     </menu>
     <menuitem action="ViewMenubar" />
+    <menuitem action="ViewTabbar" />
     <menuitem action="PopupLeaveFullscreen" />
     <separator />
     <menuitem action="PopupInputMethods" />
