jpa*_*ugh 7 xorg x11-forwarding xephyr
鉴于以下目标,我如何运行托管在远程服务器上的 X11 应用程序:
GLX
.我已经看到很多关于超级用户的建议,但其中大部分是部分修复或只是很糟糕。
X11-Forwarding
已过时:它无法运行某些应用程序,尤其是那些依赖 GLX 扩展的应用程序。LIBGL_ALWAYS_INDIRECT=1
对我不起作用。Xephyr
也出来了。它目前不支持 GLX,尽管我在开发树中看到了一些 GLX 工作。也许在未来,那将是最干净的方式。xmove
也出来了。太老了,无法进一步考虑。编辑:我花了一个周末来提出几个建议,xpra
这是最好的。我已经在下面的答案中描述了我的设置,希望对其他人有所帮助。
jpa*_*ugh 12
Xpra(如这里提到的)做我想要的。它允许运行任意 X 应用程序,这些应用程序可以转发到多个客户端,无论是在同一台计算机上,还是在另一台机器上。它也支持运行 OpenGL 应用程序,并允许您的应用程序在最后一个客户端断开连接后继续运行——让您有机会稍后重新连接。
xpra
分为两部分:客户端和服务器。要启动服务器,请在远程机器上运行以下命令:
$ xpra start :100
Run Code Online (Sandbox Code Playgroud)
这会xpra
在新的 X 显示器上启动。(有一个与代理一起使用的解决方法。)
要让应用程序由 控制xpra
,请在与xpra
服务器相同的显示器上运行它,如下所示:
$ export DISPLAY=:100
$ firefox&
$ blender&
...
Run Code Online (Sandbox Code Playgroud)
这一切都可以通过 ssh 连接(有或没有 X11-Forwarding)来完成,没有问题。
要启动客户端,请执行以下操作之一:
$ ssh -X user@remotehost
<gain remote connection>
$ xpra attach :100
Run Code Online (Sandbox Code Playgroud)
或者
$ xpra attach ssh:user@remotehost:100
Run Code Online (Sandbox Code Playgroud)
请注意,后者需要xpra
在您的本地机器上安装客户端;前者没有。
该xpra
客户端将放一个图标,窗口管理器的任务栏/面板使您能够断开客户机。(或者,您可以直接杀死它,只要您小心不要杀死服务器。)只要xpra
服务器仍在运行,您就可以稍后重新连接。如果您xpra
在主机上运行单个服务器,您也可以简单地省略显示编号,并xpra attach
会计算出来。
一个非常好的功能xpra
是它允许您在预先存在的显示器上启动服务器。这允许您在xpra
服务器崩溃时恢复会话(只要该显示器上的 X 服务器仍在运行)。为此,请运行
$ xpra start --use-display :100
Run Code Online (Sandbox Code Playgroud)
注意事项:
xpra
作为窗口管理器运行。虽然它在嵌入其他窗口管理器时表现得很好,但它在 X 应用程序本身中表现不佳:它不允许,例如rxvt-unicode
删除其标题栏;它也不会告诉窗口他们有多少空间可以在屏幕上工作,例如,下拉框和菜单从屏幕上掉下来。但是,我认为后一个问题是修复我的配置的问题。
键被重复。频繁地。这可以通过使用来解决xpra attach --no-keyboard-sync
,但手册页警告说这在某些游戏中效果不佳。我一直在祈祷,我发现自己并不渴望使用其中一款游戏。
由于这些原因,Xephyr
很可能是更好的解决方案(一旦它支持 GLX),因为它作为 X 服务器运行,而不是窗口管理器。但是,我还没有调查它是否支持恢复以前断开连接的会话。
归档时间: |
|
查看次数: |
6777 次 |
最近记录: |