Nie można uruchomić aplikacji w tmux

11

Ten błąd pojawia się, gdy próbuję uruchomić Sublime Text lub SourceTree z tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Wygląda na to, że nie mogę otworzyć aplikacji systemu OS X:

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

Używam Yosemite OS X 10.10 (14A388a), iTerm 2 z zsh, tmux 1.0a. Miałem ten sam problem przy użyciu bash. Masz pomysł, co się dzieje?

Benjamin Cheah
źródło
Nie tylko problem dla mnie. To samo dotyczy bash i zsh / oh-my-zsh. Udało się
JB Rainsberger

Odpowiedzi:

15

UPDATE: Jest to procedura jest zbędna z tmux> = v2.6

Znalazłem post Brendona Rappa opisujący rozwiązanie, które nie wymaga wielu aliasów.

$ brew install reattach-to-user-namespace

Dodaj następujący wiersz na końcu pliku ~ / .tmux.conf:

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

Utwórz plik o nazwie ~ / .tmux-osx.conf o następującej treści:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • Powyższe rozwiązanie pozwala, aby ten sam plik .tmux.conf działał poprawnie zarówno w systemie Linux, jak i OS X. Jeśli używasz tylko OS X, możesz po prostu dodać opcję „default-command” bezpośrednio do pliku ~ / .tmux.conf.

  • Jeśli używasz powłoki innej niż bash, zamień „bash” na swoją powłokę po przełączniku „-l”.

Jon Nalley
źródło
7

Miałem ten sam problem z tmuxem i załatałem go za pomocą przestrzeni przeszukiwania dla użytkownika i aliasów powłoki.

  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

Nie elegancki, ale działa.

e9t
źródło
2
Zgodnie z dokumentami, po prostu dodaj to do ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot
0

Przekonałem się, że dodanie tego do moich aliasów nie działało dla mnie, jeśli nie byłem jeszcze w tmuxsesji (tj. tmuxSpowodowało błąd, gdy byłem tylko nagi, bez sesji iTerm).

Jeśli chcesz skonfigurować ten alias tylko podczas sesji Tmux, spróbuj tego:

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

Może być konieczne echo $TERMwejście w sesję tmux, aby zobaczyć, na co $TERMustawiona jest zmienna środowiskowa. Mój był właściwie screen-256color, więc odpowiednio podmieniłem powyższą wartość.

Powodzenia!

Noah Chase
źródło