Невозможно запустить приложение в tmux

11

Я получаю эту ошибку при попытке запустить Sublime Text или SourceTree из tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Кажется, я не могу открыть приложения OS X либо:

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

Я использую Yosemite OS X 10.10 (14A388a), iTerm 2 с zsh, tmux 1.0a. Была та же проблема с использованием Bash. Есть идеи, что происходит?

Бенджамин Чеа
источник
Не только проблема Tmux для меня. То же самое в bash и zsh / oh-my-zsh. Это сработало
JB Rainsberger

Ответы:

15

Обновление: эта процедура не нужна с tmux> = v2.6

Я нашел сообщение Брендона Раппа, в котором описывается решение, которое не требует много псевдонимов.

$ brew install reattach-to-user-namespace

Добавьте следующую строку в конец вашего ~ / .tmux.conf:

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

Создайте файл с именем ~ / .tmux-osx.conf со следующим содержимым:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • Приведенное выше решение позволяет одному и тому же файлу .tmux.conf работать корректно как в Linux, так и в OS X. Если вы используете только OS X, вы можете просто добавить опцию «default-command» непосредственно в ваш ~ / .tmux.conf.

  • Если вы используете оболочку, отличную от bash, замените 'bash' на вашу оболочку после ключа -l.

Джон Нэлли
источник
7

У меня была та же проблема с tmux и я исправил ее с помощью псевдонимов reattatch-to-user-namespace и 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

Не элегантно, но работает.

e9t
источник
2
Согласно документам, просто добавьте это в свой ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot
0

Я обнаружил, что добавление этого в мои псевдонимы не работает для меня, если я еще не был в tmuxсеансе (т. tmuxЕ. Выдает ошибку, если я был просто в голом сеансе iTerm без использования).

Если вы хотите настроить этот псевдоним только в сеансе tmux, попробуйте это:

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

Вам может понадобиться echo $TERMвойти в сеанс tmux, чтобы увидеть, на что установлена ​​ваша $TERMпеременная окружения. Мой был на самом деле screen-256color, поэтому я поменял значение выше соответственно.

Удачи!

Ноа Чейз
источник