feat(glazewm): update schema to match GlazeWM v3 config format - #5924
Merged
Conversation
- Add new top-level sections: general, gaps, window_effects, window_behavior, binding_modes
- Update workspaces from array of strings to array of objects with name, keep_alive, bind_to_monitor, display_name
- Rewrite window_rules to use new match format with operators (equals, includes, regex, not_equals, not_regex)
- Rewrite keybindings to use {commands, bindings} object format
- Add on (WindowRuleEvent) and run_once to window_rules
- Add single_window_outer_gap to gaps config
- Add display_name to binding_modes
- Change opacity from number to string (supports '95%' format)
- Keep bar section unchanged (still valid)
- Add 3 test files: custom sample, upstream sample-config.yaml verbatim, and real user config
Contributor
|
Thanks for the PR! This section of the codebase is owned by @madskristensen and |
Member
|
Thanks |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Updates the
glazewm.jsonschema to match the current GlazeWM v3 configuration format, based on cross-referencing with the actual Rust source code (parsed_config.rsanduser_config.rs).Changes
New top-level sections
general— startup/shutdown/config_reload commands, focus_follows_cursor, toggle_workspace_on_refocus, cursor_jump (enabled + trigger), hide_method, show_all_in_taskbargaps— scale_with_dpi, inner_gap, outer_gap (string or per-edge object), single_window_outer_gapwindow_effects— focused_window and other_windows, each with border, hide_title_bar, corner_style, transparencywindow_behavior— initial_state (tiling/floating), state_defaults (floating + fullscreen)binding_modes— array of {name, display_name, keybindings}Updated existing sections
workspaces— from array of strings → array of objects with name, keep_alive, bind_to_monitor, display_namewindow_rules— rewrote to new format withcommands[],match[](with operators: equals, includes, regex, not_equals, not_regex),on(WindowRuleEvent), andrun_oncekeybindings— rewrote to {commands, bindings} object formatcommands— removed minItems constraint (empty arrays are valid, e.g.config_reload_commands: [])opacity— from number → string (supports'95%'and'0.95'formats)bar— kept unchanged (still valid for GlazeWM v3)Test files (new)
src/test/glazewm/sample.yaml— custom test covering all new sectionssrc/test/glazewm/upstream-sample.yaml— verbatim copy of glzr-io/glazewm sample-config.yamlsrc/test/glazewm/latipun.yaml— real-world user configValidation
All checks pass: