Não foi possível iniciar o aplicativo no tmux

11

Eu recebo esse erro quando tento iniciar o Sublime Text ou SourceTree no tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Parece que também não consigo abrir aplicativos os x:

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

Estou usando o Yosemite OS X 10.10 (14A388a), iTerm 2 com zsh, tmux 1.0a. Teve o mesmo problema usando o bash. Alguma idéia do que está acontecendo?

Benjamin Cheah
fonte
Não é apenas um problema do tmux para mim. O mesmo no bash e no zsh / oh-my-zsh. Funcionou
JB Rainsberger

Respostas:

15

Atualização: Este procedimento é desnecessário com tmux> = v2.6

Encontrei um post de Brendon Rapp descrevendo uma solução que não requer muitos aliases.

$ brew install reattach-to-user-namespace

Adicione a seguinte linha ao final do seu ~ / .tmux.conf:

if-shell 'test "$(uname)" = "Darwin"' 'source ~/.tmux-osx.conf'

Crie um arquivo chamado ~ / .tmux-osx.conf com o seguinte conteúdo:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • A solução acima permite que o mesmo arquivo .tmux.conf funcione corretamente no Linux e no OS X. Se você usa apenas o OS X, basta adicionar a opção 'default-command' diretamente ao seu ~ / .tmux.conf.

  • Se você usar um shell que não seja o bash, substitua 'bash' pelo seu shell após a opção '-l'.

Jon Nalley
fonte
7

Eu tive o mesmo problema com o tmux e o corrigi com reaplicar para o espaço de nome do usuário e aliases de shell.

  1. $ brew install reattach-to-user-namespace
  2. $ vi ~/.bash_aliases

    alias subl='reattach-to-user-namespace subl'
    alias stree='reattach-to-user-namespace stree'
    alias open='reattach-to-user-namespace open'
  3. $ source ~/.bash_aliases

Não é elegante, mas funciona.

e9t
fonte
2
De acordo com os documentos, basta adicionar isso ao seu ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot 04/04
0

Descobri que adicionar isso aos meus aliases não funcionava para mim se eu ainda não estivesse em uma tmuxsessão (ou seja, tmuxgerava um erro se eu estivesse apenas em uma sessão nua, sem o iTerm).

Se você deseja configurar apenas esse alias quando estiver em uma sessão tmux, tente o seguinte:

if [ "$TERM" = "screen" ] && [ -n "$TMUX" ]; then
  alias stree="reattach-to-user-namespace stree"
fi

Pode ser necessário echo $TERMdentro de uma sessão do tmux para ver o que sua $TERMvariável de ambiente está configurada. Como o meu era screen-256color, na verdade , troquei o valor acima de maneira apropriada.

Boa sorte!

Noah Chase
fonte