LSOpenURLsWithRole () échoue avec l'erreur -10810 sur Yosemite depuis tmux

17

Essayer d'ouvrir une application à partir de la ligne de commande (Terminal.app), à l'intérieur tmux(installé via MacPorts, version 1.9a), et obtenir le résultat suivant:

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

La même commande fonctionne très bien, depuis le même terminal, si elle est exécutée en dehors de tmux.

L'environnement doit être lu depuis l'hôte; ce qui suit est dans tmux.conf:set -g update-environment -r

Lors du redémarrage de terminal.app ou tmux, il se produit parfois des erreurs avec un message différent au début (voir ci-dessous) et lorsque réessayé, l'erreur ci-dessus -10810 est donnée à la place.

$ 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.

J'ai essayé les applications propres à Apples (Aperçu, Livre de polices, Contacts) et tierces (Adobe, Evernote, etc.). Aucune différence. La seule application qui semble fonctionner est Finder. ( open [dirname]par exemple.)

krissen
la source

Réponses:

19

Il existe une solution / solution pour cela:

  • Mettez à jour votre version de reattach-to-user-namespace. Ceci est utilisé par tmux pour exécuter des programmes. J'utilise brew plutôt que macports, donc je viens de le faire:brew update; brew upgrade reattach-to-user-namespace . Macports est susceptible de faire quelque chose de similaire.
  • Ajoutez ce qui suit à votre .tmux.conffichier:

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

Redémarrez votre session tmux et cela devrait vous permettre de démarrer des programmes à partir de la ligne de commande.

Vous trouverez plus d'informations sur ce numéro de github.

Brett
la source
FWIW, la mise à jour reattach-to-user-namespacene fait aucune différence pour moi et le problème persiste. Il semble que tmux doive être corrigé lui-même (voir autre réponse).
Konrad Rudolph
lorsque vous n'utilisez pas le shell par défaut, assurez-vous de changer le chemin dans la commande (par exemple, path/to/your/fish).
Aviel Gross
3

Le problème est que tmux change le bootstrap en domaine système alors qu'il ne devrait pas (voir https://trac.macports.org/ticket/18357 ). Les versions plus anciennes de launchd contournaient ce bogue dans tmux, mais le launchd réécrit dans OS X Yosemite ne fonctionne pas autour de ce bogue tmux.

Vous devrez soit attendre qu'Apple publie éventuellement une mise à jour qui contourne le bogue tmux, soit pester les développeurs tmux pour corriger ce bogue dans tmux qui est connu depuis au moins 6 ans maintenant.

Jeremy Huddleston Sequoia
la source