LSOpenURLsWithRole () gagal dengan kesalahan -10810 pada Yosemite dari dalam tmux

17

Mencoba untuk membuka aplikasi dari commandline (Terminal.app), di dalam tmux(diinstal melalui MacPorts, versi 1.9a), dan mendapatkan hasil berikut:

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

Perintah yang sama berfungsi dengan baik, dari terminal yang sama, jika dijalankan di luar tmux.

Lingkungan harus dibaca dari tuan rumah; berikut ini di tmux.conf:set -g update-environment -r

Ketika memulai ulang terminal.app atau tmux, kadang-kadang kesalahan dengan pesan yang berbeda pada awalnya, (lihat di bawah) dan ketika dicoba lagi, kesalahan di atas -10810 diberikan sebagai gantinya.

$ open /Applications/Adobe\ Reader.app/
The window server could not be contacted.  open must be run with a user logged in at the console, either as that user or as root.

Saya sudah mencoba kedua aplikasi Apel sendiri (Pratinjau, Buku Font, Kontak) dan pihak ketiga (Adobe, Evernote dll). Tidak ada perbedaan. Satu aplikasi yang sepertinya berfungsi, adalah finder. ( open [dirname], misalnya.)

Krissen
sumber

Jawaban:

19

Ada solusi / solusi untuk ini:

  • Perbarui versi Anda dari reattach-to-user-namespace. Ini digunakan oleh tmux untuk menjalankan program. Saya menggunakan minuman daripada macports, jadi saya hanya melakukan: brew update; brew upgrade reattach-to-user-namespace. Macports kemungkinan dapat melakukan hal serupa.
  • Tambahkan yang berikut ke .tmux.conffile Anda :

    set -g default-command "reattach-to-user-namespace -l /bin/bash"

Mulai kembali sesi tmux Anda dan itu akan memungkinkan Anda untuk memulai program dari baris perintah.

Informasi lebih lanjut dapat ditemukan di masalah github ini.

Brett
sumber
FWIW, memperbarui reattach-to-user-namespacetidak membuat perbedaan bagi saya, dan masalahnya masih berlanjut. Tampaknya tmux harus diperbaiki sendiri (lihat jawaban lain).
Konrad Rudolph
saat tidak menggunakan shell default, pastikan untuk mengubah path dalam perintah (mis., path/to/your/fish).
Aviel Gross
3

Masalahnya adalah tmux mengubah bootstrap ke domain sistem ketika seharusnya tidak (lihat https://trac.macports.org/ticket/18357 ). Launchd versi lama mengatasi bug ini di tmux, tetapi launchd yang ditulis ulang di OS X Yosemite tidak mengatasi bug tmux ini.

Anda harus menunggu Apple untuk merilis pembaruan yang bekerja di sekitar bug tmux atau pengembang tmux untuk memperbaiki bug ini di tmux yang telah dikenal setidaknya 6 tahun sekarang.

Jeremy Huddleston Sequoia
sumber