Cách dòng lệnh để gửi tổ hợp phím đến một cửa sổ mở trên một phiên X khác


11

Trên máy chính của tôi, tôi có một máy tính để bàn Ubuntu mở và đăng nhập. Sau đó tôi cũng đăng nhập vào máy này từ một máy tính từ xa, sử dụng X2go để tạo phiên X mới. Tôi có một tập tin libreoffice mở trên phiên ban đầu . Tôi muốn lưu tệp này và đóng nó - nhưng từ máy từ xa! (Cả hai phiên đều có cùng một người dùng đăng nhập; tôi có thể sudo nếu cần)

Tôi đã thử sử dụng xdotool searchnhưng không tìm thấy cửa sổ. Có cách nào để làm những gì tôi muốn từ phiên thứ hai này không? Tôi có thể thấy quá trình với ps -A tôi thậm chí có thể xem tệp đang mở lsof! Làm thế nào tôi có thể thực hiện "lưu và đóng" trên đó?


2
Bạn chỉ có thể giết quá trình - nếu bạn không có bất kỳ thay đổi nghiêm trọng nào chưa được lưu thì việc này sẽ đơn giản. Nếu bạn làm như vậy, nó vẫn nên cố gắng khôi phục tài liệu vào lần tới khi bạn mở nó.
Wayne Werner

Đó là sự thật @wayne, nó có thể sẽ tự động chuyển ... Cảm ơn vì lời đề nghị. Không chắc chắn nếu tôi muốn nắm lấy cơ hội đó mặc dù! Không có cách nào để gửi phím nhấn (hoặc bất kỳ tin nhắn trực tiếp nào khác)? Nghe có vẻ đơn giản.
Sanjay Manohar

Tôi chắc chắn có nhiều cách - tôi chỉ không biết về chúng. Một số vấn đề phức tạp liên quan đến việc cài đặt ứng dụng khách VNC đơn giản và cài đặt DISPLAY=:0(hoặc bất kỳ màn hình nào mà tài khoản khác của bạn sẽ được bật) và sau đó khởi chạy máy chủ và truy cập từ máy khách. Nhưng điều đó có thể là quá mức. LibreScript có thể có giao thức tin nhắn - Tôi không quen thuộc lắm với nó vì tôi sử dụng Google Docs hoặc các tệp văn bản thuần túy trong Vim (bao gồm LaTex) ...
Wayne Werner

sử dụng VNC để có quyền truy cập vào cửa sổ chính từ một vị trí khác
Olivier Dulac

1
xdotool chạy trên giá trị $ HIỂN THỊ phiên hiện tại. Bạn có thể ssh bất kỳ máy hoặc vncserver nào sau đó chạy xdotool trên nó. Ví dụ: nếu bạn chạy vncserver trên cổng 5901 thì nó sử dụng: 1 màn hình theo quy ước. Vì vậy, hãy chạy DISPLAY:1sau đó bắt đầu bất kỳ chương trình X nào (xeyes để thử nghiệm) và sẽ chạy theo VNC. Áp dụng tương tự cho vncservers từ xa. SSH vào máy sau đó đơn giản chạy xuất HIỂN THỊ: 1 trước khi bạn sử dụng.
m3nda

Câu trả lời:


9

Giả sử cấu hình mặc định, xdpyinfo trên "bản gốc" sẽ hiển thị hiển thị ": 0.0", ví dụ:

xdpyinfo | grep name

Nếu biến môi trường HIỂN THỊ của bạn trên "x2go" là ": 1.0" thì nó sẽ là như vậy.

Từ thiết bị đầu cuối trên "x2go" Hãy thử tìm id cửa sổ:

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

Có thể điều khiển truy cập được thiết lập để nó không hoạt động, nhưng tôi nghĩ nó nên nếu bạn là người dùng giống nhau trên cùng một máy chủ (tức là quyền truy cập vào ~ / .Xmasterity). Kiểm tra đầu ra "danh sách xauth" nếu không có quyền truy cập.

Nếu nó hoạt động, sau đó sử dụng công cụ yêu thích của bạn để kiểm soát nó. Thêm "-int" vào xwininfo ở trên để in windowid ở dạng thập phân nếu công cụ của bạn yêu cầu theo cách đó, xdotool không:

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

hoặc bạn có thể gặp may mắn hơn với những thứ này thay vì "ctrl + s" / "ctrl + q"

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

Bạn có thể cần "alt +" thay vì "meta +", tôi có ánh xạ meta / alt / siêu không chuẩn. meta hoạt động với tôi, được thử nghiệm bằng Xnest. Tôi đang giả sử bố trí và trình tăng tốc menu tiếng Anh không thay đổi.

Có thể có một cửa sổ bật lên theo cách của bạn, trong trường hợp đó, nó đáng để thử:

xdotool key "Escape"

một vài lần, sau đó thử lại lưu và đóng. Hãy nhớ xdotool rất phức tạp về trường hợp chính xác của tên "khóa".

Bạn sẽ có thể thử tất cả điều này bằng cách bắt đầu libreoffice trên x2go và KHÔNG sửa đổi HIỂN THỊ của bạn. Bạn nên lưu các lệnh vào tệp script shell để thay đổi tiêu điểm không làm bạn bối rối.

lsof sẽ hiển thị tệp không còn mở nếu nó hoạt động :-)


Cảm ơn bạn đã gợi ý xdotool key "Escape"về tên nhưng đã không thử tên dài: D
m3nda

1

Có vẻ như có một vài yêu cầu có thể. rõ ràng máy chủ cần phải ở trong tệp xhosts (nó được đánh dấu là câu trả lời) và giá trị HIỂN THỊ thích hợp được xuất. Bài đăng này ở đây sẽ giúp bạn làm điều đó theo cách bạn muốn, cho phép xdotool tìm cửa sổ x11 từ xa .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.