Tìm hiểu trình quản lý cửa sổ máy chủ X từ máy khách X


0

Tôi đăng nhập vào một máy từ xa với ssh -X. Máy cục bộ của tôi chạy WM không sửa lỗi.

Máy từ xa cần biết WM mà máy chạy máy chủ X sử dụng, để đặt hoặc hủy đặt biến môi trường cho java.

Nói cách khác, tôi cần phải làm một cái gì đó như thế này trong ~/.bashrcmáy từ xa:

if [ $DESKTOP_SESSION == xmonad ] ; then
    export _JAVA_AWT_WM_NONREPARENTING=1
fi

Vấn đề là DESKTOP_SESSIONkhông nói gì ở đó. Tôi cần một cái gì đó cho biết máy từ xa trong môi trường mà các cửa sổ sẽ được hiển thị.

Có cách nào để giái quyết vấn đề này không?

Câu trả lời:


1

(Không có gì thiết lập hoặc sử dụng $ DESKTOP_VERSION. Ý bạn là $ DESKTOP_SESSION? Đó là nơi mà người quản lý hiển thị lưu trữ tên của tệp xsession mà họ đã chọn.)

Để truy vấn tên người quản lý cửa sổ hiện tại, hãy sử dụng wmctrl -m. Đừng quên trích dẫn thích hợp vì tên có thể có khoảng trắng.

wm=$(wmctrl -m | sed -n 's/^Name: //p')
if [ "$wm" = xmonad ]; then
    ...
fi

(Bash [[không cần trích dẫn trên LHS, nhưng POSIX [thì có.)

Cơ chế hoạt động bằng cách truy vấn thuộc _NET_SUPPORTING_WM_CHECKtính đầu tiên của cửa sổ gốc X11, sau đó truy vấn các thuộc tính của ID cửa sổ được trả về.

$ xprop -root _NET_SUPPORTING_WM_CHECK
_NET_SUPPORTING_WM_CHECK(WINDOW): window id # 0x600006

$ xprop -id 0x600006 _NET_WM_NAME
_NET_WM_NAME(UTF8_STRING) = "GNOME Shell"

Phải, ý tôi là DESKTOP_SESSION, cảm ơn. Tôi không muốn thêm một phụ thuộc vào wmctrl. Sử dụng xpropđể kiểm tra WM có vẻ thú vị, tôi không có _NET_SUPPORTING_WM_CHECKnhưng có lẽ có thứ gì đó để đào ở đó.
Gauthier
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.