diff -Naurb src.orig/terminal.c src/terminal.c
--- src.orig/terminal.c	2003-02-05 23:34:23.000000000 -0300
+++ src/terminal.c	2003-03-24 03:07:42.000000000 -0300
@@ -158,6 +158,7 @@
   OPTION_TITLE,
   OPTION_WORKING_DIRECTORY,
   OPTION_ZOOM,
+  OPTION_ACTIVE,
   OPTION_COMPAT,
   OPTION_LAST
 };  
@@ -308,6 +309,15 @@
     N_("Set the terminal's zoom factor (1.0 = normal size)"),
     N_("ZOOMFACTOR")
   },
+  {
+    "active",
+    '\0',
+    POPT_ARG_NONE,
+    NULL,
+    OPTION_ACTIVE,
+    N_("Set the last specified tab as the active one in its window"),
+    N_("ZOOMFACTOR")
+  },
   
   /*
    * Crappy old compat args
@@ -509,6 +519,7 @@
   char *working_dir;
   double zoom;
   guint zoom_set : 1;
+  guint active : 1;
 } InitialTab;
 
 typedef struct
@@ -538,6 +549,7 @@
   it->working_dir = NULL;
   it->zoom = 1.0;
   it->zoom_set = FALSE;
+  it->active = FALSE;
   
   return it;
 }
@@ -1030,6 +1042,15 @@
       }
       break;
 
+    case OPTION_ACTIVE:
+      {
+        InitialTab *it;
+
+        it = ensure_top_tab (results);
+
+        it->active = TRUE;
+      }
+      break;
       
     case OPTION_COMPAT:
       g_printerr (_("Option given which is no longer supported in this version of gnome-terminal; you might want to create a profile with the desired setting, and use the new --window-with-profile option\n"));
@@ -1239,12 +1260,14 @@
       TerminalProfile *profile;
       GList *tmp2;
       TerminalWindow *current_window;
+      TerminalScreen *active_screen;
       
       InitialWindow *iw = tmp->data;
 
       g_assert (iw->tabs);
 
       current_window = NULL;
+      active_screen = NULL;
       tmp2 = iw->tabs;
       while (tmp2 != NULL)
         {
@@ -1309,9 +1332,21 @@
                                          NULL, NULL, -1);
             }
           
+          if (it->active)
+            {
+              /* TerminalWindow's interface does not expose the list of TerminalScreens,
+               * so we use the fact that terminal_app_new_terminal() sets the new terminal
+               * to be the active one. Not nice.
+               */
+              active_screen = terminal_window_get_active(current_window);
+             }
+
           tmp2 = tmp2->next;
         }
       
+      if (active_screen)
+        terminal_window_set_active(current_window, active_screen);
+
       tmp = tmp->next;
     }
 
@@ -3126,6 +3161,8 @@
 
   argc += n_windows; /* one --role per window */
 
+  argc += n_windows; /* one --active per window */
+
   argc += n_tabs - n_windows; /* one --with-tab-profile-internal-id
                                * per extra tab
                                */
@@ -3156,6 +3193,9 @@
       GList *tabs;
       GList *tmp2;
       TerminalWindow *window = tmp->data;
+      TerminalWindow *active_screen;
+
+      active_screen = terminal_window_get_active(window);
       
       tabs = terminal_window_list_screens (window);
 
@@ -3191,6 +3231,12 @@
               ++i;
             }
 
+          if (screen == active_screen)
+            {
+              argv[i] = g_strdup ("--active");
+              ++i;
+            }
+
           override_command = terminal_screen_get_override_command (screen);
           if (override_command)
             {
