Có thể di chuyển một cửa sổ từ màn hình X này sang màn hình khác trên cùng một máy chủ không?


16

Tôi đang chạy XFCE 4.12 với 3 màn hình được thiết lập thành hai màn hình X và hai thẻ video trên cùng một máy tính. Hai trong số các màn hình tạo thành một màn hình X sử dụng chức năng nvidia Twinview, đó là Screen0 trên Device0 trong cấu hình Xorg. Màn hình thứ 3 dành cho màn hình thứ hai là Screen1 trên Device1 trong cấu hình Xorg. Tôi có thể kéo các cửa sổ tốt giữa các màn hình trên Screen0. Tôi cũng có thể di chuyển chuột một cách tự do giữa Screen0 và Screen1 và thậm chí dữ liệu clipboard được mang giữa hai màn hình X ok.

Cả hai màn hình X này hoạt động như các máy tính để bàn độc lập có bộ khung nhìn riêng. Tôi thích nó theo cách này và nó hữu ích để làm cho một bên "dính" tự động. Tuy nhiên, nếu tôi khởi động một chương trình trên một màn hình X, tôi không thể di chuyển nó sang màn hình X khác bằng cách kéo nó. Nếu tôi muốn chạy chương trình đó trên màn hình khác, tôi phải khởi động lại nó trên màn hình đó.

Câu hỏi của tôi là nếu có cách nào để di chuyển chương trình trong khi nó chạy sang màn hình khác bằng cách sử dụng một số lệnh hoặc chức năng khác của cửa sổ X. Cảm ơn.

Cập nhật: Tôi sẽ bắt đầu trả tiền cho câu hỏi này nhưng tôi đã tự hỏi về điều này trong một thời gian. Để kiếm được tiền thưởng, bạn phải cung cấp một số trích dẫn để chứng minh.


1
xpra cung cấp một cái gì đó khá giống với những gì bạn đang hỏi ...
vlp

googling cũng tiết lộ xmove

Tôi không nhớ rằng tôi đã phải thay đổi điều gì đó trên CentOS 5 hoặc 6 để có hành vi đó. Phân phối trong phiên bản nào bạn đang sử dụng ở đây?
Nils

Điều này trông giống như một bản sao của unix.stackexchange.com/questions/152291/ Khăn
Nathan Fellman

@NathanFellman Có thể, nhưng tôi thậm chí không nghĩ trong trường hợp của mình, tôi đang nói về việc di chuyển giữa các màn hình. Theo danh sách quy trình của tôi, tôi chỉ chạy một lần phiên bản của quy trình X, đó là: 0. Không có: 1 hoặc: 2, v.v. Có lẽ đây chỉ là vấn đề với cách XFCE quản lý nhiều màn hình hoặc một cái gì đó trong cấu hình của tôi. Về các chương trình được đề cập cho đến nay, không ai trong số chúng dường như vẫn được duy trì hoặc có sẵn. xmove đã gần 20 tuổi và tôi không thể tìm thấy bản sao của XiMove. xpra cũng có vẻ như là loại chương trình sai cho những gì tôi đang cố gắng làm.
deltaray

Câu trả lời:


13

Bạn không thể di chuyển một ứng dụng X được khởi động trực tiếp với máy chủ X mà ứng dụng cuối cùng được hiển thị, điều này là do máy khách X bị "gắn với máy chủ X (màn hình X) mà nó đã được khởi động suốt đời" [ 1 ] Đây là rất có thể làm với siêu dữ liệu mà máy chủ X chứa về các cửa sổ của máy khách không thể dễ dàng chuyển giữa các máy chủ X.

Điều tương tự cũng đúng với các màn hình được cấu hình riêng biệt (khi không sử dụng các tiện ích mở rộng như Xinerama hoặc Twinview) cho các chương trình không có hỗ trợ đa màn hình được viết rõ ràng - "Với cấu hình này, không thể di chuyển các cửa sổ giữa các màn hình, ngoài một vài chương trình đặc biệt như GIMP và Emacs có hỗ trợ đa màn hình. "[ 2 ]

Về lý thuyết, nếu một ứng dụng được thiết kế để đối phó với chuyển đổi ngữ cảnh của máy chủ X, nó có thể được cung cấp số màn hình / màn hình mới, lưu trạng thái của các cửa sổ, kết nối với máy chủ / màn hình X mới và phục hồi các cửa sổ của nó, nhưng rất ít các ứng dụng sẽ được thiết kế theo cách này và nhất thiết phải bao gồm rất nhiều mẫu soạn sẵn hoặc bao gồm một thư viện sẽ tạo điều kiện thuận lợi cho việc này bằng cách nào đó.

Tùy chọn tốt nhất cho bạn có lẽ là sử dụng các ứng dụng khác có thể hoạt động như một proxy giữa máy khách X và máy chủ X hiển thị theo cách tương tự như màn hình GNU có thể được sử dụng cho các ứng dụng bảng điều khiển và thiết bị đầu cuối. Xmove và Xpra [ 3 & 4 ] dường như là các triển khai được sử dụng rộng rãi nhất để làm điều này. Nhắc nhở của việc sử dụng đó là các ứng dụng mà bạn bắt đầu phải đăng ký với Xmove hoặc Xpra làm máy chủ X của chúng để có thể chuyển đổi ngữ cảnh giữa các máy chủ hiển thị khác nhau.

Cuối cùng, có một câu hỏi khác, trên SuperUser, đó là hỏi một câu hỏi tương tự cho mục đích hơi khác (kết nối lại với X sau sự cố X, thay vì cố tình ngắt kết nối / kết nối lại máy khách) [ 5 ]


2
Cảm ơn bạn đã cố gắng trả lời nhưng đây không phải là vấn đề. Tôi đang nói về việc di chuyển giữa các màn hình X trong cùng một máy chủ, không phải giữa các Máy chủ X.
deltaray

5
Tôi đã bỏ lỡ sắc thái đó ban đầu, xin lỗi. Thật không may, nếu không có tiện ích mở rộng như Xinerama hợp nhất nhiều màn hình thành một, có vẻ như các ứng dụng xử lý các màn hình riêng biệt trên cùng một máy chủ như các máy chủ logic riêng biệt và quản lý các kết nối với chúng một cách riêng biệt - xem liên kết [2] tôi đã thêm trong lần chỉnh sửa cuối cùng. Cách giải quyết cho việc di chuyển một ứng dụng giữa các máy chủ X cũng cần giữ để di chuyển giữa các màn hình, bạn sẽ chỉ phải chỉ định phần màn hình của biến môi trường HIỂN THỊ khi (ví dụ) gắn Xpra.
Benjamin
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.