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


32

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

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

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

谢谢。


4
当我第一次遇到X时(即很久以前),大多数介绍材料都讨论了不需要窗口管理器这一事实。如今似乎并非如此,但我想有人可能会认为这是显而易见的或懒惰的例子。
dmckee

11
@蒂姆:你似乎已经呆了很长时间,所以你应该知道,反对票根本不是用来传达“仇恨”,“邪恶”,“残酷”,“歧视”或类似的东西。否决票仅仅是内容分级系统,某些内容的价值不如其他内容。(根据记录,我没有对这个问题进行否决:我认为这个问题很好。)另请参见:我们是否可以使新用户更清楚地知道主站点上的否决不是侮辱,实际上可以帮助他们自助?在元堆栈溢出。
丹尼尔·普赖顿

5
@Tim您的一些低级问题对我似乎没有用。UI(按钮的替代文本)鼓励用户否决“无用”的问题。仇恨不是必要的组成部分。添加一个小的提示/断言,表示某个问题在某些情况下可能被使用(即使是非常微不足道的/不太可能的),在大多数情况下会阻止这种下意识的反应。我看到的您的问题非常相似,因为它们缺少任何此类提示/主张。
kubanczyk

3
蒂姆(Tim),钻石主持人可以使用一些检测模式投票的工具。标记他们并要求他们调查。/ mod on physics.se
dmckee,

1
您的问题部分似乎不合语法。最严重的罪犯似乎是“是否可以工作需要窗口管理器?”。
hkBst

Answers:


26

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

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

许多其他低于标准的应用程序不仅采用了窗口管理器,而且还增加了对伤害的侮辱,只需单击以使窗口管理器聚焦即可。例如,过去任何Java应用程序都会简单地将注意力集中在启动上。

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

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


firefox中是否存在针对您提到的问题的打开错误?我认为firefox的开源性质将愿意为该问题提供一个错误修复程序。
t3dodson

4
@ t3dodson您可以尝试提交一个,但是对于任何人是否愿意查看修复此问题的补丁程序都非常怀疑。如果没有窗口管理器,会话管理器以及最近运行的pulseaudio服务器,运行firefox并不受支持。当然,您可以分叉,但是我不希望对最严重的敌人保持火狐分叉;-)
mosvy 18/12/28

Imo不提Xephyr就此主题的任何答案都是不完整的。+1
Rui F Ribeiro

38

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

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

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

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


2
提示:有一个名为xwit的工具在尝试无wm的配置时确实有帮助。
rackandboneman 18/12/28

7

窗口管理器为用户带来了便利。

在过去的美好时光中,我曾经有一个~/.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会话。


不为fvwm设置背景的优点是什么?
亚历克斯·哈纳尔

1
我们需要脚本不终止,因为如果终止,X服务器将终止;否则,X服务器将终止。通过不后台fvwm运行(并通过运行它exec),我们确保仍有阻止X服务器关闭的进程。通过执行最后一个过程,fvwm可以使“退出”菜单项按预期工作。
史蒂芬·哈里斯

得到它了。已经有一段时间了,因为我对X做了很多底层的工作。必须说,尽管fvwm 2是我最喜欢的两个窗口管理器之一(另一个是kwin 3)。
亚历克斯·哈纳尔

就我而言,fvwm-1.24r是我最喜欢的窗口管理器:-)
Stephen Harris,

我听到你的声音。我似乎记得,v2比v1更可自定义(所有配置选项都在单个文本文件中,并且可以即时重新加载吗?)。重量也很轻,尤其是按今天的标准。我上一次在P-II时代IIRC中每天使用它。
亚历克斯·哈纳尔

6

为了增加其他答案,我开发并发布了一个无需窗口管理器即可工作的开源应用程序(意味着您可以直接从xinitrc启动它)。在这种情况下,除了管理对话框的几何形状和Z顺序外,应用程序还应该执行一些额外的步骤,但这是完全可管理的。


1

这里有很多很好的详细答案。这是简单明了的答案。

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

否:但是如果您不愿意管理窗口(移动,调整大小,降低,升高等),就可以。如果需要,还有其他工具可以执行此操作。

X客户端只能与X服务器一起使用吗?

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

如果没有窗口,则应该没有窗口管理器。

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

否:可以有窗户。

尝试这个。

DISPLAY=:21
vncserver -localhost -geometry 1920x1080  -SecurityTypes None $DISPLAY &
ssvnc $DISPLAY
xterm &

然后以新的xterm类型fvwm

您可能需要安装vncserverssvncfvwm,第一。


1

是的,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”命令在仅使用virt-viewer作为客户端的显示器:4和:5上启动Xorg X服务器。

“ CentOS”和“ Windows”是我在安装虚拟机时为其赋予的名称。用于virt-viewer 的-k开关使它以最少的控制显示为全屏,因此在我按CTRL-ALT-Fn切换到其他虚拟控制台之前,每个虚拟机似乎都是该计算机的所有者。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.