Есть LightDM с кастомным скриптом session-wrapper. Это который Xsession.
В моём случае он делает некоторые подготовительные операции, запускает DE/WM, ждёт его завершения и делает ещё кое-что. Последняя часть ещё и повешена trap'ом на SIGTERM/SIGHUP. Выглядит это так:
#!/bin/bash
function prepare_session() {
...
}
function stop_session() {
...
}
prepare_session
trap stop_session EXIT TERM HUP
"$HOME/.xsession"
Соответственно, stop_session
выполнится даже в том случае, если LightDM будет убит целиком и полностью и со всеми потомками.
Однако, хочется сделать так, чтобы stop_session
выполнялся при живом X-сервере. А именно:
- убить Xsession (и всех его потомков; это не важно)
- подождать завершения
- убить X-сервер и LightDM
Вопрос - как это сделать?