--- a/app.cpp 2013-10-23 16:19:57.074100282 -0400 +++ b/app.cpp 2013-10-23 16:33:13.302122574 -0400 @@ -829,8 +829,13 @@ StopServer(); RemoveLock(); - while (waitpid(-1, NULL, WNOHANG) > 0); /* Collects all dead childrens */ - Run(); + if (force_nodaemon) { + delete LoginPanel; + exit(ERR_EXIT); /* use ERR_EXIT so that systemd's RESTART=on-failure works */ + } else { + while (waitpid(-1, NULL, WNOHANG) > 0); /* Collects all dead childrens */ + Run(); + } } void App::KillAllClients(Bool top) { --- a/slim.service 2013-10-23 16:19:57.074100282 -0400 +++ b/slim.service 2013-10-23 16:45:14.901142776 -0400 @@ -4,6 +4,7 @@ [Service] ExecStart=/usr/bin/slim -nodaemon +Restart=on-failure [Install] Alias=display-manager.service Common subdirectories: slim-1.3.6/themes and slim-1.3.6.new/themes