glazewm-config-editor Svelte Themes

Glazewm Config Editor

Visual editor for GlazeWM window manager config

GlazeWM Config Editor icon

GlazeWM Config Editor

A desktop GUI for editing GlazeWM YAML configuration files β€” no more hand-crafting YAML.

GitHub release Downloads CI License: MIT Platform

PRs welcome GitHub stars


πŸ“‹ Table of Contents


πŸ’‘ Why this editor?

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.


⬇️ Download

Download for Windows   Download portable for Windows   Download for macOS

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

✨ Features

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

πŸ“Έ Screenshots

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 in docs/screenshots/ and open a pull request.

General settings & gaps panel
Keybinding editor with conflict detection
Window rule builder
Raw YAML editor

πŸ“¦ Installation

scoop bucket add glazewm-config-editor https://github.com/eduardohilariodev/scoop-glazewm-config-editor
scoop install glazewm-config-editor

πŸͺŸ Winget

# Coming soon
winget install eduardohilariodev.GlazeWMConfigEditor

πŸ“₯ Manual

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.

πŸ’Ό Portable (Windows)

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.


πŸš€ Usage

  1. Launch GlazeWM Config Editor from the Start menu or Applications folder.
  2. Open your config file β€” the default path is:
    • Windows: %UserProfile%\.glzr\glazewm\config.yaml
  3. Edit settings through the UI; watch the YAML preview update as you go.
  4. Save. The previous file is backed up automatically next to the config.

GlazeWM picks up changes the next time it reloads its configuration.


πŸ› οΈ Tech Stack

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

πŸ§‘β€πŸ’» Development

πŸ“‹ Prerequisites

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).

βš™οΈ Setup

# Install dependencies (including git hooks via Husky)
deno install --allow-scripts=npm:husky

πŸ”§ Common tasks

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.

πŸ§ͺ Running tests

No automated test suite exists yet. Contributions that add tests are welcome.

  • Frontend: add *.test.ts / *.spec.ts files alongside components and run with deno task test (Vitest, once configured).
  • Rust: add #[test] blocks inside src-tauri/src/ and run with cargo test --manifest-path src-tauri/Cargo.toml.

πŸ—‚οΈ Project Structure

.
β”œβ”€β”€ 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

πŸ—ΊοΈ Roadmap

  • πŸͺŸ Winget publish (winget install eduardohilariodev.GlazeWMConfigEditor)
  • 🐧 Linux support (once GlazeWM supports Linux)
  • πŸ” Config diff viewer (before/after on save)
  • πŸ“ Multiple config profile support
  • πŸ§ͺ Automated test suite (Vitest + Rust unit tests)

Have a feature request? Open an issue.


❓ FAQ

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.


🀝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md before opening a pull request.

Key points:

  • Bugs β†’ open an issue with reproduction steps.
  • Features β†’ open an issue first to discuss before writing code.
  • PRs β†’ create a branch from main (git checkout -b feat/short-description); keep commits focused and follow Conventional Commits style (feat:, fix:, docs:, etc.).
  • No CLA is required.

πŸ”’ Security

To report a vulnerability, follow the process in SECURITY.md.


πŸ“„ License

Released under the MIT License.


πŸ™ Acknowledgements

  • GlazeWM β€” the tiling window manager this editor targets.
  • Tauri β€” the desktop application framework.
  • SvelteKit β€” the frontend framework.
  • Deno β€” runtime and task runner.
  • js-yaml β€” YAML parsing and serialisation.
  • CodeMirror 6 β€” raw YAML editor with one-dark theme.
  • Phosphor Icons (phosphor-svelte) β€” icon set used throughout the UI.
  • country-flag-icons β€” flag emoji in the language picker.

Top categories

Loading Svelte Themes