--- sdk/ecere/src/sys/_System.c	2010-02-05 01:25:44.616141944 -0500
+++ sdk/ecere/src/sys/_System.c	2010-02-05 01:29:33.016143083 -0500
@@ -278,9 +278,23 @@
 
 #if !defined(__WIN32__)
    {
-      strcat(filePath, " &");
-      if(system(filePath) != -1)
-         result = true;
+      const char *cmd = "xdg-open";
+      switch (fork()) {
+         case -1: // fork() failed
+            //fprintf(stderr, "%s: %s\n", cmd, strerror(errno));
+            break;
+         case 0:  // child process
+            execlp(cmd, cmd, filePath, NULL);
+            exit(EXIT_FAILURE); //if exec failed, end child process
+         default: // parent process
+            /*
+             * The fork succeeded, and the child process is on its way.
+             * We don't know if the command will start successfully or not;
+             * all we can say is "Bon voyage!"
+             */
+            result = true;
+            break;
+      }
    }
 #elif defined(ECERE_VANILLA)
    {
