Entendo que o processo loginwindow
não está em execução se o OS X não for iniciado no modo GUI (como quando você inicializa no modo de usuário único ou se este é um servidor ao qual você está se conectando via SSH).
Então, suponho que, se um grep em loginwindow
retornar vazio, você sabe que a máquina não está no modo GUI, por exemplo:
ps auxww | grep "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" | grep the_logged_in_username | grep -v "grep" | awk '{print $2}'
retornaria o PID de loginwindow
se o processo for iniciado ou não retornará nada se o processo não for iniciado.
Note que eu não testei, é só uma ideia, não sei ao certo se funciona ...