窗口管理器

Window Manager 是一种特殊的 Xclient。

使用窗口管理器时,Xserver 并不直接与其它 Xclient 通信,而是通过 WM 中转,当一些消息被定义为 WM 指令时,它们会被拦截。例如 Alt+F4 关闭窗口、拖动标题栏……

消息“打开链接 linuxtoy.org”,具体内容如下:


    输入焦点在地址栏的范围内,“linuxtoy.org”,回车
    

Xserver 并不能直接判断焦点,而是这样:

  1. Xserver 向 WM 发送位置和点击的信息,WM 根据当前的“焦点策略”确定激活(最上层)的窗口为 Firefox
  2. Xserver 将 Firefox 显示在最上层,高亮显示它的标题栏
  3. 在窗口 Firefox 内点击地址栏,或者 Ctrl+L,Xserver 将位置信息发送给 WM,WM 再发送给 Firefox
  4. Firefox 判断当前焦点后,显示一个闪动的文字输入光标
  5. Firefox 将输入光标通过 WM 发送给 Xserver,Xserver 在屏幕相应位置进行显示

那么,“窗口管理器”到底能作些什么呢?其实它所作的只有一件事──管理窗口。例如: