Làm cách nào để chạy ứng dụng X11 từ xa?


5

Làm cách nào tôi có thể chạy các ứng dụng X11 được lưu trữ trên máy chủ từ xa, với các mục tiêu sau:

  • Chạy bất cứ điều gì mà sẽ chạy cục bộ trên máy chủ. Điều này bao gồm các ứng dụng OpenGL sử dụng GLX.
  • Tích hợp liền mạch với máy tính để bàn cục bộ, tức là, các ứng dụng trông giống như chúng đang chạy cục bộ, không có khu vực máy tính để bàn riêng. Vì vậy, tôi cần một giải pháp X 11, không phải là giao thức trình bao bọc.
  • Tốt nhất là cho phép các ứng dụng tiếp tục chạy nếu tôi bị ngắt kết nối; sau đó, tôi có thể mở lại các ứng dụng đang chạy sau khi kết nối lại.

Tôi đã thấy rất nhiều lời khuyên trôi nổi ở đây về siêu người dùng, nhưng phần lớn là một sửa chữa một phần hoặc chỉ đơn giản là xấu.

  • ssh đồng bằng X11-Forwarding hết: Nó không thể chạy một số ứng dụng nhất định, đặc biệt là những ứng dụng dựa trên tiện ích mở rộng GLX.
  • Cài đặt LIBGL_ALWAYS_INDIRECT=1 không làm việc cho tôi.
  • Xephyr cũng được ra Hiện tại nó không hỗ trợ GLX, mặc dù tôi đã thấy một số GLX hoạt động trong cây phát triển. Có lẽ trong tương lai, đó sẽ là cách sạch nhất.
  • xmove cũng được ra Quá cũ để xem xét thêm.
  • VNC đã ra. Nó chuyển tiếp toàn bộ máy tính để bàn và không thể dò tìm giao thức X.

EDIT: Tôi đã chiến đấu trong một ngày cuối tuần để đưa ra một số gợi ý, và xpra là những gì làm việc tốt nhất. Tôi đã mô tả thiết lập của mình trong câu trả lời dưới đây và tôi hy vọng nó sẽ giúp người khác.

Câu trả lời:


8

Xpra (như đã đề cập đây ) làm những gì tôi muốn. Nó cho phép chạy các ứng dụng X tùy ý, có thể được chuyển tiếp đến nhiều máy khách, trên cùng một máy tính hoặc trên một máy khác. Nó cũng hỗ trợ chạy các ứng dụng OpenGL và cho phép các ứng dụng của bạn tiếp tục chạy ngay cả sau khi máy khách cuối cùng ngắt kết nối - cho bạn cơ hội kết nối lại sau.

xpra có hai phần: máy khách và máy chủ. Để khởi động máy chủ, hãy chạy như sau trên máy từ xa:

$ xpra start :100

Điều này bắt đầu xpra trên màn hình X mới. (Có một cách giải quyết để sử dụng với proxy.)

Để có một ứng dụng được kiểm soát bởi xpra, chạy nó trên cùng màn hình với xpra máy chủ, như thế này:

$ export DISPLAY=:100
$ firefox&
$ blender&
...

Tất cả điều này có thể được thực hiện thông qua kết nối ssh (có hoặc không có X11-Forwarding) không có vấn đề.

Để bắt đầu một khách hàng, hãy thực hiện một trong những điều sau đây:

$ ssh -X user@remotehost
<gain remote connection>
$ xpra attach :100

hoặc là

$ xpra attach ssh:user@remotehost:100

Lưu ý rằng cái sau đòi hỏi xpra máy khách sẽ được cài đặt trên máy cục bộ của bạn; trước đây không.

Các xpra khách hàng sẽ đặt một biểu tượng trong thanh tác vụ / bảng điều khiển của cửa sổ cho phép bạn ngắt kết nối máy khách. (Hoặc, bạn chỉ có thể giết nó, miễn là bạn cẩn thận không giết máy chủ.) Sau đó, bạn có thể gắn lại, miễn là xpra máy chủ vẫn đang chạy. Nếu bạn có một xpra Máy chủ đang chạy trên máy chủ, bạn cũng có thể bỏ qua số hiển thị và xpra attach sẽ tìm ra nó.

Một tính năng rất hay của xpra là nó cho phép bạn khởi động một máy chủ trên màn hình có sẵn. Điều này cho phép bạn khôi phục một phiên nếu xpra máy chủ gặp sự cố (miễn là máy chủ X trên màn hình đó vẫn đang chạy). Để làm điều này, chạy

$ xpra start --use-display :100

Hãy cẩn thận:

  • xpra chạy như một người quản lý cửa sổ. Mặc dù nó chơi khá độc đáo khi nhúng vào các trình quản lý cửa sổ khác, nhưng nó không chơi tốt với chính các ứng dụng X: Nó không cho phép, ví dụ: rxvt-unicode để loại bỏ thanh tiêu đề của nó; ngoài ra, nó không cho các cửa sổ biết họ phải làm việc với màn hình bao nhiêu, ví dụ, hộp thả xuống và menu rơi ra khỏi màn hình. Tôi nghĩ rằng vấn đề thứ hai là vấn đề sửa chữa cấu hình của tôi, tuy nhiên.

  • Chìa khóa được lặp đi lặp lại. Thường xuyên. Điều này có thể được giải quyết bằng cách sử dụng xpra attach --no-keyboard-sync, nhưng trang người đàn ông cảnh báo rằng điều này không hoạt động tốt với một số trò chơi nhất định. Tôi giữ ngón tay của mình vượt qua mà tôi không thấy mình khao khát sử dụng một trong những trò chơi này.

Vì những lý do, Xephyr cũng có thể là một giải pháp tốt hơn (một khi nó hỗ trợ GLX), vì nó chạy như một máy chủ X, không phải là trình quản lý cửa sổ. Tuy nhiên, tôi chưa điều tra xem liệu nó có hỗ trợ nối lại các phiên bị ngắt kết nối trước đó hay không.


Bạn chỉ có thể chỉnh sửa bài viết chính của bạn thay vì làm nó như một câu trả lời.
Kruug

Tôi muốn một số câu trả lời cạnh tranh. Lý tưởng nhất, ai đó sẽ đăng một cái gì đó tốt hơn.
jpaugh

1
Chắc chắn, nhưng sau đó bạn chờ đợi họ ... cũng vậy, hãy xem Xming ... sourceforge.net/projects/xming
Kruug

1
Đẹp một, cảm ơn. tôi cũng đã phải thêm một đối số trên máy chủ, làm cho nó xpra start :100 --start-via-proxy=no - lỗi là Warning: cannot use the system proxy for 'start' subcommand, failed to connect to '/run/xpra/system': [Errno 2] No such file or directory.
HankCa

@HankCa. Cảm ơn, tôi đã cập nhật văn bản. Tôi đã không sử dụng xpra một thời gian. Làm thế nào nó làm việc cho bạn?
jpaugh
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.