rendered paste bodydiff --git a/src/screen.c b/src/screen.c
index 41f031e..1051a08 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3282,8 +3283,37 @@ runCommand (CompScreen *s,
if (fork () == 0)
{
+ /* build a display string that uses the right screen number */
+ int stringLen;
+ char *delimiter, *screenString;
+
setsid ();
- putenv (s->display->displayString);
+
+ /* 5 extra chars should be enough for pretty much every situation */
+ stringLen = strlen (s->display->displayString) + 5;
+ screenString = malloc (sizeof (char) * stringLen);
+
+ if (screenString)
+ {
+ delimiter = strrchr (s->display->displayString, ':');
+ if (delimiter)
+ {
+ delimiter = strchr (delimiter, '.');
+ if (delimiter)
+ *p = '\0';
+ }
+
+ snprintf (screenString, stringLen, "%s.%d",
+ s->display->displayString, s->screenNum);
+
+ putenv (screenString);
+ free (screenString);
+ }
+ else
+ {
+ putenv (s->display->displayString);
+ }
+
execl ("/bin/sh", "/bin/sh", "-c", command, NULL);
exit (0);
}