12

I get this error when I try to launch Sublime Text or SourceTree from tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

It seems that I can't open os x apps either:

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

I'm using Yosemite OS X 10.10 (14A388a), iTerm 2 with zsh, tmux 1.0a. Had the same problem using bash. Any idea what's going on?

1
  • Not just a tmux problem for me. Same in bash and zsh/oh-my-zsh. It worked Commented Nov 2, 2014 at 14:06

3 Answers 3

16

Update: This is procedure is unnecessary with tmux >= v2.6

I found a post by Brendon Rapp describing a solution that doesn't require lots of aliases.

$ brew install reattach-to-user-namespace

Add the following line to the end of your ~/.tmux.conf:

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

Create a file named ~/.tmux-osx.conf with the following contents:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • The above solution allows the same .tmux.conf file to work correctly under both Linux and OS X. If you only use OS X, you can just add the 'default-command' option directly to your ~/.tmux.conf.

  • If you use a shell other than bash, replace 'bash' with your shell after the '-l' switch.

0
8

I had the same problem with tmux and patched it with reattatch-to-user-namespace and shell aliases.

  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

Not elegant, but works.

1
  • 2
    According to the docs, just add this to your ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
    – nicerobot
    Commented Apr 4, 2015 at 22:47
0

I found that adding this to my aliases didn't work for me if I wasn't already in a tmux session (i.e. it threw an error if I was just in a naked, tmux-less iTerm session).

If you want to only set up this alias when you're in a tmux session, try this instead:

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

You may need to echo $TERM inside of a tmux session to see what your $TERM environment variable is set to. Mine was actually screen-256color, so I swapped out the value above appropriately.

Good luck!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .