为X2Go客户端设置一致的显示数量

问题描述 投票:0回答:2

所以我最近开始在 WSL2 上使用 Ubuntu,并且尝试使用 X2Go 作为我的 X 窗口系统来运行 GUI 应用程序。我启动 Ubuntu WSL,并运行 SSH 守护进程。然后,我使用 Windows 上的 x2go 客户端连接到 Ubuntu WSL 上运行的 X2Go 服务器,一切正常。

但是我想正常使用Windows Terminal来运行BASH,并在X2Go客户端中运行GUI应用程序。为此,需要设置 $DISPLAY 环境变量。

在这种情况下,环境变量的值为 DISPLAY=:60.0(其中 60 是上面屏幕截图中的显示器编号,0 表示显示器 0)。但是,每次重新启动客户端会话时,我都会得到不同的显示编号(之前的显示编号 + 1),并且需要再次更改环境变量的值。

有什么方法可以让显示数量一致并在.bashrc中设置DISPLAY环境变量,这样我就不需要每次都导出它?我对此很陌生,所以如果有些事情没有意义,或者是否有更好的完全不同的方法,请告诉我。

x11 windows-subsystem-for-linux wsl-2 x11-forwarding
2个回答
3
投票

不完全是您想要的,但您可以通过查看

x2goagent
进程的完整命令行来找到显示编号 - 显示将在末尾:

$ pgrep -a x2goagent

因此,如果您将以下内容添加到您的

.bashrc

x2g() {
    export DISPLAY=`pgrep -a x2goagent | rev | cut -d " " -f 1 | rev`
}

您可以在 bash 提示符下使用

x2g
函数将
DISPLAY
变量设置为 X2Go 这次决定放置屏幕的位置:

$ x2g
$ echo $DISPLAY
:55

这并不理想,因为您需要为每个 shell 输入此命令,并在启动 X2Go 会话后执行此操作。但比每次手动查找显示要容易一些。

请注意,如果您要使用在运行 X2Go 代理的 WSL 环境中执行的终端,则

DISPLAY
会自动设置为正确的值(只要您不在
.bashrc
或等效项中的某个位置重新定义它) )。从你的问题中我了解到,你正在运行 bash 的 Windows 终端上工作,但是,你可能会使用(例如)在 WSL 中运行的 xterm 来启动 X11 应用程序,然后继续使用 Windows 终端执行其他操作。


0
投票

我的显示器在 Windows X2Go 上设置为一个显然与活动显示器不对应的数字,因此我在管理面板中显示活动会话,但没有收到 XDisplay。 XDisplay 转到其他地方,例如 DISPLAY 52。自动分配有用的 DISPLAY 编号失败。没有任何迹象表明权限失败,例如显示被阻止。

© www.soinside.com 2019 - 2024. All rights reserved.