X11 Penerusan melalui Layar Gnu, apakah mungkin?


32

Saya menggunakan Layar GNU terus-menerus. Tapi, saya sudah mencoba mencari tahu apakah ada cara untuk mendapatkan aplikasi X11 untuk diteruskan ke layar ketika saya ssh-ing (Apakah itu sepatah kata pun?). Saat ini jika saya mencoba menjalankan 'gedit' melalui layar, itu terbuka di komputer 'server' saya dan bukan pada klien saya. Jika saya melakukan hal yang sama di luar layar, maka semuanya baik-baik saja. Tapi saya ingin semuanya baik-baik saja ketika saya menggunakan layar juga!

Terima kasih!

PS: Saya telah mencari masalah di Google dan saya melihat menyebutkan xmove, tetapi sepertinya saya tidak menemukan paket yang berisi xmove di ubuntu saya. (ubuntu 10.10)


Saya tidak punya waktu untuk menemukan jawaban yang lengkap sekarang, tetapi Anda perlu beberapa variabel lingkungan untuk diatur dengan benar. Anda mungkin bisa mencari tahu yang mana dari melihat lingkungan Anda di luar layar.
JanC

Jawaban:


32

Untuk melakukan ini secara manual, setelah SSH masuk, tetapi sebelum Anda memasang kembali layar, periksa variabel lingkungan DISPLAY Anda:

echo $DISPLAY

Setelah Anda dilampirkan kembali ke layar, atur secara eksplisit variabel lingkungan:

export DISPLAY=:N.0

dimana : N.0 adalah apa yang echoditunjukkan sebelum lampiran. Ini tidak akan sempurna, karena beberapa aplikasi mungkin mengharapkan untuk berbicara dengan Session D-Bus, yang sedikit lebih rumit untuk dikirim melalui koneksi SSH.


1
Luar biasa! Ini sepertinya berfungsi untuk sebagian besar aplikasi. Saya mencoba menaikkan layar 'fu'. Apakah Anda memiliki ide atau setidaknya dapat mengarahkan saya ke arah umum tentang bagaimana saya dapat mengotomatiskan ini? Terima kasih!
Sandro

Saya telah melakukan hal-hal aneh seperti menulis sesuatu seperti: echo $DISPLAY > $HOME/.display.txt; screen -x -ddan kemudian satu lagi di layar untuk menjalankannyaexport DISPLAY=$(cat $HOME/.display.txt)
Kees Cook

itulah tepatnya yang saya coba capai. Namun sejauh ini tidak berhasil. Mencoba agar ekspor terjadi adalah halangan karena menjalankannya dalam skrip tidak baik, saya perlu entah bagaimana sumbernya ... dan setenv juga tampaknya tidak memiliki sentuhan ajaib juga.
Sandro

Untuk sumber script type . /path/to/scriptmana scriptadalahexport DISPLAY=$(cat $HOME/.display.txt)
Kees Masak

Ini mengasumsikan Anda tidak memiliki layar untuk memulai secara otomatis saat masuk (a la byobu)
Seorang Siswa di Universitas

11

ada sebuah program bernama xpra di repositori, seperti layar gnu untuk x11. tidak terlalu sulit untuk dikerjakan:

X Aplikasi Jarak Jauh Persisten

Xpra memberi Anda fungsi Layar GNU untuk aplikasi X.

Ini memungkinkan pengguna untuk melihat aplikasi X jarak jauh pada mesin lokal mereka, dan memutuskan dan menghubungkan kembali dari mesin jarak jauh tanpa kehilangan status aplikasi yang sedang berjalan.


2
Saya telah menulis tentang bagaimana sebenarnya mengintegrasikan xpra dengan Screen untuk mencapai ketekunan aplikasi konsol dan X11: krlmlr.github.io/integrating-xpra-with-screen . Bekerja untukku.
krlmlr

7

Byobu secara otomatis memasang kembali agen ssh dan gpg. Saya dapat membuatnya memasang kembali variabel tampilan ke, jika itu membantu Anda ...


Tampaknya tidak meneruskan variabel tampilan dalam sesi BARU yang dibuat dalam sesi ssh dengan penerusan X11. Akan luar biasa jika hal itu terjadi ... Saya sudah berhenti menggunakannya karena sakit kepala karena harus menonaktifkan byobu auto-starting sehingga orang dapat menggunakan penerusan X11.
Seorang Siswa di Universitas

2

Ini adalah bagaimana saya membuatnya bekerja saat menjalankan byobu

Tambahkan baris ini di .bash_login sebelum baris "_byobu_source ..":

echo $DISPLAY > $HOME/.display.env

Dan kemudian tambahkan baris ini ke .bashrc :

if [ ! -z ${SSH_CONNECTION+x} ]; then
  export DISPLAY=$(cat $HOME/.display.env) 
fi

1

Tampaknya masalahnya adalah bahwa variabel lingkungan XAUTHORITY tidak disimpan dalam sesi layar. Saya memecahkan ini dengan menambahkan berikut ini ke .bashrc saya. Saya pikir ini tidak perlu tetapi saya kira Anda melakukan apa yang harus Anda lakukan:

# ensure X forwarding is setup correctly, even for screen
XAUTH=~/.Xauthority
if [[ ! -e "${XAUTH}" ]]; then
 # create new ~/.Xauthority file
 xauth
fi
if [[ -z "${XAUTHORITY}" ]]; then
 # export env var if not already available.
 export XAUTHORITY="${XAUTH}" 
fi

Saya tidak berharap ini menjadi solusi terbaik, atau yang paling ringkas, tetapi berhasil.



0

Berdasarkan saran @harre, saya menemukan ini menjadi solusi kerja terbaik, setidaknya untuk RHEL via Putty. Saya tahu ada cara yang lebih baik daripada membuat file yang menampung var, tetapi ini bekerja di luar gerbang untuk mendapatkan X11akses ke DISPLAYsaat dimuat melalui gnu screen.

Solusi Otomatis

Tambahkan ke .bashrc(atau .bash_profile, tergantung pada kasus penggunaan Anda)

#.bashrc
if [ -f ~/etc/.bash-screen-x11 ]; then
   echo $DISPLAY > $HOME/.display.env
   source ~/etc/.bash-screen-x11
fi

Kemudian tambahkan file berikut (atau pilihan jalur Anda)

#~/etc/.bash-screen-x11
# sets back display var.
if [ -z $STY ]; then
  export DISPLAY=$(cat $HOME/.display.env)
fi
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.