我怎样才能指定一个显示?

当我通过SSH运行一些程序,如firefox & ,我得到一个错误

 Error: no display specified 

我想打开许多显示器,仍然显示每个程序的stdout

初始问题:如何指定显示屏以获得多显示的程序?

帕布罗圣克鲁斯给我下面的代码作为解决scheme。 我不明白。

 $ export DISPLAY=yourmachine.yourdomain.com:0.0 $ firefox & 

什么是yourmachineyourdomain.com在命令?

X的工作方式与任何networking程序的工作方式相同。 你有一个服务器的描述(在这种情况下,X显示服务器)在一台特定的机器上运行,你有X客户端(如Firefox),试图连接到该服务器,以获取他们的信息显示。

通常(在“家”机器上),客户机和服务器在同一个机器上运行,并且只有一个服务器,但是X足够强大,这不需要发生。 它是从一开始就内置的服务器/客户端分离的。

这可以让你做这样的奇妙的事情,比如login到你的盒子(在文本模式)在行星的中途,告诉它显示服务器是你当前的盒子,瞧,窗户突然开始出现在本地。

为了使客户端与用户进行交互,需要知道如何find服务器。 有很多方法可以做到这一点。 许多客户端允许使用-display--display选项来指定它:

 xeyes -display paxbox1.paxco.com:0.0 

如果没有明确给出显示,许多人将使用DISPLAY环境variables。 你可以设置这个variables像其他任何:

 DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile export DISPLAY=paxbox1.paxco.com:0.0 # in your shell DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (shell permitting) 

DISPLAYvariables的第一部分就是显示服务器机器的地址。 它遵循与其他IP地址相同的规则; 它可以是可parsing的DNS名称(包括localhost )或特定的IP地址(如192.168.10.55)。

第二部分是X特定的。 它给出X“显示”(X服务器)号码和屏幕号码使用。 第一个(显示号码)通常是指包含一个或多个屏幕但具有单个键盘和鼠标(即,一个inputstream)的一组设备。 屏幕号通常给出该组内的特定屏幕。

一个例子是:

 +----------------------------------------+ |paxbox1.paxco.com| | +-----------------+ | | | | +----------+----+ +----------+----+ | | |Display :0| | |Display :1| | | | +----------+ | +----------+ | | | | | | | | | | +-----------+ | | | | | | |Screen :0.0| | | | | | | +-----------+ | | | | | | +-----------+ | | | | | | |Screen :0.1| | | | | | | +-----------+ | | | | | | +-----------+ | | +-----------+ | | | | |Screen :0.2| | | |Screen :1.0| | | | | +-----------+ | | +-----------+ | | | | +-----------+ | | +-----------+ | | | | |Screen :0.3| | | |Screen :1.1| | | | | +-----------+ | | +-----------+ | | | | +-----------+ | | +-----------+ | | | | | Keyboard | | | | Keyboard | | | | | +-----------+ | | +-----------+ | | | | +-----------+ | | +-----------+ | | | | | Mouse | | | | Mouse | | | | | +-----------+ | | +-----------+ | | | +---------------+ +---------------+ | | | +----------------------------------------+ 

这里有一台带有两台显示服务器的机器( paxbox1.paxco.com )。 第一个有四个屏幕,第二个有两个。 那么可能性是:

 DISPLAY=paxbox1.paxco.com:0.0 DISPLAY=paxbox1.paxco.com:0.1 DISPLAY=paxbox1.paxco.com:0.2 DISPLAY=paxbox1.paxco.com:0.3 DISPLAY=paxbox1.paxco.com:1.0 DISPLAY=paxbox1.paxco.com:1.1 

取决于你希望你的实际窗口出现在哪里以及你想使用哪个input设备。

 $ export DISPLAY=yourmachine.yourdomain.com:0.0 $ firefox & 

当您通过SSH连接到另一台计算机时,可以在SSH中启用X转发,以便X窗口通过SSH隧道encryption转发回您的计算机。 您可以通过将-X附加到ssh命令行或在SSHconfiguration文件中设置ForwardX11 yes来启用X转发。

要检查X-Forwarding是否成功设置(服务器可能不允许),只要echo $DISPLAY输出类似localhost:10.0东西就可以了。

尝试

 export DISPLAY=localhost:0.0 

尝试安装xorg-x11-xauth软件包。

我碰到类似的问题,所以也许这个答案会帮助别人。

Error: no display specified原因Error: no display specified错误是Firefox正在启动,但远程主机上没有运行X服务器(GUI)。 您可以使用X11转发在远程主机上运行Firefox,但将其显示在本地主机上。 在Mac OS X上,您需要下载XQuartz才能使用X11转发。 没有它,你将不会有一个$DISPLAYvariables集,所以如果你尝试echo $DISPLAY ,它将是空白的。

即使我在CentOS 6.8也遇到同样的情况。

 yum reinstall xorg* 

结束当前的会话,并使用mobiXterm等工具打开另一个会话。 确保会话在工具中启用了X11转发。

通过SSH连接时,请勿尝试手动设置$ DISPLAY。
如果通过SSH -X连接,并且$ DISPLAY保持为空,则通常意味着不能build立encryption通道。

很有可能你错过了包xauth或者xorg-x11-xauth 。 尝试使用以下命令将其安装在远程机器上:

 sudo apt-get install xauth 

要么

 sudo apt-get install xorg-x11-xauth 

在那之后,重新启动你的SSH连接。 不要忘记使用SSH -X以便将X Window输出转发到本地计算机。

现在再次尝试echo $DISPLAY来查看$ DISPLAY是否已经被SSH恶魔自动设置。 它应该显示一个IP地址和一个端口的行。

我通过vnc了解了X11更多。 要指定显示器以获得多显示程序,请导出DISPLAY = IP:DisplayNum.ScreenNum

例如,

 vncserver :2 vncserver -list echo '$DISPLAY'=$DISPLAY export DISPLAY=:2 # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2. echo '$DISPLAY'=$DISPLAY