Как определить наличие графического интерфейса в Bash / Shell? - PullRequest
0 голосов
/ 05 марта 2019

Я пишу CLI в NodeJS.Поскольку я могу легко запускать команды bash / shell с помощью child_process, мне бы хотелось знать самый простой самый кроссплатформенный способ для определения доступности графического интерфейса в bash / shell.

Спасибо!

Ответы [ 4 ]

0 голосов
/ 16 марта 2019

Попробуйте это:

echo $XDG_CURRENT_DESKTOP

Или это:

echo $DESKTOP_SESSION

0 голосов
/ 10 марта 2019

В 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 работать правильно в этой конфигурации.Итак, я обнаружил это отдельно.

0 голосов
/ 11 марта 2019

Вот рабочий пример:

if [ x$DISPLAY != x ] ; then
  echo "GUI Enabled"

else
  echo "GUI Disabled"

fi

Все, что он делает - проверяет переменную $DISPLAY.

0 голосов
/ 05 марта 2019

Проверьте, установлен ли DISPLAY в окружающей среде.Если это так, у вас работает Xserver.Если нет, то нет.Уверен, что Уэйлэнд тоже это устанавливает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...