v2.0.0
It's been a long time coming, but a v2 release is finally ready and it's packed with new features and improvements 🎈
As always, come join the Discord server⚡ for news on GlazeWM or if you're interested in desktop customization in general.
Downloads for runnable .exe
files are attached below.
New features
- Restore hidden windows when the WM is killed unexpectedly (#360).
- Introduced a new "watcher" process, which restores all windows when the main process dies.
- Highlight the active window with a customizable border (thanks @HolbyFPV in #246). Docs
- Exclusively on Windows 11 due to the underlying API not being available on W10.
- Automatically focus windows underneath the cursor. Enabled via
general.focus_follows_cursor
(thanks @HolbyFPV in #245). - Cursor jumps to windows focused by the WM. Enabled via
general.cursor_follows_focus
(thanks @HolbyFPV in #247). - Introduce an IPC server and a CLI for querying GlazeWM's state and running WM commands (#350).
- Both the IPC server and CLI support the same commands. For instance:
# Get workspaces (alternatively send 'workspaces' to IPC server).
./GlazeWM.exe workspaces
# Run a WM command (alternatively send 'command "focus workspace 1"' to IPC server).
./GlazeWM.exe command "focus workspace 1"
- Create a JS/TS wrapper library for IPC with GlazeWM here. It's published on npm as
glazewm
. Example usage:
import { GwmClient } from "glazewm";
const client = new GwmClient();
const windows = await client.getWindows();
await client.runCommand("move left", windows[0]);
- Lots of new components for the bar:
- System tray component (thanks @HolbyFPV in #235). Docs
- WiFi/ETH stats component (thanks @HolbyFPV in #240). Docs
- CPU stats component (thanks @Sewer56 in #297). Docs
- GPU stats component (thanks @Sewer56 in #297). Docs
- Memory/RAM stats component (thanks @Sewer56 in #297). Docs
- Weather component (thanks @Sewer56 in #297). Docs
- Text file component (thanks @Sewer56 in #297). Docs
- Volume component (thanks @HolbyFPV, @AreamanM in #277, #241). Docs
- Image component (thanks @HolbyFPV in #323). Docs
- Further improvements to the bar include:
- Customizable border radius for components and the bar window itself (thanks @jovark in #265).
- Fully remove the bar via new
bar.disabled
option (thanks @Zinvoke in #260). - Show the bar above all other windows via new
bar.always_on_top
option (thanks @jayrfs in #341). - Support for mixing font family, font weight, font size, and foreground color within a label. This means that icons and text fonts can be used together in a label. To customize a part of the label, wrap it in an
<attr>
tag:
bar:
components_left:
- type: "cpu"
# Change font family (ie. ff) to Comic Sans for part of the label:
label: "<attr ff='Comic Sans'>CPU:</attr> {percent_usage}%"
- type: "battery"
# Show an icon by using an icon font:
label_draining: "<attr ff='Material Icons'></attr> {battery_level}%"
# Multiple attributes can be changed at once:
label_charging: "{battery_level}% <attr ff='Arial' fg='#228B22' fw='400' fs='13px'>(charging)</attr>"
- Add an equivalent to
workspace_auto_back_and_forth
from i3wm. The new optiongeneral.toggle_workspace_on_refocus
allows switching back and forth between the previously focused workspace when focusing the current workspace (thanks @s-v-o in #274). - Add new command for setting width/height of a window to a specific value. Example usage:
set height 30%
orset width 200px
(thanks @maxle5 in #268). - UWP windows now tile correctly (thanks @HolbyFPV in #257).
- Customize individual outer gaps, eg.
gaps.outer_gap: 10px 5px 10px 5px
(thanks @maxle5 in #282). - Floating windows can now be moved and resized. The amount of movement is controlled by
general.floating_window_move_amount
(thanks @Pamesta in #238). - Window transition animations can be disabled globally via
general.window_animations
. Ctrl
can be used instead ofControl
when defining keybindings (thanks @JK-Flip-Flop96 in #338).
Bug fixes
- Various improvements to stability and performance (@Zinvoke, @maxle5, @s-v-o, @groovyghoul).
- Fix issue where logs weren't showing up when debugging on Visual Studio and Rider.
What lies ahead?
The bar has been part of the WM since initial launch and it was mainly tacked on as a way to show what workspaces are active. But now it's a big part of the project and there's a lot of things that could've been done better. There's work in progress now to completely overhaul the bar and move it to its own repository. If you're a contributor, please hold off on large feature PRs for the bar in the meantime.
And also, the repo has been moved from my personal account (@lars-berger) to a GitHub org. @HolbyFPV (formerly @notblam) and I are teaming up on the MVP of the bar rework, and it made sense to house everything under one org. The bar overhaul will be open sourced in the coming months, and we've also got a future, unannounced project that's in the works (which will make the name "glazerdesktop" a bit clearer 👀).
Shoutout to our amazing contributors
A massive thanks to @HolbyFPV, @Sewer56, @maxle5, @s-v-o, @Zinvoke, @Pamesta, @AreamanM, @jayrfs, @jovark, @groovyghoul, and @JK-Flip-Flop96. It wouldn't have been possible without your fantastic support 🎉🙌
Quick heads up for contributors: there's been some changes to the repo's branching structure. Check #contributing on Discord for how to update your forks.