No se puede iniciar la aplicación en tmux

11

Recibo este error cuando intento iniciar Sublime Text o SourceTree desde tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Parece que tampoco puedo abrir aplicaciones os x:

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

Estoy usando Yosemite OS X 10.10 (14A388a), iTerm 2 con zsh, tmux 1.0a. Tuve el mismo problema con bash. ¿Tienes idea de lo que está pasando?

Benjamin Cheah
fuente
No es solo un problema de tmux para mí. Lo mismo en bash y zsh / oh-my-zsh. Funcionó
JB Rainsberger

Respuestas:

15

Actualización: este procedimiento es innecesario con tmux> = v2.6

Encontré una publicación de Brendon Rapp que describe una solución que no requiere muchos alias.

$ brew install reattach-to-user-namespace

Agregue la siguiente línea al final de su ~ / .tmux.conf:

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

Cree un archivo llamado ~ / .tmux-osx.conf con el siguiente contenido:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • La solución anterior permite que el mismo archivo .tmux.conf funcione correctamente tanto en Linux como en OS X. Si solo usa OS X, simplemente puede agregar la opción 'default-command' directamente a su ~ / .tmux.conf.

  • Si usa un shell que no sea bash, reemplace 'bash' con su shell después del interruptor '-l'.

Jon Nalley
fuente
7

Tuve el mismo problema con tmux y lo parcheé con reattatch-to-user-namespace y alias 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

No es elegante, pero funciona.

e9t
fuente
2
Según los documentos, simplemente agregue esto a su ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot
0

Descubrí que agregar esto a mis alias no funcionaba para mí si aún no estaba en una tmuxsesión (es decir, arrojó un error si solo estaba en una tmuxsesión iTerm desnuda y sin).

Si solo desea configurar este alias cuando está en una sesión tmux, intente esto en su lugar:

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

Es posible que necesite echo $TERMdentro de una sesión tmux para ver en qué $TERMestá configurada su variable de entorno. El mío era en realidad screen-256color, así que cambié el valor anterior de manera apropiada.

¡Buena suerte!

Noah Chase
fuente