如何检测 Bash/Shell 中 GUI 的可用性?

2024-07-03

我正在用 NodeJS 编写一个 CLI。因为我可以使用 child_process 轻松运行 bash/shell 命令,所以我想知道最简单的最跨平台的方式检测 bash/shell 中 GUI 的可用性。

Thanks!


在 macOS 上,没有明显合适的方法可以从 shell 中检查这一点。有一种编程方式,我们可以使用解释性语言来利用它。

下面是一个输出以下三种状态之一的小脚本:Mac GUI、Mac 非 GUI 或 X11:

#!/bin/bash

check_macos_gui() {
  command -v 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
)
}

if [ "$(uname)" = "Darwin" ]; then
  if check_macos_gui; 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 应用程序是否可以在该配置中正常工作。所以我单独检测了一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测 Bash/Shell 中 GUI 的可用性? 的相关文章

随机推荐