Abstract
One of the biggest gripes I have had with Windows is the lack of window management options. Secondary to this is the gripe that the operating system relies extremely heavily on the mouse, and while Windows does provide keyboard shortcuts for a lot of things, It isn’t quite as cohesive and straightforward as using one of the various tiling window managers for Linux and the BSDs, or even as nice as something like Yabai for MacOS. Recently though, I saw this video that piqued my interest (mostly the thumbnail) going over GlazeWM, a tiling window manager for Windows.
Getting Started
To get started with GlazeWM, simply choose one of the installation options on the README, I chose the winget option, however, it can also be installed via Chocolatey, Scoop, or by installing the release just like a normal Windows program.
I have not tested all of the install methods, but the winget installation also automatically installs Zebar as well as GlazeWM; according to the documentation the release install has a checkbox to install Zebar if desired. Zebar is a status bar, similar to something like i3blocks, bumblebee status, or slstatus, but for use with Windows. That’s basically it; we can run GlazeWM by simply running the ‘GlazeWM’ application. To have GlazeWM automatically start on sign in, create a shortcut for the application (can be done by right clicking and hitting ‘Create shortcut’); then placing that shortcut in the startup folder for your user. The easiest way to get to the startup folder is to type in shell:startup in the run menu (win+r), then hit enter. This should open a File Manager window, executable file or shortcut in that folder will start automatically upon login.
Actually using it should be fairly nice and familiar for anyone that uses tiling window managers on other systems. I’m not going to go over all of the various keyboard shortcuts, but there is a cheatsheet on their GitHub repo; additionally, if those key bindings don’t work for some reason, they are customizable in the config file.
Customizing GlazeWM
Changing customization options of Glaze is as simple as editing some YAML, the default config file is located at %USERPROFILE%.glzr.yaml. Custom locations can be specified using the –config flag or setting the GLAZEWM_CONFIG_PATH environment variables.
The default configuration is rather sane and comfortable, especially considering the starting point. I did, however, change some of the options, such as transparency and border color. Additionally, I changed the ‘launch terminal’ command to launch WSL instead, and rebound the default ‘launch terminal’ command to Alt+Shift+Enter, as the Windows command prompt is occasionally useful. From there, the big thing is adjusting to the new capabilities that the window manager provides.
Minor Annoyances
While the project, at least in my opinion, is leaps and bounds ahead of what the vanilla experience provides, there are some annoyances that I have with GlazeWM.
The chief one is that there is not a straightforward way to manage the numbered workspace when using multiple monitors. This issue is not one that would affect everyone, and I think it would not be particularly annoying with two monitors, however, I am using three monitors on my Windows machine which can make managing all of the workspaces a bit tricky because they are sequential with no obvious way to move one number to another monitor. There does appear to be a PR that might fix this issue though.
The other issue, which is only slightly annoying, is that I cannot maximize multiple windows at a time and have them stack on top of each other. This is quite a useful feature when I want to quickly switch between windows, but I need the entirety of the screen’s real-estate. Looking at my previous complaint, that is what the multiple monitors would be for. While that is accurate, this would be a more serious problem on a laptop with only one screen. The current way to support this is to minimize windows, which works but is slightly more cumbersome (at least in my opinion) than being able to stack the windows on top of each other.
The other annoyance that I have, which is extremely minor, is the lack of a “stacking” mode. Glaze has a mode for the Windows to float or to minimize windows as well as fullscreening a window, but does not have a stacking mode similar to i3, where only the active window is displayed, but is not necessarily “fullscreen”. While this feature sounds similar to fullscreen, it differs slightly in the fact of another window can be made to be the active window rather dynamically to easily swap between windows.
Closing Thoughts
Despite the minor criticisms I have of the projects current capabilities, I will certainly be trying to use it and follow the project as it improves. Glaze makes using Windows suck way less, and removes many of the complains that I had about using it in the first place. Replacing the terminal launcher with WSL almost makes me forget that I am using Windows. If you are a Windows user interested in tiling window managers, or a Linux/BSD user having to use Windows, I would recommend giving this project a try.