X 客户端是否一定需要窗口管理器才能工作?

X 客户端是否一定需要窗口管理器才能工作?

X 客户端是否一定需要窗口管理器才能工作? X 客户端可以仅与 X 服务器一起使用吗?

如果 X 客户端没有窗口,是否需要窗口管理器才能工作?

如果X客户端可以在没有窗口管理器的情况下工作,那么X客户端就一定没有窗口吗?

谢谢。

答案1

不,您不需要运行窗口管理器来允许 X 客户端工作。某些系统提供了在启动时仅运行终端的选项,您可以从中启动其他程序,包括窗口管理器。某些仅希望运行一个应用程序的信息亭设置不需要窗口管理器。微软 Windows 的 X 的某些实现通过让操作系统管理窗口来避免使用 X 窗口管理器。

如果没有窗口管理器,您通常需要为程序指定几何形状,这样您就不必将所有内容都放置在左上角。

在 X 中,窗口管理器只是另一个 X 客户端。这在当时是不寻常的,但使得使用不同的窗口管理器变得很容易。

查看问题的另一种方法是观察您可以动态更改窗口管理器,因此第一个停止和第二个窗口管理器控制之间有一段时间,但由于所有应用程序都不会崩溃,因此它们必须能够没有工作。

答案2

不。编写良好的应用程序不需要窗口管理器。

但是,如果没有窗口管理器,一些“现代”损坏的应用程序将无法正常工作(例如,firefox 及其不会下拉的地址栏建议[1])。

许多其他低于标准的应用程序不仅认为窗口管理器,但雪上加霜的是,单击以聚焦窗口管理器。例如,过去任何 Java 应用程序都会简单地抢走启动时的焦点。

如果您想测试,请安装Xephyr(“嵌套”X11 服务器),使用 运行它Xephyr :1,然后DISPLAY=:1在其环境中启动您的应用程序。

[1] 除非正在运行窗口管理器,否则在输入或单击历史记录按钮时,Firefox 的“很棒的栏”不会打开其建议窗格。自动隐藏菜单也不起作用。

答案3

窗口管理器为用户提供了便利。

在过去的好日子里,我曾经有一个~/.Xclients文件,内容如下:

#!/bin/sh

HOST=`uname -n | sed 's/\..*$//'`

xv -root -rmode 5 $HOME/misc/millennium/theme/Wallpaper.gif -quit &

xterm -geometry 80x24+0+85 \#52x71-104+0 -n $HOST -T $HOST &
xterm -geometry 80x24+510+429 \#52x71-52+0  -n $HOST -T $HOST &
xclock -digital -update 1 -geometry +1059+982 &
xscreensaver -nosplash &
exec /usr/local/lib/X11/fvwm/fvwm

当我使用 启动 X 时,该文件将运行startx。当此脚本完成时,X 服务器将关闭。

请注意最后一行:exec .../fvwm。这是启动我的窗口管理器(fvwm)的行。所有先前的应用程序(xvxtermxclockxscreensaver)都在窗口管理器启动之前运行。因为调用的fvwm是最后一行并且不是放在后台意味着当fvwm终止时 X 将关闭。

X 启动甚至有一个“回退”默认值...如果没有配置文件,则通过一次xterm运行启动 X。关闭该命令xterm将结束 X 会话。

答案4

是的,X 客户端只能与 X 服务器一起使用。例如,我在主机上为虚拟机提供了自己的虚拟控制台,如下所示。

# Press CTRL-ALT-F5, login and enter this command:
startx /usr/bin/virt-viewer -a -k -r -w -c qemu:///system CentOS -- :4

# Press CTRL-ALT-F6, login and enter this command:
startx /usr/bin/virt-viewer -a -k -r -w -c qemu:///system Windows -- :5

“startx”命令在显示器 :4 和 :5 上启动 Xorg X 服务器,仅使用 virt-viewer 作为客户端。

“CentOS”和“Windows”是我安装虚拟机时给它们起的名称。这-kvirt-viewer 的切换使其以最少的控制全屏显示,因此每个虚拟机似乎都拥有该机器,直到我按 CTRL-ALT-Fn 切换到不同的虚拟控制台。

当然,CentOS 在虚拟机内部运行显示管理器和窗口管理器,但这与主机上运行的 X 服务器没有任何联系。

相关内容