tmux内からYosemiteでLSOpenURLsWithRole()がエラー-10810で失敗する


17

コマンドライン(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.

Apple独自のアプリ(プレビュー、Font Book、連絡先)とサードパーティ(Adobe、Evernoteなど)の両方を試しました。変わりはない。動作しているように見える1つのアプリはファインダーです。(open [dirname]例えば。)

回答:


19

これには解決策/回避策があります。

  • のバージョンを更新しますreattach-to-user-namespace。これは、tmuxがプログラムを実行するために使用されます。私はmacportsではなくbrewを使用しているので、次のようにしました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自体を修正する必要があるようです(他の回答を参照)。
コンラッドルドルフ

デフォルトのシェルを使用しない場合は、コマンドのパスを必ず変更してください(例:)path/to/your/fish
アビエルグロス

3

問題は、tmuxがブートストラップを変更すべきではないときにシステムドメインに変更していることです(https://trac.macports.org/ticket/18357を参照)。launchdの古いバージョンはtmuxのこのバグを回避しましたが、OS X Yosemiteで書き直されたlaunchdはこのtmuxのバグを回避しません。

Appleがtmuxバグを回避するアップデートをリリースするのを待つか、少なくとも6年前からtmuxでこのバグを修正するためにtmux開発者を苦しめる必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.