告别杂乱窗口:GlazeWM核心配置语法详解与实战
你是否还在为Windows桌面窗口混乱而烦恼?作为一款受i3和Polybar启发的Windows平铺窗口管理器(Tiling Window Manager,TWM),GlazeWM通过YAML配置文件让窗口管理变得高效而优雅。本文将深入解析GlazeWM的YAML配置语法,带你快速掌握从基础设置到高级规则的全流程配置技巧,读完你将能够:
- 理解GlazeWM配置文件的核心结构
- 自定义窗口间隙、边框和透明度效果
- 创建个性化键盘快捷键
- 设置窗口规则实现自动化管理
- 配置工作区实现多任务高效切换
配置文件基础结构
GlazeWM的配置系统基于YAML(Yet Another Markup Language)格式,通过清晰的层级结构组织各项设置。核心配置定义在packages/wm-common/src/parsed_config.rs中,主要包含以下顶级配置项:
# 基础配置结构示例
binding_modes: [] # 绑定模式配置
gaps: {} # 窗口间隙配置
general: {} # 通用设置
keybindings: [] # 键盘快捷键配置
window_behavior: {} # 窗口行为配置
window_effects: {} # 窗口效果配置
window_rules: [] # 窗口规则配置
workspaces: [] # 工作区配置
配置加载流程
GlazeWM启动时会读取用户目录下的配置文件,通过Serde库进行反序列化,映射为ParsedConfig结构体。配置系统支持默认值,未显式设置的项将使用代码中定义的默认值。
核心配置项详解
窗口间隙配置(gaps)
窗口间隙是平铺窗口管理器的核心视觉特征,通过GapsConfig结构体定义:
gaps:
scale_with_dpi: true # 是否随DPI缩放间隙
inner_gap: 8px # 窗口间内边距
outer_gap: # 屏幕边缘外边距
top: 10px
right: 10px
bottom: 10px
left: 10px
single_window_outer_gap: # 单窗口时的外边距(可选)
top: 20px
right: 20px
bottom: 20px
left: 20px
inner_gap:控制相邻窗口之间的距离outer_gap:控制窗口与屏幕边缘的距离single_window_outer_gap:当工作区只有一个窗口时使用的外边距(优先级高于outer_gap)
通用设置(general)
GeneralConfig包含影响整体行为的基础设置:
general:
cursor_jump:
enabled: true # 启用光标自动跳转
trigger: window_focus # 触发时机:monitor_focus或window_focus
focus_follows_cursor: false # 禁用"光标跟随焦点"
toggle_workspace_on_refocus: true # 允许工作区切换回退
startup_commands: # 启动时执行的命令
- command: "powershell" # 示例:启动PowerShell
shutdown_commands: [] # 关闭时执行的命令
config_reload_commands: [] # 配置重载时执行的命令
hide_method: cloak # 隐藏方式:cloak(伪装)或hide(隐藏)
show_all_in_taskbar: false # 不在任务栏显示所有窗口
hide_method配置项控制工作区切换时窗口的隐藏方式,选择cloak(默认值)会保持窗口可见性但阻止交互,而hide会完全隐藏窗口。
窗口效果配置
窗口视觉效果通过WindowEffectsConfig定义,可分别为聚焦窗口和非聚焦窗口设置不同效果:
window_effects:
focused_window: # 聚焦窗口效果
border:
enabled: true
color: "#8CBAFF" # 蓝色边框(RGB: 140, 190, 255)
hide_title_bar:
enabled: true # 隐藏标题栏
corner_style:
enabled: true
style: rounded # 圆角样式
transparency:
enabled: true
opacity: 90% # 90%不透明度
other_windows: # 非聚焦窗口效果
border:
enabled: true
color: "#555555" # 灰色边框
transparency:
enabled: true
opacity: 70% # 70%不透明度
边框颜色定义在BorderEffectConfig中,默认聚焦窗口边框为蓝色,非聚焦窗口为灰色。
高级配置技巧
键盘快捷键配置
KeybindingConfig允许用户定义键盘快捷键与命令的映射:
keybindings:
- bindings: ["Mod4+Enter"] # Win+Enter快捷键
commands:
- command: "spawn" # 启动命令
args: ["powershell"] # 启动PowerShell
- bindings: ["Mod4+Shift+q"] # Win+Shift+Q快捷键
commands:
- command: "close_window" # 关闭当前窗口
支持的命令列表可参考GlazeWM的命令系统实现,每个快捷键可绑定多个命令,按顺序执行。
窗口规则配置
窗口规则是GlazeWM最强大的功能之一,通过WindowRuleConfig可以基于窗口属性自动应用特定命令。规则匹配系统使用MatchType枚举支持多种匹配方式:
window_rules:
- match: # 匹配条件
- window_process: { equals: "code.exe" } # 进程名精确匹配
window_title: { includes: "GlazeWM" } # 标题包含
commands: # 匹配后执行的命令
- command: "set_floating" # 设置为浮动窗口
- command: "resize_window"
args: ["800", "600"] # 调整窗口大小
on: [manage, title_change] # 触发时机
run_once: true # 只执行一次
支持的匹配类型包括:
equals: 精确匹配includes: 包含子串regex: 正则表达式匹配not_equals: 不等于not_regex: 不匹配正则表达式
工作区配置
工作区是组织多任务的有效方式,通过WorkspaceConfig定义:
workspaces:
- name: "1" # 工作区名称
display_name: "DEV" # 显示名称(可选)
bind_to_monitor: 0 # 绑定到第一个显示器
keep_alive: true # 保持活动状态
- name: "2"
display_name: "WEB"
- name: "3"
display_name: "DOCS"
工作区切换可以通过配置快捷键实现,结合toggle_workspace_on_refocus选项,可以快速在最近两个工作区之间切换。
常见配置问题解决
YAML语法陷阱
由于YAML解析器的限制,配置时需注意:
- 字符串引号:包含特殊字符或空格的字符串需要用引号包裹
- 缩进一致:使用空格而非制表符,保持一致的缩进层级
- Flow-style对象:避免使用紧凑格式对象,可能导致解析问题causes issues with flow-style objects in YAML
配置调试技巧
- 检查GlazeWM启动日志,查看是否有配置解析错误
- 使用在线YAML验证工具验证配置文件格式
- 逐步添加配置项,定位问题配置
最佳实践与示例配置
以下是一个综合配置示例,整合了上述各项设置:
# 完整配置示例(精简版)
general:
focus_follows_cursor: false
startup_commands:
- command: "polybar" # 启动状态栏
gaps:
inner_gap: 8px
outer_gap:
top: 10px
right: 10px
bottom: 10px
left: 10px
keybindings:
- bindings: ["Mod4+1"]
commands: [{ command: "focus_workspace", args: ["1"] }]
- bindings: ["Mod4+2"]
commands: [{ command: "focus_workspace", args: ["2"] }]
- bindings: ["Mod4+h"]
commands: [{ command: "focus_left" }]
- bindings: ["Mod4+j"]
commands: [{ command: "focus_down" }]
- bindings: ["Mod4+k"]
commands: [{ command: "focus_up" }]
- bindings: ["Mod4+l"]
commands: [{ command: "focus_right" }]
window_rules:
- match:
- window_process: { equals: "notepad.exe" }
commands:
- command: "set_floating"
- command: "resize_window"
args: ["600", "400"]
workspaces:
- name: "1"
- name: "2"
- name: "3"
总结与进阶
通过本文介绍的配置项,你已经可以构建一个基础的GlazeWM工作环境。要进一步提升效率,可以探索:
- 绑定模式:创建自定义绑定模式实现复杂命令组合
- 高级窗口规则:结合正则表达式实现精准窗口匹配
- 多显示器配置:将工作区绑定到特定显示器实现物理空间划分
- 自动化脚本:通过startup_commands和shutdown_commands实现工作流自动化
GlazeWM的配置系统设计灵活,既适合新手快速上手,也能满足高级用户的定制需求。通过不断调整和优化配置,你将拥有一个完全符合个人工作习惯的高效窗口管理环境。
提示:配置修改后可通过快捷键或命令重新加载,无需重启GlazeWM。推荐使用版本控制工具管理你的配置文件,方便回溯和同步多台设备。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



