コマンドライン (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
ターミナルアプリまたは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 独自のアプリ (Preview、Font Book、Contacts) とサードパーティのアプリ (Adobe、Evernote など) の両方を試しました。違いはありませんでした。機能していると思われる唯一のアプリは Finder です。(open [dirname]
たとえば、)
答え1
これには解決策/回避策があります:
- のバージョンを更新します
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 の問題。
答え2
問題は、tmuxがブートストラップをシステムドメインに変更してしまうことです(https://trac.macports.org/ticket/18357)。古いバージョンの launchd では tmux のこのバグを回避できましたが、OS X Yosemite で書き直された launchd ではこの tmux のバグを回避できません。
Apple が tmux のバグを回避するアップデートをリリースするまで待つか、少なくとも 6 年間知られている tmux のこのバグを修正するように tmux 開発者に要求する必要があります。