gwm(gsm's window manager),是一个用C语言编写的基于X11的动态窗口管理器。
gwm把物理屏幕虚拟为多个逻辑屏幕,即所谓的虚拟桌面。在逻辑上,对于每个虚拟桌面,在根窗口之上,从下至上把屏幕空间分成以下七层:桌面层、下层、平铺层、悬浮层、停靠层、上层、全屏窗口层;从平面上,又把屏幕分为任务栏和工作区域。其中,平铺层的工作区域又分为主区域、次区域、固定区域。这仅仅是逻辑上的分层,目的是为了实现视觉上的分层。实际上,gwm通过调整窗口的叠次序来实现分层效果,并非通过重设父窗口来进行分层。上一层的窗口总是会挡着其下一层的窗口。gwm支持平铺、堆叠、预览四种窗口布局模式,这些模式可以在运行时动态切换。任务栏由左边的按钮、中间的缩微栏、右边的状态栏组成。按钮用于实现特定的功能,各按钮的文字从左至右依次为:1、2、3、▦、▣、▥、■、^。缩微栏用于显示缩微窗口,点击缩微窗口则去缩微窗口。状态栏显示根窗口名字。
平铺模式是所有普通窗口按比例分配平铺层的工作区域的布局模式。它把工作区域從左至右划分为主区域、次区域、固定区域。若固定区域没有窗口占用,则该区域并入主区域和次区域。若次区域没有窗口占用,则该区域并入主区域。三个区域各自均匀分配空间给相应的窗口。主、次区域的窗口是互为补充的,即:若因某操作而造成主区域窗口数量比主区域可容纳窗口数量多,则主区域底部的窗口移到次区域顶部;若因某操作而造成主区域窗口数量比主区域可容纳窗口数量少并且次区域窗口数量大于零,则次区域顶部的窗口移到主区域底部。
堆叠模式是窗口之间可以堆叠、所有普通窗口按其请求的位置排列于工作区域的布局模式。
预览模式是所有窗口平均分配工作区域空间的布局模式。若在该模式下选中窗口,则切换至上一布局模式,选中的窗口变成当前窗口,其余窗口保持在前一布局模式中位置。若在前一布局模式为平铺模式,则选中的窗口移动至主区域顶部。
gwm为所有窗口分别重设父窗口,该父窗口还包括边框、标题栏,这两者统称窗口框架。重设父窗口之前的原窗口范围称为非框架区域。其中,标题栏从左至右依次设置标题区域、按钮。标题区域用于显示窗口的标题,以及提供移动窗口的功能。按钮用于实现特定的功能,按钮的数量随基本窗口布局模式而异。
Features
- 用xlib+c編寫的X11窗口管理器
- gwm支持平鋪、堆疊、預覽三種窗口布局模式,並可在運行時切換
- 支持按鍵功能綁定和定位器按鈕功能綁定
- 支持窗口標題欄、邊框、菜單
- 支持任務欄和第三方任務欄
- 支持對緊急和關注請求的提示
- 支持全屏、最小化、最大化、還原、卷起、浮起窗口
- 支持操作中心
- 支持聚焦模式切換
- 支持虛擬桌面
- 支持FreeType字體
- 支持在單行輸入框內輸入並運行命令
- 支持構件功能提示
- 支持圖標
- 支持壁纸
- 支持屏保
- 支持截圖
- 自動適配屏幕DPI
- 支持配置顏色主題
- 支持國際化與本地化(Support for internationalization and localization)
- 支持設置構件和窗口不透明度
- 支持操作整組窗口
- 支持後備字體