X Window

X Client 和 X Server 
X Window 為 一 Client-Server 架 構 之 GUI 。 Client 指 的 是 在 X Window 下 執 行 的 應 用 程 式, 需 要 X Server 為 其 服 務 ; Server 指 的是 整 個 管 理 你 的 桌 面 的 X Window 系 統 , 稱 為 X Server 。 X Server 除 了 負 責 GUI 介 面 之 管 理 和 提 供 Client 端 的 服 務 之 外 , 並 且 還 管 理 系 統 資 源 ( Resource ) 和 事 件 ( Event ) 之 發 生 和 傳 遞 。 
Display 和 Screen
  在 一 個 X Wintow System  可 以 包 含 多 個 Screen , 而 Screen 則 是 一 個實 際 的 Monitor 或 是 Device 。 每 個 Display 則 可 以 包 含 多 個 Screen 。 Display 指 的 是 一 群 Screen 和 一 個 pointer ( 一 般 是 滑 鼠 )加 上一 個 鍵 盤 的 集 合 。  

Event 和 Request
  當 Client 需 要 在 顯 示 幕 上 開 一 個 window 或 是 顯 示 一 段 文 字 或圖 形 時 , 則 Client ( 即 X 下 的 應 用 程 式 ) 向 Server 提 出 一 個 Request ; Server 收 到 Request 之 後 , 則 依 據 Request 的 內 容 , 提 供 相 對 應 的 服 務 。當 使 用 者 在 屬 於 某 一 Client 的 window 內 , 按 了 一 下 滑 鼠 的 右 鍵 , 或 是 敲 了 鍵 盤 上 的 一 個 Key , 則 Server 會 發 送 一 個 Event 給 該 Client 。 而 Client 只 要 依 據 Server 送 回 來 的 Event, 即可 判 斷 有 何 事 件 發 生 , 然 後 依 據 所 發 生 的 Event 發 生 相 對 應的 動 作 。  

X Window 的 網 路 特 性 
  Client 和 Server 不 一 定 要 在 同 一 部 電 腦 上 執 行 ; Client 和 Server 可 以 是 接 在 網 路 上 的 兩 台 電 腦 。 當 Client 要 向 Server 發 出 Request 時 , 可 以 透 過 網 路 向 執 行 Server 的 機 器 發 出 Request , 然 後 送 達 給 Server 處 理 。 同 樣 的 , 當 Server 要 向 Client 通 知 Event 的 發 生 時 , 也 可 以 透 過 網 路 向 Client 傳 送 。 因 此 你 可 以在 A 地 的 電 腦 上 執 行 某 一 X Window 應 用 程 式 , 而 在 B 地 透 過 X Server 觀 察 程 式 執 行 的 結 果 。  

一 個 X Window 的 程 式 , 也 就 是 Client , 在 同 一 時 間 可 以 和 一 個 以 上 的 Server 溝 通 。 也 可 以 同 時 和 多 個 Server 建 立 連 接 , 在 多個 Server 上 顯 示 , 並 接 受 多 個 Server 的 訊 息 。 而 X Server 也 可 以在 同 時 間 內 , 接 受 多 個 Client 送 來 的 訊 息 , 並 做 對 應 的 處 理。 

Window 的 階 層 性 
X Window 內 的 window 是 有 階 層 關  的 , 這 階 層 關  可 以 畫 成 一樹 狀 圖 。 在 樹 狀 的 最 上 層 是 root window , 這 個 window 是 Server 所特 有 的 。 除 了 root window 之 外 , 每 個 window 都 有 一 個 parent window , 即 是 在 樹 狀 圖 上 的 上 一 層 window 。 在 樹 狀 圖 的 下 一 層 window 稱 為 child window 。 每 個 window 可 以有 多 個 child , 但 不 一 定 每 個 window 都 有 child 。 而 child window 下面 還 可 以 有 child 。   Win 1 和 Win 2 皆 為 root 的 child, root 則 為 Win 1 和 Win 2 的 parent 。 Win 2-1 和 Win 2-2 和 Win 2-3 則 為 Win 2 的 child , Win 2 則 為 Win 2-1 和 Win 2-2 和 Win 2-3 的 parent。而 root 和 Win 1 和 Win 2 則 皆 為 Win 2-1 和 Win 2-2 和 Win 2-3 的 ancestor。而 root 則 為 Win 1 和 Win 2 的 ancestor。  

在 顯 示 幕 上 , child 永 遠 在 parent 上 面 ( 即 parent 被 child 蓋 住 ) 。 而 child window 可 以 比 parent window 大 , 但 超 過 parent 的 部 份 , 會 被 截 掉 而 不 顯 示 在 顯 示 幕 上 。 
藍 色 部 分 為 parent window , 而 草 綠 色 部 分 則 為 child window 和 parent window 重 疊 的 部 分 。 在 parent window 外 面 灰 色 部 分 也 為 child window 的 一 部 分 , 但 其 為 超 過 parent window 視 窗  圍 之 外 的 部 分 , 所 以 不 會 被 顯 示 出 來 。 草 綠 色 部 分 則 是 顯 示 child window 的 內 容 。  


當 顯 示 幕 上 有 多 個 window 存 在 時 , 可 能 會 發 生 window 重 疊 的 現象 。 而 在 下 面 的 window 會 被 在 上 面 的 window 蓋 掉 ; 當 上 面 的 window 移 離 目 前 位 子 , 而 使 原 本 被 蓋 的 部 分 重 新 暴 露 出 來 , 這 時 就 必 需 重 畫 露 出 來 的 部 分 。 但 X 並 不 保 証 會 保 存 你 原 本顯 示 在 window 上 的 資 料 。 因 此 這 時 Client 就 必 需 負 起 重 畫 的 責 任 了 。 當 X Server 沒 保 存 重 新 被 暴 露 出 來 的 部 份 的 資 料 時 , X Server 會 送 出 Expose Event 給 Client, 通 知 Client 那 些 部 分 需 要 重 畫。 然 後 Client 就 必 需 決 定 是 否 要 重 畫 , 或 是 採 取 其 它 的 處 理 方 式 。 

X Window 的 外 觀 
在 很 多 的 GUI 中 , 如 OS/2 等 , 都 會 提 供 Button, Scroll Bar, Menu 等 等 的 基 本 元 件 , 以 方 便 建 構 程 式 的 外 觀 。 但 在 X 中 並 不 提供 這 樣 的 元 件 ; 相 反 的 , X Window 提 供 的 是 一 套 建 立 外 觀 風 格 的 機 制 。 利 用 這 套 機 制 , 我 們 可以 建 立 各 種 不 同 風 格 的 元 件 。 這 樣 我 們 即 不 必 限 制 在 系 統 內定 的 風 格 中 , 而 無 法 做 改 變 。 這 套 機 制 是 用 大 小 不 同 的 window , 組 合 建 立 如 Button , Scroll Bar 等 等 的 元 件 , 充 滿 了 彈 性 。 
Window Manager 
在 X 中 有 一 種 極 為 特 殊 的 程 式 , 稱 為 Window Manager 。 其 作 用 是管 理 Desktop 上 的 各 應 用 程 式 的 window , 並 提 供 特 殊 風 格 的 window 外 觀 。 不 同 的 Window Manager 有 不 同 的 外 觀 風 格 。 因 此 ,我 們 可 以 更 換 不 同 的 Window Manager , 以 得 到 不 同 風 格 的 window 外 觀 。 而 一 般 的 Client 則 必 需 和 Window Manager 合 作 , 以 得 到 良好 而 一 致 風 格 的 window。 Window Manager 也 是 一 Client 程 式 , 和 一 般 的 Client 相 同 。 只 是 Window Manager 負 有 特 別 的 任 務 ; 管理 Desktop 和 window 外 觀 。 
為 了 得 到 良 好 而 風 格 一 致 的 window, Client 和 Window Manager 必 需合 作 。 其 合 作 方 式 是 透 過 由 Client 傳 送 Hint 給 Window Manager , 而 Window Manager 以 後 , 則 會 參 考 Hint 的 內 容 , 給 予 應 用 程 式 所開 出 的 window 適 當 的 外 觀 。 但 Window Manager 不 一 定 會 依 據 Hint 指 示 處 理 , 純 為 參 考 。 
(
http://www.fanqiang.com )http://fanqiang.chinaunix.net/a4/b8/20010601/180800311_b.html

你可能感兴趣的:(X Window)