В macOS нет явно подходящего способа проверить это из оболочки, как таковой.Есть программный способ, и мы можем использовать интерпретируемый язык, чтобы воспользоваться этим преимуществом.
Вот небольшой скрипт, который выводит одно из трех состояний: Mac GUI, Mac не-GUI или 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
На компьютерах Mac может быть установлен X-сервер, в этом случае определяется DISPLAY
.Однако я не знаю, будет ли ваше приложение Electron работать правильно в этой конфигурации.Итак, я обнаружил это отдельно.