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:27:21.000000000 -0300
@@ -145,7 +145,9 @@
 enum {
   OPTION_COMMAND = 1,
   OPTION_EXECUTE,
+  OPTION_WINDOW,
   OPTION_WINDOW_WITH_PROFILE,
+  OPTION_TAB,
   OPTION_TAB_WITH_PROFILE,
   OPTION_WINDOW_WITH_PROFILE_ID,
   OPTION_TAB_WITH_PROFILE_ID,
@@ -191,6 +193,15 @@
     NULL
   },
   {
+    "window",
+    '\0',
+    POPT_ARG_NONE,
+    NULL,
+    OPTION_WINDOW,
+    N_("Open a new window containing a tab with the given profile. More than one of these options can be provided."),
+    NULL
+  },
+  {
     "window-with-profile",
     '\0',
     POPT_ARG_STRING,
@@ -200,6 +211,15 @@
     N_("PROFILENAME")
   },
   {
+    "tab",
+    '\0',
+    POPT_ARG_NONE,
+    NULL,
+    OPTION_TAB,
+    N_("Open a new tab in the last-opened window with the default profile. More than one of these options can be provided."),
+    NULL
+  },
+  {
     "tab-with-profile",
     '\0',
     POPT_ARG_STRING,
@@ -531,7 +551,7 @@
 
   it = g_new (InitialTab, 1);
 
-  it->profile = g_strdup (profile);
+  it->profile = profile ? g_strdup (profile) : NULL;
   it->profile_is_id = is_id;
   it->exec_argv = NULL;
   it->title = NULL;
@@ -545,7 +565,7 @@
 static void
 initial_tab_free (InitialTab *it)
 {
-  g_free (it->profile);
+  if (it->profile) g_free (it->profile);
   g_strfreev (it->exec_argv);
   g_free (it->title);
   g_free (it->working_dir);
@@ -764,34 +784,46 @@
       }
       break;
           
+    case OPTION_WINDOW:
     case OPTION_WINDOW_WITH_PROFILE:
     case OPTION_WINDOW_WITH_PROFILE_ID:
       {
         InitialWindow *iw;
+        const char *profile;
 
 
-        if (arg == NULL)
+        if (opt->val == OPTION_WINDOW)
+          profile = NULL;
+        else if (arg == NULL)
           {
             g_printerr (_("Option --window-with-profile requires an argument specifying what profile to use\n"));
             exit (1);
           }
+        else
+          profile = arg;
 
-        iw = add_new_window (results, arg,
+        iw = add_new_window (results, profile,
                              opt->val == OPTION_WINDOW_WITH_PROFILE_ID);
       }
       break;
 
+    case OPTION_TAB:
     case OPTION_TAB_WITH_PROFILE:
     case OPTION_TAB_WITH_PROFILE_ID:
       {
         InitialWindow *iw;
+        const char *profile;
 
 
-        if (arg == NULL)
+        if (opt->val == OPTION_TAB)
+          profile = NULL;
+        else if (arg == NULL)
           {
             g_printerr (_("Option --tab-with-profile requires an argument specifying what profile to use\n"));
             exit (1);
           }
+        else
+          profile = arg;
 
                 
         if (results->initial_windows)
@@ -799,12 +831,12 @@
             iw = g_list_last (results->initial_windows)->data;
 
             iw->tabs = g_list_append (iw->tabs,
-                                      initial_tab_new (arg,
+                                      initial_tab_new (profile,
                                                        opt->val == OPTION_TAB_WITH_PROFILE_ID));
           }
         else
           {
-            iw = add_new_window (results, arg, 
+            iw = add_new_window (results, profile, 
                                  opt->val == OPTION_TAB_WITH_PROFILE_ID);
           }
       }
