我正在用NodeJS编写CLI。因为我可以使用child_process轻松运行bash / shell命令,所以我想知道最简单的最跨平台方式,以检测bash / shell中的GUI可用性。
谢谢!
答案 0 :(得分:4)
在macOS上,没有明显合适的方法可以从shell中进行检查。这是一种编程方式,我们可以使用一种解释语言来利用这一点。
这是一个小脚本,可以输出以下三种状态之一:Mac GUI,Mac non-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应用程序能否在该配置下正常运行。因此,我分别检测到它。
答案 1 :(得分:0)
检查环境中是否设置了DISPLAY。如果是,则您正在运行Xserver。如果没有,您就不会。可以肯定的是,wayland也可以设置它。
答案 2 :(得分:0)
这是一个有效的示例:
$like
所有这些操作就是检查if [ x$DISPLAY != x ] ; then
echo "GUI Enabled"
else
echo "GUI Disabled"
fi
变量。
答案 3 :(得分:0)
尝试一下:
echo $XDG_CURRENT_DESKTOP
或这样:
echo $DESKTOP_SESSION