在 Yosemite 上,tmux 中的 LSOpenURLsWithRole() 失败,错误为 -10810

在 Yosemite 上,tmux 中的 LSOpenURLsWithRole() 失败,错误为 -10810

尝试从命令行(Terminal.app)打开内部应用程序tmux(通过 MacPorts 安装,版本 1.9a),并得到以下结果:

$ open /Applications/Adobe\ Reader.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Adobe Reader.app.

同样的命令可以正常工作,从同一航站楼,如果在 tmux 之外执行。

应该从主机读取环境;以下内容在 tmux.conf 中:set -g update-environment -r

重新启动 terminal.app 或 tmux 时,有时会出现不同的错误消息首先,(见下文)当再次尝试时,出现的是上述错误 -10810。

$ open /Applications/Adobe\ Reader.app/
The window server could not be contacted.  open must be run with a user logged in at the console, either as that user or as root.

我尝试过苹果自己的应用程序(预览、字体册、联系人)和第三方应用程序(Adobe、Evernote 等)。没什么区别。唯一一个似乎有效的应用程序是 Finder。(open [dirname]例如。)

答案1

有一个解决方案/解决方法:

  • 更新 的版本reattach-to-user-namespace。tmux 会使用它来执行程序。我使用 brew 而不是 macports,所以我刚才这样做了:brew update; brew upgrade reattach-to-user-namespace。Macports 可能能够做类似的事情。
  • 将以下内容添加到您的.tmux.conf文件中:

    set -g default-command "reattach-to-user-namespace -l /bin/bash"

重新启动您的 tmux 会话,这样您就可以从命令行启动程序。

更多信息请访问这个 github 问题。

答案2

问题是 tmux 正在将引导程序更改为系统域,而它不应该这样做(请参阅https://trac.macports.org/ticket/18357)。旧版本的 launchd 解决了 tmux 中的这个 bug,但是 OS X Yosemite 中重写的 launchd 却无法解决这个 tmux bug。

您要么需要等待 Apple 发布解决 tmux 错误的更新,要么需要催促 tmux 开发人员修复这个至少已存在 6 年的 tmux 错误。

相关内容