A desktop GUI for editing GlazeWM YAML configuration files β no more hand-crafting YAML.
GlazeWM is configured entirely through a YAML file. That's powerful β but it also means you need to know the exact key names, allowed values, and nesting rules before you can change anything. One typo silently breaks your window manager.
GlazeWM Config Editor puts a form-based GUI in front of that file so you can tweak gaps, keybindings, workspace assignments, and window rules without ever touching raw YAML. It validates your changes inline, previews the resulting YAML in real time, and backs up your current config before every save.
Available since v0.1.0 Β· Built with Tauri 2 + SvelteKit + Rust.
macOS note: Builds are currently unsigned (no Apple Developer certificate). On first launch, right-click the app β Open to bypass Gatekeeper, or run:
xattr -d com.apple.quarantine /Applications/GlazeWM\ Editor.app
| Feature | Details |
|---|---|
| General settings editor | Visual controls for general, gaps, and behaviour flags |
| Window effects editor | Configure border colours, opacity, and focus effects for tiled and floating windows |
| Layout settings | Adjust tiling layout and window sizing behaviour |
| Keybinding editor | Full keybinding UI with real-time conflict detection |
| Workspace & monitor config | Assign workspaces to monitors, set display names and keep-alive; drag-to-reorder rows |
| Window rule builder | Match by process, title, or class; live window picker overlay (click any open window to capture its properties); live search highlighting |
| Raw YAML editor | Full CodeMirror editor with one-dark theme for direct YAML editing |
| Live YAML preview | Preview pane stays in sync with every form change |
| Live mode | Auto-saves and reloads the GlazeWM config on every field blur |
| Read / edit mode toggle | Clean review mode on all major sections |
| In-app updater | Notified of new releases; installs without leaving the app (passive install on Windows) |
| Automatic backups | Previous config is backed up alongside the file on every save |
| i18n support | UI available in English, Portuguese (BR), German, Spanish, French, Italian, and Chinese |
| Native menu bar | File, Edit, View, and Help menus with an About dialog showing the app version |
No screenshots have been captured yet. To contribute: run
deno task tauri dev, resize the window to 1280 Γ 800 px, and capture each panel listed below. Place images indocs/screenshots/and open a pull request.
scoop bucket add glazewm-config-editor https://github.com/eduardohilariodev/scoop-glazewm-config-editor
scoop install glazewm-config-editor
# Coming soon
winget install eduardohilariodev.GlazeWMConfigEditor
Download the latest installer from the
Releases page
and run it. Windows ships an NSIS .exe installer, an MSI package, and a
portable .zip (no installation required); use whichever fits your deployment.
macOS ships as a .dmg disk image.
Grab the glazewm-editor-<version>-x64-portable.zip asset from the
Releases page,
extract it anywhere, and run glazewm-editor.exe β no installation or admin rights needed.
Settings and state are stored in %APPDATA%\com.glazewm.editor.
%UserProfile%\.glzr\glazewm\config.yamlGlazeWM picks up changes the next time it reloads its configuration.
| Layer | Technology |
|---|---|
| Frontend | SvelteKit 2 Β· Svelte 5 Β· TypeScript 6 Β· Tailwind CSS v4 |
| Desktop runtime | Tauri 2 |
| Backend / native | Rust (stable) |
| Runtime / tasks | Deno v2+ |
| Package management | Deno + npm interop |
| CI | GitHub Actions |
| Tool | Minimum version | Install |
|---|---|---|
| Rust (stable) | rustup show |
rustup.rs |
| Deno | v2.0 | deno.com |
| Tauri v2 prerequisites | β | v2.tauri.app/start/prerequisites |
Windows: You also need the Visual C++ Build Tools and WebView2 (pre-installed on Windows 10/11).
# Install dependencies (including git hooks via Husky)
deno install --allow-scripts=npm:husky
deno task tauri dev # Run the desktop app in watch/dev mode
deno task tauri build # Produce a release bundle
deno task check # Type-check + lint the frontend
deno fmt # Format all source files
deno lint # Lint TypeScript/Svelte sources
Before pushing, also run the Rust checks:
cargo fmt --manifest-path src-tauri/Cargo.toml
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings
Or via VS Code: Terminal β Run Task (dev / build), or
Ctrl+Shift+B for build.
No automated test suite exists yet. Contributions that add tests are welcome.
*.test.ts / *.spec.ts files alongside components and run with deno task test (Vitest, once configured).#[test] blocks inside src-tauri/src/ and run with
cargo test --manifest-path src-tauri/Cargo.toml..
βββ src/ # SvelteKit frontend (TypeScript, Tailwind v4)
β βββ app/
β β βββ App.svelte # Root application component
β βββ features/ # Feature panels (one directory per tab)
β β βββ effects/ # Window effects editor
β β βββ gaps/ # Gap settings editor
β β βββ general/ # General settings editor
β β βββ keybindings/ # Keybinding editor with conflict detection
β β βββ layout/ # Layout settings editor
β β βββ raw-yaml/ # CodeMirror YAML editor
β β βββ rules/ # Window rule builder
β β βββ settings/ # App settings (language, live mode, β¦)
β β βββ workspaces/ # Workspace & monitor config
β βββ routes/
β β βββ +layout.svelte # Shell with menu bar and tab nav
β β βββ +page.svelte # Main editor page
β β βββ picker/ # Transparent window-picker overlay
β βββ shared/ # Cross-cutting utilities
β βββ i18n/ # Internationalisation (en, pt-BR, de, es, fr, it, zh)
β βββ store/ # Svelte stores (config state, UI state)
β βββ tauri/ # Typed wrappers around Tauri commands
β βββ types/ # Shared TypeScript types
β βββ ui/ # Reusable UI components
β βββ utils/ # Helper functions
β βββ yaml/ # YAML serialisation / deserialisation
βββ src-tauri/ # Rust backend (Tauri 2)
β βββ src/
β βββ commands/
β β βββ config.rs # read_config, write_config, default_config_path,
β β β # path_exists, validate_regex, reload_glazewm, get_mtime
β β βββ shell.rs # open_with_default, reveal_in_explorer
β β βββ window_picker.rs# start_window_pick
β βββ services/ # Business logic (config I/O, process, validation)
β βββ error.rs # Unified AppError type
β βββ lib.rs # Tauri builder & command registration
βββ static/ # Static assets served by SvelteKit
βββ scripts/ # Helper scripts
βββ deno.json # Deno tasks and compiler config
βββ package.json # Node-side dependencies
winget install eduardohilariodev.GlazeWMConfigEditor)Have a feature request? Open an issue.
Q: Does this modify GlazeWM itself?
No. The editor only reads and writes your config.yaml. GlazeWM must be
installed and running separately.
Q: Where is my config backed up?
A timestamped copy (e.g. config.yaml.2024-06-01T12-00-00.bak) is placed
in the same directory as your config file before every save.
Q: The app says my config is invalid β what do I do?
Open the file in a text editor and compare it against the
GlazeWM config documentation.
The inline validation messages in the editor indicate the exact field and
the expected value type.
Q: Why is macOS unsigned?
Code-signing for macOS requires an Apple Developer account ($99/yr). The
.dmg is safe to run; follow the Gatekeeper bypass instructions in the
Download section.
Q: Which GlazeWM versions are supported?
GlazeWM v3.x is fully supported. Older versions may work but are not
actively tested.
Q: Is there a portable (no-install) version?
Yes. Grab the glazewm-editor-<version>-x64-portable.zip asset from the
Releases page,
extract it, and run glazewm-editor.exe directly.
No installation or admin rights required.
Use Scoop for an equivalent no-UAC, auto-updating experience.
Contributions are welcome! Please read CONTRIBUTING.md before opening a pull request.
Key points:
main (git checkout -b feat/short-description); keep commits focused and follow Conventional Commits style (feat:, fix:, docs:, etc.).To report a vulnerability, follow the process in SECURITY.md.
Released under the MIT License.
phosphor-svelte) β icon set used throughout the UI.