Tôi đã cài đặt trình bảo vệ màn hình trên máy chạy Linux Mint 16. Trên máy đó, tôi có thể mở một thiết bị đầu cuối và truy vấn trạng thái của trình bảo vệ màn hình:
dan@box1 ~ $ echo $DISPLAY
:0.0
dan@box1 ~ $ mate-screensaver-command -q
The screensaver is inactive
The screensaver is not inhibited
Tất cả điều này hoạt động tốt và có ý nghĩa. Tuy nhiên, khi tôi SSH vào cùng một máy đó, tôi không nhận được kết quả như mong đợi:
dan@box2 ~ $ ssh box1
dan@box1 ~ $ export DISPLAY=:0.0
dan@box1 ~ $ echo $DISPLAY
:0.0
dan@box1 ~ $ mate-screensaver-command -q
** Message: Screensaver is not running!
Phương pháp tương tự này hoạt động trên tất cả các máy tính khác của tôi, tất cả đều chạy các phiên bản khác nhau của Mint. Không có gì lạ là đăng nhập vào của tôi ~/.xsession-errors
.
Sau khi đọc câu trả lời này , tôi phát hiện ra rằng việc thiết của tôi DBUS_SESSION_BUS_ADDRESS
đến unix:abstract=/tmp/dbus-ToCuEUyLn0,guid=9296df6ba791b044d4236e45545fbe55
(giá trị của nó tại một nhà ga địa phương) làm cho mọi thứ công việc như tôi mong đợi thông qua SSH. Tuy nhiên, ~/.dbus/session-bus/*-0
chứa một giá trị khác, không hoạt động và tôi không thể tìm thấy tệp chứa giá trị chính xác cho biến đó.
Tại sao một trong những máy của tôi yêu cầu thay đổi giá trị đó, trong khi phần còn lại thì không? Nếu hành vi đó có ý nghĩa hoặc phức tạp để sửa, tôi sẽ tìm giá trị chính xác cho biến đó ở đâu?
DBUS_SESSION_BUS_ADDRESS=$(ps -fwu $(whoami) | sed -n 's/.*[d]bus.*--address=\(.*\)/\1/p')
Không hoàn hảo, không đáng tin cậy, nhưng nên hoạt động hầu hết thời gian.