如果我通过 SSH 进入 Raspberry Pi 或运行 Ubuntu 18.04 LTS 的本地 VM,那么我可以运行:
user:~$ export DISPLAY=:0
user:~$ gedit
这将在操作系统上打开一个带有文本编辑器 gedit 的图形窗口。但是,如果我通过 SSH 进入运行 Ubuntu 18.04 LTS 的 AWS EC2 实例,然后运行“export DISPLAY=:0”然后运行“gedit”,我会收到以下错误:
No protocol specified
Unable to init server: Could not connect: Connection refused
(gedit:<proces id>): Gtk-WARNING **: <time stamp>: cannot open display: :0
有没有办法找到显示编号,或者有其他方法可以启动图形应用程序?请注意,我不要想要通过传递 -X 标志等将 GUI 窗口转发回我的终端。
答案1
进行图形会话写它在登录时某处显示号码。
例如,将这些放入您的 ~/.Xprofile 中:
echo "$DISPLAY" > ~/tmp/current-display
echo "$XAUTHORITY" > ~/tmp/current-xauthority
确保;确定一切有效,您还应该用$DBUS_SESSION_BUS_ADDRESS
和重复此操作$XDG_RUNTIME_DIR
,尽管它们在基于 systemd 的系统上经常是静态的,但并非总是如此。
稍后您将能够运行:
export DISPLAY=$(< ~/tmp/current-display)
export XAUTHORITY=$(< ~/tmp/current-xauthority)
请注意,No protocol specified
通常意味着显示的数字是正确的,但它被否认由于缺少 Xauth 数据而导致的连接。