当我以 root 身份运行应用程序时,出现这个奇怪的错误。
**(gedit:630): WARNING **: could not open X display
No protocol specified
Unable to init server
(gedit:630): Gtk-WARNING **: Cannot open display: :0.0
我正在使用 Arch Linux。我使用su -
root 身份登录。当我运行 X 服务器时,会出现此错误。另外,如果我复制.Xauthority
到它/root/
的工作原理没有错误。
答案1
您的问题目前的状态确实不清楚。
我相信你必须导出显示。
export DISPLAY='IP:0.0'
查看答案这里。
检查服务器的 sshd_config (通常/etc/ssh/sshd_config
),并确保X11Forwarding
使用该行启用该选项
X11Forwarding yes
如果X11Forwarding
不指定,则默认为否。
答案2
运行su -
会删除几乎所有环境变量。 GUI 应用程序需要两个环境变量来了解如何连接到 GUI 环境:DISPLAY
和XAUTHORITY
。看在远程 X 显示器上打开窗口(为什么“无法打开显示器”)?以获得更详细的解释。该命令su -
保留DISPLAY
但不保留XAUTHORITY
。因此,您的 GUI 应用程序知道连接到哪里,但没有必要的密码(“cookie”)。
无需以 root 身份登录,只需运行程序而不更改大多数环境变量: run su
,而不是su -
。
如果你想做复杂的事情,请阅读我可以以 root 身份在另一个用户的桌面上启动图形程序吗?