Sur macOS, il n'y a pas de moyen clairement approprié de vérifier cela à partir d'un shell, en tant que tel. Il existe une méthode programmatique, et nous pouvons utiliser un langage interprété pour en tirer parti.
Voici un petit script qui génère l'un des trois états, Mac GUI, Mac non-GUI ou X11 :
#!/bin/bash
if [ `uname` = "Darwin" ]
then
if which swift >/dev/null && swift <(cat <<"EOF"
import Security
var attrs = SessionAttributeBits(rawValue:0)
let result = SessionGetInfo(callerSecuritySession, nil, &attrs)
exit((result == 0 && attrs.contains(.sessionHasGraphicAccess)) ? 0 : 1)
EOF
)
then
echo "Mac GUI session"
elif [ -n "$DISPLAY" ]
then
echo "Mac X11 GUI session"
else
echo "Mac non-GUI session"
fi
elif [ -n "$DISPLAY" ]
then
echo "X11 GUI session"
fi
Les Mac peuvent avoir un serveur X installé, auquel cas DISPLAY
est défini. Cependant, je ne sais pas si votre application Electron fonctionnera correctement dans cette configuration. Donc, je l'ai détecté séparément.