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?


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


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.


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!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.