Farklı bir X oturumunda açık olan bir pencereye tuş vuruşlarını göndermenin komut satırı yolu


11

Ana makinemde bir Ubuntu masaüstüm açık ve oturum açtım. Daha sonra yeni bir X-oturumu oluşturan X2go kullanarak uzaktaki bir bilgisayardan bu makineye giriş yapıyorum. Özgün oturumda açık bir libreoffice dosyası var . Bu dosyayı kaydetmek ve kapatmak istiyorum - ama uzak makineden! (Her iki oturumda da aynı kullanıcı oturum açmıştır; gerekirse sudo yapabilirim)

Kullanmayı denedim xdotool searchama bu pencereyi bulamıyor. Bu ikinci oturumdan istediğimi yapmanın bir yolu var mı? Süreci ps -A görebiliyorum bile açık dosyayı görebiliyorum lsof! Üzerinde "kaydet ve kapat" ı nasıl yapabilirim?


2
Sen olabilir sadece süreci öldürmek - bu basit olurdu herhangi bir ciddi kaydedilmemiş değişiklikler yoksa. Bunu yaparsanız, belgeyi bir sonraki açışınızda kurtarmaya çalışmalıdır.
Wayne Werner

Bu doğru @wayne, muhtemelen otomatik olarak yeniden ele geçirir ... Öneri için teşekkürler. Bu şansı denemek istedim emin değilim! Tuşa basma (veya başka bir doğrudan mesaj) göndermenin yolu yok mu? Kulağa çok basit geliyor.
Sanjay Manohar

Eminim yollar vardır - bunların farkında değilim. Bazı karmaşık olanlar, basit bir VNC istemcisi kurmayı ve ayarlamayı DISPLAY=:0(veya diğer hesabınızın görüntülendiği her şey varsa) içerir ve ardından sunucuyu başlatır ve istemciden alır. Ancak bu aşırı olabilir. LibreOffice'in bir mesaj protokolü olabilir - Vim'de (LaTex dahil) Google Dokümanlar veya düz metin dosyaları kullandığım için çok aşina değilim ...
Wayne Werner

başka bir yerden ana pencereye erişmek için VNC kullanın
Olivier Dulac

1
xdotool geçerli oturum $ DISPLAY değerinde çalışır. Herhangi bir makineyi veya vncserver'ı ssh sonra üzerinde xdotool çalıştırabilirsiniz. Örneğin, 5901 numaralı bağlantı noktasında bir vncserver çalıştırırsanız şunu kullanır: kural olarak 1 ekran. Bu nedenle, çalıştırın ve DISPLAY:1herhangi bir X programını (test için xeyes) başlatın ve VNC altında çalışır. Aynısı uzak vncservers için de geçerlidir. SSH makineye daha sonra basit çalışma ihracat EKRAN: 1 kullanmadan önce.
m3nda

Yanıtlar:


9

Varsayılan yapılandırmayı varsayarsak, "original" üzerindeki xdpyinfo ": 0.0" görüntüsünü gösterir, örn.

xdpyinfo | grep name

"X2go" üzerindeki DISPLAY ortam değişkeniniz ": 1.0" ise, böyle olmalıdır.

"X2go" üzerindeki bir terminalden Pencere kimliğini bulmaya çalışın:

DISPLAY=:0.0 xwininfo -root -tree | grep Writer

Erişim kontrolünün çalışmayacak şekilde ayarlanması mümkündür, ancak aynı ana bilgisayarda aynı kullanıcı kimliğiniz varsa (yani ~ / .Xauthority'ye erişim) gerektiğini düşünüyorum. Erişim yoksa "xauth list" çıkışını kontrol edin.

Çalışıyorsa, kontrol etmek için favori aracınızı kullanın. Aracınız bu şekilde gerektiriyorsa windowid'i ondalık olarak yazdırmak için yukarıdaki xwininfo'ya "-int" ekleyin, xdotool şunları yapmaz:

export DISPLAY=:0.0
xdotool windowactivate 0x15a18918
xdotool windowfocus 0x15a18918
xdotool key "ctrl+s"
xdotool key "ctrl+q"

veya "ctrl + s" / "ctrl + q" yerine bunlarla daha iyi şansınız olabilir

xdotool key "meta+f" "s"
xdotool key "meta+f" "c"
xdotool key "meta+f" "x"

"Meta +" yerine "alt +" gerekebilir, standart olmayan meta / alt / süper eşlemelerim var. meta benim için çalışıyor, bir Xnest kullanarak test edildi. Değişmeyen İngilizce menü düzeni ve hızlandırıcıları varsayıyorum.

Yolunuzda bir açılır pencere olması mümkündür, bu durumda denemeye değer:

xdotool key "Escape"

birkaç kez, sonra kaydet ve kapat yeniden deneyin. Xdotool "anahtar" isimlerin tam durumu hakkında telaşlı olduğunu unutmayın.

Tüm bunları x2go üzerinde libreoffice başlatarak ve EKRANINIZI DEĞİŞTİRMEYEN deneyebilmelisiniz. Komutları bir kabuk komut dosyası dosyasına kaydetmelisiniz, böylece odak değişiklikleri sizi karıştırmaz.

lsof çalışmışsa dosya artık açık değil :-) göstermelidir


xdotool key "Escape"İsimler hakkında ipucu için teşekkür ederim ama uzun isimleri denemedim: D
m3nda

1

Birkaç olası gereksinim var gibi görünüyor. Görünüşe göre ana bilgisayarın xhosts dosyasında (yanıt olarak işaretlenmiş) olması ve uygun DISPLAY değerinin dışa aktarılması gerekiyor. Bu yazı, xdotool'un uzak x11 penceresini bulmasına izin vererek istediğiniz şekilde yapmanıza yardımcı olacaktır .

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.