A lightweight script that brings smart, automatic tiling to GlazeWM. It runs reliably in the background to create a more fluid and intuitive workflow. Set it up once and forget about it.
Unlike other tools, this is a pure Python script. No compiling, no unexpected dependencies—just a simple, reliable service.
If you find it useful, please consider giving the repository a star. 🌟🌟🌟
-
Smart Tiling: Analyzes the parent container's shape to make splits more predictable and intuitive, especially in complex layouts.
-
Rock-Solid Stability:
- Auto-Reconnect: Automatically reconnects if GlazeWM restarts.
- Doesn't Crash: Handles errors gracefully without crashing.
- Clean Shutdown: Shuts down cleanly, leaving no processes behind.
-
Lightweight & Unobtrusive:
- Pure Python: Easy to run and modify, with no heavy dependencies.
- Silent Operation: Runs invisibly in the background with no console window.
-
Optional Statistics:
- Measures Your Efficiency: Tracks how many manual tiling adjustments the script saves you over time.
- Local & Optional: This feature is purely local (no data is sent online) and can be easily disabled with the
--no-statsflag.
-
Copy the Python script (
.py) to your local machine.- Either rename the extension to
.pyw, - Or download the
.pywfile directly from this repository.
- Either rename the extension to
-
Follow the setup steps below.
-
Installed GlazeWM
Enable IPC in yourconfig.yamlYou only need to add these two lines between general: and gaps:
ipc: enabled: true
-
Python environment available
-
Recommended: use uv to create a virtual environment instead of using the global Python installation.
-
Inside the virtual environment, install the dependency:
pip install websockets
or with uv:
uv add websockets # add to pyproject.toml uv sync # install from lockfile
or
uv pip install websockets # install directly, without writing to pyproject.toml
-
-
Configure GlazeWM startup command
Add the following to
general.startup_commandsinconfig.yaml(replace with your actual paths):general: startup_commands: - 'shell-exec {absolute path to pythonw.exe} {path to your .pyw file}'
Example:
general: startup_commands: - 'shell-exec E:/VSCode_User_Code/glaze-wm-tools/.venv/Scripts/pythonw.exe E:/VSCode_User_Code/glaze-wm-tools/glaze_autotile.pyw'
If you want to disable the statistics function, you need to add a parameter after the command.
- 'shell-exec E:/VSCode_User_Code/glaze-wm-tools/.venv/Scripts/pythonw.exe E:/VSCode_User_Code/glaze-wm-tools/glaze_autotile.pyw --no-stats' -
About
pythonw.exeand.pywfilespythonw.exe: A “silent” Python interpreter that runs scripts without opening a console window. Perfect for background tasks..pywfile: Same as.py, but associated withpythonw.exeby default, so it runs quietly without showing a terminal window.
Some users may wonder why pythonw.exe isn’t bundled here. The reasons are:
- Size bloat – Python itself is large (tens of MB). Including
pythonw.exewould make the repository unnecessarily heavy. - Platform specific –
pythonw.exeonly works on Windows, while the repo should remain clean and cross-platform friendly. - Security concerns – Users generally hesitate to run arbitrary executables from GitHub repositories.
- Already included – Every official Python installation on Windows already provides
pythonw.exe.
👉 Instead of bundling executables, this project expects you to use a proper Python installation (or a virtual environment via uv), ensuring security and maintainability.
I share my configuration in my repository. If needed, you can share my configuration with an AI according to your requirements to have it fulfill your needs.