Linux Mint 16を実行しているマシンにmate-screensaverをインストールしました。そのマシンでターミナルを開いて、スクリーンセーバーの状態を照会できます。
dan@box1 ~ $ echo $DISPLAY
:0.0
dan@box1 ~ $ mate-screensaver-command -q
The screensaver is inactive
The screensaver is not inhibited
これはすべて正常に機能し、理にかなっています。ただし、同じマシンにSSH接続すると、期待した結果が得られません。
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!
これと同じ方法が、他のすべてのコンピューターで機能し、すべてがさまざまなバージョンのMintを実行しています。何も奇妙なことが私のに記録されていません~/.xsession-errors
。
この回答を読んだ後、に設定DBUS_SESSION_BUS_ADDRESS
するとunix:abstract=/tmp/dbus-ToCuEUyLn0,guid=9296df6ba791b044d4236e45545fbe55
(ローカルターミナルではその値)、SSH経由で期待どおりに機能することがわかりました。ただし、~/.dbus/session-bus/*-0
動作しない別の値が含まれているため、その変数の正しい値を含むファイルが見つかりません。
なぜ私のマシンの1つはその値を変更する必要がありますが、残りは変更しないのですか?その動作が理にかなっている、または修正が複雑な場合、その変数の正しい値を見つけるために他にどこを見ればよいでしょうか?
DBUS_SESSION_BUS_ADDRESS=$(ps -fwu $(whoami) | sed -n 's/.*[d]bus.*--address=\(.*\)/\1/p')
完璧ではない、信頼性が低いが、ほとんどの場合は機能するはずです。