Di tempat kerja, saya memiliki desktop dengan monitor dan beberapa sesi tmux yang sedang berjalan. Di rumah, saya sering ssh ke desktop itu dan memasuki sesi tmux saya yang sedang berjalan. Ketika saya ssh dari rumah, saya tidak ingin menggunakan X11, jadi saya tidak menggunakan -X
bendera. Ketika saya kembali bekerja (setelah ssh'ing dari rumah) dan menggunakan sesi tmux di desktop, saya tidak bisa lagi melakukan apa pun yang akan menelurkan GUI. Saya tidak bisa membuka file di evince. Ketika saya mencoba menggunakan matplotlib, saya mendapat : cannot connect to X server
pesan.
Setelah melakukan ssh'ing dan membuka sesi tmux yang ada dari rumah, bagaimana nantinya saya dapat melampirkan kembali kemampuan untuk membuka hal-hal GUI di desktop?
Ssh'ing dari rumah tampaknya membuat sesi tmux lupa bahwa ia dapat menelurkan barang-barang GUI.
EDIT:
-X
bendera sekarang atau tidak? Anda hanya dapat melakukan hal-hal X11 melalui SSH jika itu diatur.Jawaban:
Yang perlu saya lakukan adalah mengatur variabel lingkungan DISPLAY ke: 0,0. Saya pikir masalahnya adalah saya menggunakan shell ikan, dan saya perlu menggunakan flag -x untuk mengatur ketika melakukan ini:
sumber
DISPLAY
mungkin berbeda dari:0.0
. Cara cepat untuk mengetahuinya adalah dengan membuat jendela tmux baru dan diecho $DISPLAY
sana.echo $DISPLAY
kembalilocalhost:10.0
dan berlariset DISPLAY localhost:0.0
melakukan trik.bash
setara, atau lintas-shell?set -x
hanya meningkatkan bertele-tele untuk saya dibash
. @IsaacS, apakah Anda harusset DISPLAY localhost:10.0
melakukannya atau tidaklocalhost:0.0
bekerja untuk Anda?export DISPLAY=:0.0
.$DISPLAY
?Saya memiliki masalah yang sama. Saya biasanya menggunakan
tmux
sebagai bagian dari lingkungan desktop multi-monitor X11, dan terkadang ssh in dari chromebook, yang tidak mendukung X11 atau set$DISPLAY
. Jawaban oleh @chrisdembia bekerja, tetapi membutuhkan perubahanDISPLAY
di setiap jendela baru untuk sisa sesi tmux, yang merupakan rasa sakit.Solusi permanen adalah dengan menghapus
DISPLAY
dariupdate-environment
variabel tmux dalam pengaturan tmux. Anda dapat melihat nilai Anda saat ini dengan perintah ini:Untuk menghapusnya, saya menambahkan baris ini ke
~/.tmux.conf
file saya , termasuk semuanya kecualiDISPLAY
:Ini dijelaskan lebih lanjut di Reset variabel shell DISPLAY di sesi tmux over ssh , yang menjelaskan mengapa
DISPLAY
ada secara default, untuk kasus penggunaan umum yang berbeda.sumber