LSOpenURLsWithRole()在tmux中在优胜美地上失败,错误-1080


17

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

$ 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]例如)。

Answers:


19

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

  • 更新您的的版本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问题上找到更多信息


FWIW,更新reattach-to-user-namespace对我没有影响,问题仍然存在。看来tmux必须自己修复(请参阅其他答案)。
康拉德·鲁道夫2015年

当不使用默认外壳程序时,请确保更改命令中的路径(例如path/to/your/fish)。
艾薇儿·格罗斯

3

问题在于,tmux在不应该将引导程序更改为系统域时(请参阅https://trac.macports.org/ticket/18357)。较早版本的launchd可以解决tmux中的此错误,但是在OS X Yosemite中重写的启动功能无法解决此tmux的错误。

您可能需要等待Apple发布可能解决tmux错误的更新,或者请讨厌tmux开发人员修复至少6年以来已知的tmux错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.