Internally XMonad uses spawn
in XMonad.Core:
spawn :: MonadIO m => String -> m ()
spawn. Launch an external application. Specifically, it double-forks and runs the String you pass as a command to
/bin/sh
.
So if one wants to only change the terminal
value, rather than using say executeFile
directly, one would have to use exec
in the shell command, terminal="exec urxvt"
, which would remove the extra /bin/sh
by causing it to exec
the command rather than the shell being the process's parent.