Có thể chọn X hiển thị một thể hiện chương trình nào không?


10

Nếu có nhiều Windows X chạy trên một hệ thống, có thể có một chương trình để chạy trên một cửa sổ cụ thể không? Làm thế nào bạn sẽ xác định được Cửa sổ và khiến chương trình chạy ở đó?

Tôi giả sử rằng tôi có bất kỳ quyền nào cần thiết để chạy một chương trình như vậy.


Câu trả lời:


15

Các chương trình X biết phiên X nào mà chúng được cho là nói chuyện bằng cách xem DISPLAYbiến môi trường.

Trước tiên, bạn sẽ cần tìm hiểu những gì DISPLAYđược đặt trong phiên X nơi bạn muốn chương trình của mình chạy. Thực hiện việc này bằng cách phát lệnh echo $DISPLAYbên trong thiết bị đầu cuối X trong phiên X đó. Thông thường nhận được một cái gì đó như :0.0là xuất ra.

Hãy nói rằng bạn muốn khởi động chương trình xuất sắc xclockchương trình trong phiên X của bạn, nơi DISPLAY:0.0, nhưng bạn muốn làm điều này tại giao diện điều khiển. Sau đó, bạn nhấn Alt-Ctrl-F1 để chuyển sang bảng điều khiển đó, rồi gõ:

DISPLAY=:0.0 xclock   # variables set w/ a command are local to that command

Sau đó, bạn quay lại X bằng cách nhấn Alt-Ctrl-F7 hoặc Alt-Ctrl-F8 (hoặc có thể một số phím F khác, tùy thuộc vào hương vị Linux của bạn) và xem đồng hồ treo tường đẹp mới mà bạn có ở đó.

Trong thực tế, bạn có thể đã thực thi lệnh trên trong bất kỳ shell nào trên cùng một máy đó (thông qua SSH, trong bất kỳ phiên X nào, trên bất kỳ bảng điều khiển nào, v.v.) - thực tế là bạn đã chỉ định DISPLAY=:0.0trước lệnh có nghĩa là xclockcửa sổ sẽ luôn bật lên cùng một phiên X.

Trong thực tế - ngoài thực tế là các chương trình X nhìn vào nó - không có gì đặc biệt về DISPLAYbiến. Thông thường khi bạn bắt đầu các chương trình từ thiết bị đầu cuối X, chúng sẽ bắt đầu ở đúng nơi vì DISPLAYđã được đặt cho bạn.

Thay vì sử dụng lệnh trên, bạn cũng có thể chia nó thành hai bằng cách cài đặt đầu tiên DISPLAY, sau đó chạy xclock. Trong trường hợp này, DISPLAYcài đặt sẽ duy trì cho đến khi bạn đóng shell đó và tất cả các chương trình X tiếp theo bắt đầu từ đó sẽ mở trong cùng một phiên X như xclock.

                      # variables set w/o a command are local to the shell,
export DISPLAY=:0.0   # unless exported
xclock

1
Lưu ý rằng bit cuối cùng sẽ không hoạt động trừ khi bạn xuất biến shell ra môi trường trước.
Ignacio Vazquez-Abrams

Tôi nghĩ rằng DISPLAYsẽ được thiết lập để xuất theo mặc định, vì nó được nhập bởi shell (nó hoạt động trong cả zshdashcho tôi mà không sử dụng export). Nhưng, vâng, nếu bạn không thể làm cho phiên bản hai dòng hoạt động, hãy thử thay thế DISPLAY=:0.0bằng export DISPLAY=:0.0.
zrajm

1

Thông thường, các chương trình máy khách X sử dụng DISPLAYbiến môi trường để biết máy chủ X hiển thị để kết nối với. Một số chương trình cũng chấp nhận một tham số dòng lệnh ( -displayhoặc một cái gì đó tương tự) có thể được sử dụng để ghi đè DISPLAYbiến môi trường.

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.