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?


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'.


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.


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!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.