Tidak dapat meluncurkan aplikasi di tmux

11

Saya mendapatkan kesalahan ini ketika saya mencoba meluncurkan Sublime Text atau SourceTree dari tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Tampaknya saya tidak dapat membuka aplikasi os x:

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

Saya menggunakan Yosemite OS X 10.10 (14A388a), iTerm 2 dengan zsh, tmux 1.0a. Punya masalah yang sama menggunakan bash. Adakah yang tahu apa yang terjadi?

Benjamin Cheah
sumber
Bukan hanya masalah tmux bagi saya. Sama di bash dan zsh / oh-my-zsh. Ini bekerja
JB Rainsberger

Jawaban:

15

Pembaruan: Ini adalah prosedur yang tidak perlu dengan tmux> = v2.6

Saya menemukan posting oleh Brendon Rapp yang menggambarkan solusi yang tidak memerlukan banyak alias.

$ brew install reattach-to-user-namespace

Tambahkan baris berikut ke akhir ~ / .tmux.conf Anda:

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

Buat file bernama ~ / .tmux-osx.conf dengan konten berikut:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • Solusi di atas memungkinkan file .tmux.conf yang sama berfungsi dengan baik di Linux dan OS X. Jika Anda hanya menggunakan OS X, Anda bisa langsung menambahkan opsi 'perintah-default' langsung ke ~ / .tmux.conf Anda.

  • Jika Anda menggunakan shell selain bash, ganti 'bash' dengan shell Anda setelah sakelar '-l'.

Jon Nalley
sumber
7

Saya memiliki masalah yang sama dengan tmux dan menambalnya dengan reattatch-to-user-namespace dan alias 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

Tidak elegan, tapi berhasil.

e9t
sumber
2
Menurut dokumen, tambahkan saja ini ke ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot
0

Saya menemukan bahwa menambahkan ini ke alias saya tidak bekerja untuk saya jika saya belum berada di tmuxsesi (yaitu melemparkan kesalahan jika saya hanya dalam tmuxsesi telanjang, -tidak ITerm).

Jika Anda hanya ingin mengatur alias ini ketika Anda sedang dalam sesi tmux, coba ini sebagai gantinya:

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

Anda mungkin perlu echo $TERMmasuk ke dalam sesi tmux untuk melihat apa $TERMvariabel lingkungan Anda diatur. Milik saya sebenarnya screen-256color, jadi saya menukar nilai di atas dengan tepat.

Semoga berhasil!

Noah Chase
sumber