Unter macOS gibt es keine eindeutig geeignete Möglichkeit, dies von einer Shell aus zu überprüfen. Es gibt einen programmatischen Weg, und wir können eine interpretierte Sprache verwenden, um davon zu profitieren.
Hier ist ein kleines Skript, das einen von drei Zuständen ausgibt, Mac-GUI, Mac-Nicht-GUI oder 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
Auf Macs kann ein X-Server installiert sein, in diesem Fall DISPLAY
ist definiert. Ich weiß jedoch nicht, ob Ihre Electron-App in dieser Konfiguration ordnungsgemäß funktioniert. Also habe ich es separat erkannt.