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)的行。所有先前的应用程序(xv
、xterm
、xclock
、xscreensaver
)都在窗口管理器启动之前运行。因为调用的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 服务器没有任何联系。