diff --git a/src/cdm b/src/cdm index d35bd98..2f13095 100755 --- a/src/cdm +++ b/src/cdm @@ -125,6 +125,12 @@ case ${flaglist[$binindex]} in # loop. To solve this problem, export $CDM_SPAWN when `exec'ing $bin and # only let the shell automatically `exec' cdm when $CDM_SPAWN is not set. # See also the example shell profile file shipped with the cdm package. + + # Also untrap SIGINT and SIGTSTP before spawning process: If this is not + # done, *ANY* child process of *ANY* child (bash) shell will completely + # ignore SIGINT, which is rather confusing, and cannot be undone. + + trap - SIGINT SIGTSTP CDM_SPAWN=$$ exec $bin ;; diff --git a/src/cdm-xlaunch b/src/cdm-xlaunch index 8ec7c14..e6b4986 100755 --- a/src/cdm-xlaunch +++ b/src/cdm-xlaunch @@ -77,7 +77,7 @@ if $consolekit; then fi # Conform to POSIX and do not use `>&' here. -nohup startx $* > /dev/null 2>&1 & +setsid startx $* > /dev/null 2>&1 & # If wait(1) returns with a value >128, it was interrupted by kill(1), # so registration was sucessful.