X11 Gnu Ekranı Üzerinden İletme Mümkün Mü?


32

GNU ekranını sürekli kullanıyorum. Ancak, X11 uygulamalarının ekrandan geçerken ekranda ilerlemesini sağlayacak bir yol olup olmadığını anlamaya çalışıyorum (Bu bir kelime mi?). Şu anda 'gedit'i ekran üzerinden çalıştırmaya çalışırsam, istemcimde değil' sunucu 'bilgisayarımda açılıyor. Ekran dışında da aynı şeyi yaparsam, her şey yolunda. Ama ekranı kullanırken de her şeyin yolunda olmasını istiyorum!

Teşekkürler!

Not: Bu sorunu çözdüm ve xmove'dan bahsettiğimi görüyorum, ancak ubuntu'mda xmove içeren paketi bulamıyorum. (ubuntu 10.10)


Şimdi tam bir cevap bulmak için zamanım yok, ancak doğru şekilde ayarlanması için bazı ortam değişkenlerine ihtiyacınız var. Muhtemelen hangilerinin size ortamın dışından ekran dışından baktıklarını öğrenebilirsiniz.
JanC

Yanıtlar:


32

Bunu manuel olarak yapmak için, SSHed'i girdikten sonra, ancak ekrana yeniden bağlamadan önce, DISPLAY ortam değişkeninizi kontrol edin:

echo $DISPLAY

Ekrana tekrar ekledikten sonra, ortam değişkenini açıkça ayarlayın:

export DISPLAY=:N.0

Nerede : N.0 nedir echotakmak önce gösterdi. Bu mükemmel olmayacak, çünkü bazı uygulamalar SSH bağlantısı üzerinden gönderilmesi biraz daha karmaşık olan Session D-Bus ile görüşmeyi bekliyor olabilir.


1
Müthiş! Bu çoğu uygulama için çalışıyor gibi görünüyor. 'Fu' ekranımı yükseltmeye çalışıyorum. Herhangi bir fikriniz var mı veya en azından bunu nasıl otomatikleştirebileceğimin genel yönüne işaret edebilir misiniz? Teşekkür ederim!
Sandro

Gibi bir şey komut dosyası gibi garip şeyler yaptım: echo $DISPLAY > $HOME/.display.txt; screen -x -dve sonra bunu çalıştırmak için ekranda başka birexport DISPLAY=$(cat $HOME/.display.txt)
Kees Cook

tam olarak başarmaya çalıştığım şey buydu. Ama şimdiye kadar şans yok. Bu ihracatı gerçekleştirmeye çalışmak oldukça zor çünkü bir senaryoda çalıştırmanın hiçbir faydası yok, bir şekilde kaynak bulmam gerekiyor ... ve setenv de sihirli dokunuşa sahip gibi görünmüyor.
Sandro

Betik tipini bulmak için . /path/to/scriptnerede script?export DISPLAY=$(cat $HOME/.display.txt)
Kees Cook

Bu, oturum açma sırasında ekran otomatik olarak başlatılmayacağınızı varsayar (a la byobu)
Üniversitede Bir Öğrenci

11

Depolarda xpra adında bir program var, x11 için gnu ekranı gibi. çalışmak çok zor değil:

X Kalıcı Uzaktan Uygulamalar

Xpra, X uygulamaları için GNU Screen'in işlevselliğini sağlar.

Kullanıcının uzak X uygulamalarını yerel makinelerinde görüntülemesine ve çalışan uygulamaların durumunu kaybetmeden uzak makineden bağlantısını kesip yeniden bağlanmasına olanak tanır.


2
Hem konsol hem de X11 uygulamasının sürekliliğini sağlamak için xpra'yı Ekranla nasıl bütünleştireceğimi yazdım: krlmlr.github.io/integrating-xpra-with-screen . Benim için çalışıyor.
krlmlr 14:14

7

Byobu ssh ve gpg ajanlarını otomatik olarak yeniden ekler. Ekran değişkenini tekrar taramasını sağlayabilirim, eğer bu sizin için yararlıysa ...


X11 yönlendirme ile ssh oturumunda oluşturulan YENİ oturumlarında ekran değişkeni boyunca bile görünmüyor. X11 iletmeyi kullanabilmek için otomatik başlatma byobu'yu devre dışı bırakmak zorunda kaldığı için başını ağrıtması nedeniyle kullanmayı bıraksam harika olurdu.
Üniversitede Bir Öğrenci

2

Bu şekilde byobu çalıştırırken çalışmasını sağladım

Bu satırı "_byobu_source .." satırından önce .bash_login dosyasına ekleyin :

echo $DISPLAY > $HOME/.display.env

Ve sonra bu satırı .bashrc'ye ekleyin :

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

1

Buradaki problem, XAUTHORITY ortam değişkeninin ekran oturumunda korunmamış olmasıdır. Bunu benim .bashrc dosyasına aşağıdakileri ekleyerek çözmüştüm. Bunun gerekli olması gerektiğini düşünmedim ama sanırım yapman gerekeni yaptın:

# 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

Bunun en iyi çözüm ya da en özlü olmasını beklemiyorum, ama işe yarıyor.



0

@Harre önerisine dayanarak, en azından Putty üzerinden RHEL için en iyi çalışma çözümü olarak bulundum. Ben var tutan bir dosya oluşturmaktan daha iyi bir yol olduğunu biliyorum, ancak bu yüklenen zaman X11erişebilmek için geçit dışında çalışır .DISPLAYgnu screen

Otomatik Çözüm

Şuna ekle .bashrc(veya .bash_profilekullanım durumunuza bağlı olarak)

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

Sonra aşağıdaki dosyayı (veya yol seçiminizi) ekleyin

#~/etc/.bash-screen-x11
# sets back display var.
if [ -z $STY ]; then
  export DISPLAY=$(cat $HOME/.display.env)
fi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.