Impossible de lancer l'application dans tmux

11

J'obtiens cette erreur lorsque j'essaie de lancer Sublime Text ou SourceTree à partir de tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Il semble que je ne puisse pas non plus ouvrir les applications os x:

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

J'utilise Yosemite OS X 10.10 (14A388a), iTerm 2 avec zsh, tmux 1.0a. Eu le même problème en utilisant bash. Une idée de ce qui se passe?

Benjamin Cheah
la source
Pas seulement un problème tmux pour moi. Idem en bash et zsh / oh-my-zsh. Cela a fonctionné
JB Rainsberger

Réponses:

15

Mise à jour: cette procédure n'est pas nécessaire avec tmux> = v2.6

J'ai trouvé un article de Brendon Rapp décrivant une solution qui ne nécessite pas beaucoup d'alias.

$ brew install reattach-to-user-namespace

Ajoutez la ligne suivante à la fin de votre ~ / .tmux.conf:

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

Créez un fichier nommé ~ / .tmux-osx.conf avec le contenu suivant:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • La solution ci-dessus permet au même fichier .tmux.conf de fonctionner correctement sous Linux et OS X. Si vous utilisez uniquement OS X, vous pouvez simplement ajouter l'option 'default-command' directement à votre ~ / .tmux.conf.

  • Si vous utilisez un shell autre que bash, remplacez «bash» par votre shell après le commutateur «-l».

Jon Nalley
la source
7

J'ai eu le même problème avec tmux et l'ai corrigé avec des alias d'espace de noms et shell de réattribution à l'utilisateur .

  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

Pas élégant, mais fonctionne.

e9t
la source
2
Selon les documents, ajoutez simplement ceci à votre ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot
0

J'ai trouvé que l'ajout de cela à mes alias ne fonctionnait pas pour moi si je n'étais pas déjà dans une tmuxsession (c'est-à-dire que cela générait une erreur si j'étais juste dans une tmuxsession iTerm nue et sans).

Si vous ne souhaitez configurer cet alias que lorsque vous êtes dans une session tmux, essayez plutôt ceci:

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

Vous devrez peut-être à l' echo $TERMintérieur d'une session tmux pour voir à quoi votre $TERMvariable d'environnement est définie. Le mien était en fait screen-256color, j'ai donc échangé la valeur ci-dessus de manière appropriée.

Bonne chance!

Noah Chase
la source