LSOpenURLsWithRole () falha com o erro -10810 no Yosemite a partir do tmux

17

Tentando abrir um aplicativo a partir da linha de comando (Terminal.app), dentro tmux(instalado através do MacPorts, versão 1.9a), e obtendo o seguinte resultado:

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

O mesmo comando funciona bem, a partir do mesmo terminal, se executado fora do tmux.

O ambiente deve ser lido do host; o seguinte está no tmux.conf:set -g update-environment -r

Ao reiniciar terminal.app ou tmux, às vezes erros fora com uma mensagem diferente no início, (veja abaixo) e quando tentou novamente, o erro acima -10.810 é dado em seu lugar.

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

Eu tentei os aplicativos próprios da Apple (Visualização, Catálogo de fontes, Contatos) e de terceiros (Adobe, Evernote etc.). Não faz diferença. O único aplicativo que parece funcionar é o localizador. ( open [dirname], por exemplo.)

Krissen
fonte

Respostas:

19

Existe uma solução / solução alternativa para isso:

  • Atualize sua versão de reattach-to-user-namespace. Isso é usado pelo tmux para executar programas. Eu uso cerveja em vez de MacPorts, então eu só fiz: brew update; brew upgrade reattach-to-user-namespace. É provável que o Macports seja capaz de fazer algo semelhante.
  • Adicione o seguinte ao seu .tmux.confarquivo:

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

Reinicie sua sessão tmux e isso deve permitir que você inicie programas na linha de comando.

Mais informações podem ser encontradas nesta edição do github.

Brett
fonte
FWIW, a atualização reattach-to-user-namespacenão faz diferença para mim, e o problema ainda persiste. Parece que o tmux deve ser corrigido por si próprio (veja outra resposta).
Konrad Rudolph
quando não estiver usando o shell padrão, certifique-se de alterar o caminho no comando (por exemplo, path/to/your/fish).
Aviel Gross
3

O problema é que o tmux está alterando a auto-inicialização para o domínio do sistema quando não deveria (consulte https://trac.macports.org/ticket/18357 ). As versões mais antigas do launchd solucionavam esse bug no tmux, mas o launchd reescrito no OS X Yosemite não funciona com esse bug do tmux.

Você precisará aguardar a Apple para lançar uma atualização que funcione com os desenvolvedores do tmux bug ou pester tmux para corrigir esse bug no tmux que é conhecido há pelo menos 6 anos.

Jeremy Huddleston Sequoia
fonte