私はXfceをデスクトップ環境として使用するCentOS 6を使用しており、ディスプレイマネージャxdm
に切り替えましたgdm
。
しかし、このように変更した後、非常に奇妙な現象を観察しました。グラフィックアプリケーションを定義$XAUTHORITY
せずに実行できました。
$ echo $DISPLAY
:0.0
$ echo $XAUTHORITY
$ zenity --error --text ".........."
$ echo $?
0
しかし、私がsudoするとき:
$ sudo -s
[sudo] password for xxxxxx:
# echo $DISPLAY
:0.0
# echo $XAUTHORITY
# zenity --error --text "........."
No protocol specified
(zenity:3793): Gtk-WARNING **: cannot open display: :0.0
私はGUIを実行するために両方を定義する$DISPLAY
必要があると思いましたが、そのようなことは起こりませんでした。$XAUTHORITY
何が起こっているのか知っている人はいますか?
編集する:
ただし、確認して使用するためにコメントに提案された値は次のとおりDBUS_SESSION_ADDRESS_VALUE
です。
$ echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-ypE50rEtQu,guid=7e2bc970a8ca43af3f7bb01000000255
$ echo $DISPLAY
:0.0
$ sudo -s
# export DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-ypE50rEtQu,guid=7e2bc970a8ca43af3f7bb01000000255"
# echo $DISPLAY
:0.0
# echo $DBUS_SESSION_BUS_ADDRESS
unix:abstract=/tmp/dbus-ypE50rEtQu,guid=7e2bc970a8ca43af3f7bb01000000255
# zenity --error --text "..........."
No protocol specified
(zenity:16931): Gtk-WARNING **: cannot open display: :0.0
ベストアンサー1
これX(7)概要マニュアルページ(全記事を読むことをお勧めします)では、次のように説明します。
Xlib が認証データを抽出するファイルは環境変数 XAUTHORITY を使用して指定できます。デフォルトはホームディレクトリの .Xauthority ファイルです。
したがって、認証ファイルが共通の場所にある場合、XAUTHORITYは必須ではありません。 Xクライアントがそれなしで動作することは完全に大丈夫です。ユーザーを切り替えると、ホームディレクトリが異なるため、問題が発生する可能性があります。この場合、環境変数を設定すると便利です。