--- /tmp/terminal.c	2008-12-22 16:48:42.000000000 +0100
+++ src/terminal.c	2008-12-22 22:03:45.000000000 +0100
@@ -1200,11 +1200,18 @@
   display_name = gdk_display_get_name (display);
   parsing_results->display_name = g_strdup (display_name);
   
+  char *cwd;
+  /* Forward out working directory */
+  cwd = g_get_current_dir ();
+  insert_args (&argc_copy, argv_copy,
+             "--default-working-directory", cwd);
+  parsing_results->default_working_dir = cwd;
+  g_chdir(g_get_home_dir());
+
   option_parsing_results_apply_directory_defaults (parsing_results);
 
   if (parsing_results->use_factory)
     {
-      char *cwd;
       
       if (parsing_results->startup_id != NULL)
         {
@@ -1216,12 +1223,6 @@
       /* Forward our display to the child */
       insert_args (&argc_copy, argv_copy,
                    "--display", parsing_results->display_name);
-      
-      /* Forward out working directory */
-      cwd = g_get_current_dir ();
-      insert_args (&argc_copy, argv_copy,
-                   "--default-working-directory", cwd);
-      g_free (cwd);
 
       if (terminal_invoke_factory (argc_copy, argv_copy))
         {
