xhost:无法打开显示“0”

Lex*_*ble 6 display xorg

我已经以 root 身份安装了 /usr/local/stata/xstata-mp,权限为 755。

当我尝试通过终端从非 root 帐户运行该程序时,我得到:

user@host ~ % /usr/local/stata/xstata-mp
(xstata-mp:8030): Gtk-WARNING **: 10:09:24.384: cannot open display: 0
Run Code Online (Sandbox Code Playgroud)

“这很奇怪,”我想,我只知道我DISPLAY=0在 .zshrc 中设置了,“好吧,也许我需要在运行这个命令时明确地这样做?” 所以我尝试:

user@host ~ % DISPLAY=0 /usr/local/stata/stata-mp
(xstata-mp:8201): Gtk-WARNING **: 10:13:28.638: cannot open display: 0
Run Code Online (Sandbox Code Playgroud)

编辑:根据 @steeldriver 的评论我也尝试过 DISPLAY=:0

我环顾四周,发现为什么 gksu/gksudo 或使用 sudo 启动图形应用程序不能与 Wayland 配合使用?这看起来很有希望(虽然我没有使用 Wayland,但我使用的是 Ubuntu 18.10 并且 Wayland 仍然安装)。我以 user@host 身份尝试以下命令,并在管理帐户中以 su 身份尝试:

user@host ~ % xhost -si:localuser:root
xhost:  unable to open display "0"
Run Code Online (Sandbox Code Playgroud)

我感到绝望,并尝试:

user@host ~ % DISPLAY=0 xhost -si:localuser:root
xhost:  unable to open display "0"
Run Code Online (Sandbox Code Playgroud)

我尝试了其他显示数字均无济于事。我想“我是一个新手,也许localhost真正的意思是[本地用户]并尝试上面提到的排列。

user@host ~ % xhost -si:user:root
xhost:  unable to open display "0"
Run Code Online (Sandbox Code Playgroud)

事实证明我一个新手,但这并没有帮助。:)

我怎样才能让 xhost 魔法发生,这样 Gtk 就不会发脾气,我就可以启动我的应用程序(作为 user@host)?

2019 年 3 月 22 日编辑:

pgrep -a Xorg
3907 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/123/gdm/Xauthority -background none -noreset -keeptty -verbose 3
7370 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
Run Code Online (Sandbox Code Playgroud)

Lex*_*ble 5

出于某种原因(很可能与我是上述新手有关),虽然echo $DISPLAYreturns :0,但如果我输入,who我会看到我的显示实际上是:1(?!),因此,如果我调用DISPLAY=:1 /usr/local/stata/stata-mp程序,则启动时不会出现错误。

重申我的解决方案unable to open display #

  1. 键入who并记下实际显示编号(包括冒号(如果有))
  2. 对于所需的命令(例如xhost、 或/usr/local/stata/stata-mp),请键入DISPLAY=[INSERT NUMBER YOU NOTED HERE] [x COMMAND HERE]

我很乐意投票并接受另一个答案,它可以帮助我理解这种看似不一致的行为。