diff -up mutter-3.0.1/src/core/session.c.save mutter-3.0.1/src/core/session.c
--- mutter-3.0.1/src/core/session.c.save	2011-04-27 21:44:14.349244352 -0400
+++ mutter-3.0.1/src/core/session.c	2011-04-27 21:52:28.558065891 -0400
@@ -308,13 +308,16 @@ meta_session_init (const char *previous_
      */
     char hint = SmRestartIfRunning;
     char priority = 20; /* low to run before other apps */
-    
+    char *prgname;
+
+    prgname = g_get_prgname ();
+
     prop1.name = SmProgram;
     prop1.type = SmARRAY8;
     prop1.num_vals = 1;
     prop1.vals = &prop1val;
-    prop1val.value = "mutter";
-    prop1val.length = strlen ("mutter");
+    prop1val.value = prgname;
+    prop1val.length = strlen (prgname);
 
     /* twm sets getuid() for this, but the SM spec plainly
      * says pw_name, twm is on crack
@@ -573,6 +576,9 @@ set_clone_restart_commands (void)
   char *discardv[10];
   int i;
   SmProp prop1, prop2, prop3, *props[3];
+  char *prgname;
+
+  prgname = g_get_prgname ();
   
   /* Restart (use same client ID) */
   
@@ -582,7 +588,7 @@ set_clone_restart_commands (void)
   g_return_if_fail (client_id);
   
   i = 0;
-  restartv[i] = "mutter";
+  restartv[i] = prgname;
   ++i;
   restartv[i] = "--sm-client-id";
   ++i;
@@ -603,7 +609,7 @@ set_clone_restart_commands (void)
   /* Clone (no client ID) */
   
   i = 0;
-  clonev[i] = "mutter";
+  clonev[i] = prgname;
   ++i;
   clonev[i] = NULL;
 
