Seu problema soa como o Ranger não está descartando e / ou nohup'ing o filho processa para que ele seja desconectado dele corretamente, para que ele persista quando / se o Ranger for encerrado. Se você olhar para a página de integração com outros programas do Ranger, você verá um exemplo como este:
If using Xnview with rifle, and despite forking with flag 'f', it crashes compiz/unity, try this:
mime ^image, has xnview, X, flag f = setsid xnview "@$" &> /dev/null 2>&1 & disown
O item principal nesse exemplo é o & disown
. Eu tentaria colocar isso no final do seu exemplo:
ext c|cpp|h|md|txt = atom "$@" &> /dev/null 2>&1 & disown