对于 X11,我可以从 Linux 控制台或通过 SSH(或 shell 脚本等)启动应用程序
DISPLAY=:0 application
并且可能需要确保应用程序找到身份验证文件或使用类似命令xhost
。
但是如何从 Wayland 会话之外启动 Wayland 程序?我只找到了有关如何从控制台启动 Wayland 合成器的信息,但没有提示如何在 Wayland 会话内启动应用程序以及如何选择使用哪个会话(如果有多个会话)。
X11 等效项:
我想在现有会话中启动一个程序。
- 我已登录,例如使用 lightdm 进入 KDE 或 GNOME 会话。
- 我的用户可以访问相应的X11 cookie。
- 我切换到 Linux 控制台,例如按 Ctrl-Alt-F3
- 我跑
DISPLAY=:0 xmessage "Hello!"
- 我切换回 X11 会话,例如,当 X-Server 在 VT 7 上使用时按 Ctrl-Alt-F7。
- 我看到了 xmessage 对话框并可以与其交互。
这适用于每个 X11 程序,因为程序的行为就像从终端仿真器启动一样,只是变量DISPLAY
不会像在 X11 会话中那样在 Linux shell 上自动设置。
定义DISPLAY
变量后,程序使用与在 X11 会话中启动的程序相同的 unix 套接字和其他 IPC 机制,并且不必知道不是从图形应用程序启动的。
答案1
Wayland 的等效方法是设置WAYLAND_DISPLAY
环境变量。例如,当我env | grep WAYLAND_DISPLAY
在 Wayland 下的终端中运行时,我看到WAYLAND_DISPLAY=wayland-1
。
通过 SSH,我可以运行WAYLAND_DISPLAY=wayland-1 grim
来捕获 Wayland 显示内容的屏幕截图。