gpt4 book ai didi

swift - xQuartz 显示不适用于从 Swift Process 启动的 shell 脚本

转载 作者:行者123 更新时间:2023-11-28 06:05:33 26 4
gpt4 key购买 nike

我有一个启动 X11 应用程序的简单 shell 脚本。当我从我的登录 shell/终端执行这个 shell 脚本时,xQuartz 启动并且我得到一个显示。但是,当从 swift 中运行脚本时,该过程不会显示 xQuartz。知道如何获得显示器吗?

此外,检测是否安装了 xQuartz 的最佳方法是什么?检查 xterm 是否存在?

   let process = Process()

process.executableURL = URL(fileURLWithPath: "/bin/sh")
let startScriptURL = Bundle.main.url(forResource: "run", withExtension: "sh")
guard let startScriptPath = startScriptURL?.path else {
return
}
process.arguments = [startScriptPath]

do {
try process.run()
} catch let error {
print(error)
}

运行.sh:

#!/bin/sh
/opt/X11/bin/xeyes

最佳答案

我想出了如何将 DISPLAY 环境或任何环境变量传递给 Process。

当前环境可以通过以下方式获取:

ProcessInfo().environment

所以我现在使用这个:

let process = Process()
guard let envDisplay = ProcessInfo().environment["DISPLAY"] else {
print("Please install xQuartz")
return
}

process.environment = ["DISPLAY": envDisplay]

我的想法来自这里:Issue launching X11 app via NSTask

关于swift - xQuartz 显示不适用于从 Swift Process 启动的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48356591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com