有没有办法以受控方式检测显示是否有效?例如,如果我设置$DISPLAY=anydisplay
或$DISPLAY=0.0
,有没有办法检查anydisplay
或0.0
是否是我可以访问的有效显示?我正在编写一个旨在从 bash 脚本启动的程序,其目的是警告用户他们的显示是否有效,并在“控制台”模式下运行该程序。
答案1
xhost
是一种探测显示可访问性的简约方法。
#!/usr/bin/env bash
xhost +si:localuser:$( whoami ) >&/dev/null && {
echo "GUI"
myapp --gui
} || {
echo "console"
myapp --console
}
答案2
您可以让脚本退出并显示一条错误消息。如果您尝试启动图形操作并且无法访问显示,您将收到一条错误消息。因此,只需尝试以图形方式启动您正在执行的任何操作,如果无法退出并告诉用户使用另一个参数重新运行脚本。例如:
#!/usr/bin/env bash
xterm 2>/dev/null ||
(echo "The display $DISPLAY is not accessible."
echo "Please run the script again using the '--no-gui' optiion" &&
exit 1)
只需将其替换xterm
为您用来启动 GUI 的任何函数即可。