当我使用命令运行某些软件时,sudo
它会显示类似以下错误
cannot connect to X server
例如如果我运行以下命令:
$ sudo gedit /etc/profile
我收到以下命令
(gedit:6758): WARNING **: Command line `dbus-launch --autolaunch=84b871d735f31ffe014dc9ba00000009 --binary-syntax --close-stderr'
exited with non-zero exit status 1:
Autolaunch error: X11 initialization failed.
Cannot open display:
Run 'gedit --help' to see a full list of available command line options.
或者如果我正在运行super-boot-manager
我收到以下错误
buc: cannot connect to X server
请帮忙。
答案1
您需要允许 root 用户访问 X 服务器:
xhost local:root
并将命令指向右侧DISPLAY
:
sudo DISPLAY=$DISPLAY gedit /etc/profile
答案2
问题终于解决了。我刚刚添加了这一行:
Defaults env_keep="DISPLAY XAUTHORITY"
在......的最后visudo
。
为此,您必须运行:
sudo visudo
它将打开该文件,然后在末尾添加上述行。
感谢所有人,特别是@Thor 的热情帮助
答案3
补充@Thor 的回答, 跑步:
xhost local:root
之前sudo gedit
。要使此设置永久生效,请添加以下行
xhost local:root
到~/.xinitrc
1 个文件。如果文件不存在,则创建该文件。
答案4
在运行脚本之前设置DISPLAY
并XAUTHORITY
改变环境。例如在systemctl
服务文件中:
[Unit]
Description=Start Clock
[Service]
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/pi/.Xauthority
ExecStart=/usr/bin/python3 /home/pi/clock.py
Restart=always
RestartSec=10s
KillMode=process
TimeoutSec=infinity
[Install]
WantedBy=graphical.target