Impossibile avviare l'applicazione in tmux


11

Ottengo questo errore quando provo ad avviare Sublime Text o SourceTree da tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Sembra che non riesca nemmeno ad aprire le app os x:

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

Sto usando Yosemite OS X 10.10 (14A388a), iTerm 2 con zsh, tmux 1.0a. Ho avuto lo stesso problema usando bash. Qualche idea di cosa stia succedendo?


Non solo un piccolo problema per me. Lo stesso in bash e zsh / oh-my-zsh. Ha funzionato
JB Rainsberger il

Risposte:


15

Aggiornamento: questa procedura non è necessaria con tmux> = v2.6

Ho trovato un post di Brendon Rapp che descrive una soluzione che non richiede molti alias.

$ brew install reattach-to-user-namespace

Aggiungi la seguente riga alla fine del tuo ~ / .tmux.conf:

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

Creare un file chiamato ~ / .tmux-osx.conf con il seguente contenuto:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • La soluzione di cui sopra consente allo stesso file .tmux.conf di funzionare correttamente sia su Linux che su OS X. Se usi solo OS X, puoi semplicemente aggiungere l'opzione 'default-command' direttamente sul tuo ~ / .tmux.conf.

  • Se si utilizza una shell diversa da bash, sostituire 'bash' con la shell dopo l'opzione '-l'.


7

Ho avuto lo stesso problema con tmux e l'ho riparato con namespace reattatch-to-user e alias di 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

Non elegante, ma funziona.


2
Secondo i documenti, basta aggiungere questo al tuo ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot

0

Ho scoperto che l'aggiunta di questo ai miei alias non funzionava per me se non fossi già in una tmuxsessione (ovvero ha generato un errore se ero solo in una tmuxsessione iTerm nuda e senza).

Se vuoi impostare questo alias solo quando sei in una sessione tmux, prova invece:

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

Potrebbe essere necessario echo $TERMall'interno di una sessione di tmux per vedere a cosa $TERMè impostata la variabile di ambiente. Il mio era in realtà screen-256color, quindi ho scambiato il valore sopra in modo appropriato.

In bocca al lupo!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.