diff -uNr termit-1.1.3.orig/src/callbacks.c termit-1.1.3/src/callbacks.c
--- termit-1.1.3.orig/src/callbacks.c	2008-02-06 21:04:42.000000000 +0800
+++ termit-1.1.3/src/callbacks.c	2008-02-24 04:01:47.000000000 +0800
@@ -69,6 +69,9 @@
 
 	termit_del_tab();
 	
+	if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(termit.notebook)) == 1 ) && configs.auto_hide_tab_tray)
+            termit_show_tabs_bar(FALSE);
+	
 	if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(termit.notebook)) == 0)
 		termit_quit();
 }
@@ -197,6 +200,10 @@
 void termit_close_tab()
 {
     termit_del_tab();
+
+    if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(termit.notebook)) == 1 ) && configs.auto_hide_tab_tray)
+        termit_show_tabs_bar(FALSE);
+
     if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(termit.notebook)) == 0)
         termit_quit();
 }
diff -uNr termit-1.1.3.orig/src/configs.c termit-1.1.3/src/configs.c
--- termit-1.1.3.orig/src/configs.c	2008-02-24 04:21:38.000000000 +0800
+++ termit-1.1.3/src/configs.c	2008-02-24 04:01:35.000000000 +0800
@@ -103,6 +103,16 @@
 	    configs.geometry_y = default_geometry_y;
 	}
     }
+
+    value = g_key_file_get_value(keyfile, "termit", "auto_hide_tab_tray", &error);
+    if (!value)
+    {
+        configs.auto_hide_tab_tray = 0;
+        config_error(&error);
+    }
+    else
+        configs.auto_hide_tab_tray = atoi(value);
+
 }
 
 static void set_termit_options()
diff -uNr termit-1.1.3.orig/src/configs.h termit-1.1.3/src/configs.h
--- termit-1.1.3.orig/src/configs.h	2008-02-24 04:21:38.000000000 +0800
+++ termit-1.1.3/src/configs.h	2008-02-24 04:01:10.000000000 +0800
@@ -14,6 +14,7 @@
     gint geometry_y;
     gint geometry_cols;
     gint geometry_rows;
+    gint auto_hide_tab_tray;
     GArray *bookmarks;
 };
 struct Bookmark
diff -uNr termit-1.1.3.orig/src/termit.c termit-1.1.3/src/termit.c
--- termit-1.1.3.orig/src/termit.c	2008-02-06 21:04:42.000000000 +0800
+++ termit-1.1.3/src/termit.c	2008-02-24 04:01:59.000000000 +0800
@@ -134,7 +134,11 @@
     termit.statusbar = create_statusbar();
     termit.menu_bar = create_menubar();
     termit.notebook = gtk_notebook_new();
-    gtk_notebook_set_show_tabs(GTK_NOTEBOOK(termit.notebook), TRUE);
+
+    if (configs.auto_hide_tab_tray)
+	gtk_notebook_set_show_tabs(GTK_NOTEBOOK(termit.notebook), FALSE);
+    else
+	gtk_notebook_set_show_tabs(GTK_NOTEBOOK(termit.notebook), TRUE);
     if (sessionFile)
     {
         termit_load_session(sessionFile);
diff -uNr termit-1.1.3.orig/src/utils.c termit-1.1.3/src/utils.c
--- termit-1.1.3.orig/src/utils.c	2008-02-24 04:33:14.000000000 +0800
+++ termit-1.1.3/src/utils.c	2008-02-24 04:34:51.000000000 +0800
@@ -6,6 +6,41 @@
 
 extern struct TermitData termit;
 extern struct Configs configs;
+struct VteGeometry vtegeometry;
+
+void termit_show_tabs_bar(gboolean Hide)
+{
+    struct TermitTab tab;
+
+    tab = g_array_index(termit.tabs, struct TermitTab, 0);
+    gtk_widget_get_child_requisition (GTK_WIDGET(tab.vte), &vtegeometry.oldvte);
+
+    gtk_notebook_set_show_tabs(GTK_NOTEBOOK(termit.notebook), Hide);
+    vtegeometry.resizing=TRUE;
+}
+
+void termit_fix_vte_geometry(GtkWidget *widget, gpointer data)
+{
+    if (vtegeometry.resizing)
+    {
+        gint winWidth, winHeight;
+        GtkRequisition vteNew;
+        struct TermitTab tab;
+	tab = g_array_index(termit.tabs, struct TermitTab, 0);      
+        gtk_window_get_size(GTK_WINDOW(termit.main_window), &winWidth, &winHeight);
+        gtk_widget_get_child_requisition (GTK_WIDGET(tab.vte), &vteNew);
+
+	if ((vteNew.width != vtegeometry.oldvte.width) ||
+	    (vteNew.height != vtegeometry.oldvte.height))
+	{
+	    gtk_window_resize(GTK_WINDOW(termit.main_window),
+	        winWidth + vtegeometry.oldvte.width - vteNew.width,
+		winHeight + vtegeometry.oldvte.height - vteNew.height);
+            gtk_window_get_size(GTK_WINDOW(termit.main_window), &winWidth, &winHeight);
+	    vtegeometry.resizing=FALSE;
+	}
+    }
+}
 
 void termit_append_tab_with_details(const gchar* tab_name, const gchar* shell, const gchar* working_dir)
 {
@@ -43,6 +78,8 @@
         return;
     }
 
+    if (configs.auto_hide_tab_tray)
+        g_signal_connect(G_OBJECT(tab.vte), "size-request", G_CALLBACK(termit_fix_vte_geometry), NULL);
     g_signal_connect(G_OBJECT(tab.vte), "child-exited", G_CALLBACK(termit_child_exited), NULL);
     g_signal_connect(G_OBJECT(tab.vte), "eof", G_CALLBACK(termit_eof), NULL);
     g_signal_connect_swapped(G_OBJECT(tab.vte), "button-press-event", G_CALLBACK(termit_popup), termit.menu);
@@ -56,6 +93,9 @@
     gtk_window_set_focus(GTK_WINDOW(termit.main_window), tab.vte);
 
     vte_terminal_set_font(VTE_TERMINAL(tab.vte), termit.font);
+
+    if ((gtk_notebook_get_n_pages(GTK_NOTEBOOK(termit.notebook)) == 2) && configs.auto_hide_tab_tray)
+        termit_show_tabs_bar(TRUE);
 }
 
 void termit_append_tab()
diff -uNr termit-1.1.3.orig/src/utils.h termit-1.1.3/src/utils.h
--- termit-1.1.3.orig/src/utils.h	2008-02-06 21:04:42.000000000 +0800
+++ termit-1.1.3/src/utils.h	2008-02-24 03:30:00.000000000 +0800
@@ -47,5 +47,11 @@
     pid_t pid;
 };
 
+struct VteGeometry
+{
+    gboolean resizing;
+    GtkRequisition oldvte;
+};
+
 #endif /* UTILS_H */
 
