Releases: glzr-io/glazewm
v3.9.1
🐛 Bug fixes
- Fixed error with
keep_alive
workspaces that were bound to a specific monitor (#1102). - Reverted rule for initializing
WS_POPUP
windows as floating (#1101). This was causing common apps like Steam, Telegram, and more to initialize as floating instead of tiling correctly.
🛠️️ Internal changes
- Updated
winget-releaser
in Winget release workflow (#1098).
Big thanks to @vikingnope for contributing to this release 💛
v3.9.0
🎉 New features
- Customizable outer gap for when a workspace has only one window (#933).
gaps: # Standard gap between windows and screen edges outer_gap: top: '60px' right: '20px' bottom: '20px' left: '20px' # Overrides `outer_gap` when there is just one window on a workspace. single_window_outer_gap: top: '80px' right: '15%' bottom: '40px' left: '15%'
keep_alive
workspaces now activate automatically on their bound monitor (#998).- The focus follows cursor feature (enabled via
general.focus_follows_cursor
) now also automatically changes focus between monitors (#959). - New targets added to
focus
andmove
commands (#990, #981, #985, #963).--next-active-workspace-on-monitor
- Target the next active workspace on the current monitor.--prev-active-workspace-on-monitor
- Target the previous active workspace on the current monitor.--workspace-in-direction <direction>
- Target the workspace in a given direction.--container-id <id>
- Target a specific container (window/workspace) by its ID (only forfocus
command).
- Added new filtering options to the
wm-cycle-focus
command (#964):--omit-floating
- Skip floating windows during focus cycling.--omit-tiling
- Skip tiled windows during focus cycling.
🐛 Bug fixes
- Fixed
channel closed
error and improved overall error handling (#1087). - Fixed
invalid window handle
error and improved checks for whether a window is manageable (#1083, #1091). - Added ignore rules for Microsoft 365 popups to sample config (#1051).
- Fixed a regression where focus events weren't being broadcast when focus was changed manually (#1047).
- Float windows by default if they have a
WS_POPUP
style (#941). - Improved reliability of window z-order updates (#1090).
📘 Docs improvements
- Added Chocolatey and Scoop installation instructions to README (#961).
- Updated README with maintained GLA-ALT fork reference (#1024) and current project board link (#1035).
🛠️️ Internal changes
- Clippy fixes for latest nightly builds (#1088, #967) and updated cargo dependencies (#1089).
- Added VSCode settings file for code formatting (#962).
🌟 Zebar v3 launch
I'm excited to announce that Zebar v3 is now officially available! Zebar, our companion app for top bars and desktop widgets, has received a massive update with marketplace support, system tray integration, and other big improvements. Full details here
The new Zebar version is optionally available via the standard GlazeWM installer below.
🏠 New homepage
A new homepage is now live at glzr.io! It's pretty bare bones at the moment, but sometime soon it'll be the home for docs for GlazeWM and Zebar.
Big thanks to @Miitto, @themegaxandy, @wrapperup, @dillontkh, @HolbyFPV, @jsfr, @dinesh-58, @jackssrt, @Im-shamo, and @ChichiMsdk for contributing to this release 💛
v3.8.1
🐛 Bug fixes
- Crash when logging window titles with non-English characters (#947).
- Ensure COM interfaces are cleaned up on shutdown (#948).
- Running
glazewm
CLI command without arguments causes recursive self-launching (#949).
Thanks for all the help with diagnosing the issues above - especially @Video-Nomad!
v3.8.0
🎉 New features
window_effects:
focused_window:
# Add the following to the config file:
transparency:
enabled: true
opacity: "90%"
transparency.mp4
- Bring windows of the same state to the top of z-order (#923).
show-on-top.mp4
- Fullscreen now consistently overlaps the Windows taskbar (#940 - fixes #881, #732).
- Improve handling of missing fields in config file (#926 - fixes #900).
🐛 Bug fixes
- Fix CLI not working. It's also possible to call
glazewm
as a shell command now (e.g. via AutoHotKey as shown below) (#908 - fixes #861, #902).
; Working commands in AHK! e.g. bind alt+h to focus left:
!h::{
Run "glazewm command focus --direction left", , "Hide"
}
- Fixes to pause state - prevent commands from still being run while paused (#889, #927 - fixes #882, #913).
- Several fixes to focus-related issues (#929, #930, #931, #932).
📘 Docs improvements
- New contributing guide! (#916, #917)
🛠️️ Internal changes
- Add clippy lint check on opened PR's and fix all the current 200+ warnings (#910, #915).
- Several large changes to the codebase structure, see details here (#908, #928, #924).
- Updated to newer winget release workflow (#921).
Big thanks to @vikingnope, @jackssrt, and @michidk for contributing to this release 💛
/ @lars-berger,
v3.7.0
🎉 New features
- Add new
wm-toggle-pause
command for fully pausing the WM (#828, #870).- Replaced the
alt+shift+p
keybinding in the default config with this new command.
- Replaced the
- Configure whether to show all windows in the native Windows taskbar (#873, resolves #848).
- The previous release changed windows to be hidden/shown via a new method called cloaking. Cloaking causes all windows to be shown in the taskbar, which is now configurable with
general.show_all_in_taskbar
.
- The previous release changed windows to be hidden/shown via a new method called cloaking. Cloaking causes all windows to be shown in the taskbar, which is now configurable with
- Improve
--centered
flag behavior forset-floating
andtoggle-floating
(#842). - Revert
alt+s
andalt+a
in the default config to switch focus between prev/next active workspace (#865).
🐛 Bug fixes
- Restore to previous tiling size from minimized/fullscreen (#876, fixes #506 #782).
move-workspace
moves cursor ifcursor_jump
is enabled (#874, fixes #859).- Fix
focus_follows_cursor
on touchpads (#875, fixes #799). - Prevent moving tiling windows with mouse from affecting hidden workspaces (#877, fixes #829).
- Fix path delimiters to CLI directory in PATH env variable (#872).
Big thanks to @DreamMaoMao and @michidk for contributing to this release 💛
v3.6.0
🦀 New method of switching between workspaces (#792)
We've implemented "cloaking" as the new default method for hiding/showing windows during workspace switches. This brings a few big improvements:
- Instant transitions when switching between workspaces.
- Better stability and compatibility with third-party apps (resolving issues like #250).
- Consistency in which windows are shown in the taskbar.
Note: With cloaking enabled, windows from all workspaces appear in the Windows taskbar. The new method should hopefully feel much nicer, but the legacy method remains available via general.hide_method
set to hide
.
🎉 Other new features
- New
--hide-window
flag forshell-exec
to run commands in background (#819).- Makes it possible to run scripts without any terminal popup windows.
- Add new
position --x-pos <POS> --y-pos <POS>
command for repositioning floating windows (#817).- e.g.
position --x-pos 0 --y-pos 0
.
- e.g.
- Size and position can now be set with the
set-floating
command (#817)- e.g.
set-floating --x-pos 0 --y-pos 0 --width 500px --height 500px
.
- e.g.
- Smoother restore from maximize into tiling/floating position (#852).
🐛 Bug fixes
- Fix regression from v3.4.0 where some taskbar positions cause incorrect working area (#850, fixes #790).
- Persist window animations setting across restarts (#832, fixes #651).
- Prevent window flicker when toggling between fullscreen states (#851, fixes #640).
- Set focus to valid desktop window in an empty workspace (#821).
🛠️️ Internal changes
- Change cargo lib and bin path to enable build on WSL (#827).
- Linting fixes and working doctests (#834, #831).
Big thanks to @rpop0, @DreamMaoMao, @Miitto, @veryard, @Dovias and @michidk for contributing to this release 💛
v3.5.0
In case anyone missed it from the last release:
Zebar update & startup change
- Zebar, which can optionally be installed through the standard installer below, has officially been updated to V2 ⚡For full details, check out the V2 release notes.
- This new version is now included in the standard GlazeWM installer.
- Existing installs can be updated by leaving "Install Zebar" checked.
- Zebar start script has been removed - update your existing GlazeWM config (
%userprofile%/.glzr/glazewm/config.yaml
) as follows:
- startup_commands: ['shell-exec %userprofile%/.glzr/zebar/start.bat']
+ startup_commands: ['shell-exec zebar']
🎉 New features
- Add
not_equals
andnot_regex
window rule match types (#798). - Destroy empty workspaces when a window was killed while its workspace was not displayed (e.g. via task manager) (#801).
- Change
focus --next-workspace
andfocus --prev-workspace
to focus by config order (#783).- Add new
focus —next-active-workspace
andfocus —prev-active-workspace
commands with the old behavior offocus --next-workspace
andfocus --prev-workspace
.
- Add new
🐛 Bug fixes
- Prevent focus requests from being lost from windows on inactive workspaces (#797).
📘 Docs improvements
- Fix link to "Config documentation" heading in readme (#811).
Big thanks to @DreamMaoMao, @RiceaRaul, and @azarmadr for contributing to this release 💛
v3.4.0
In case anyone missed it from the last release:
Zebar update & startup change
- Zebar, which can optionally be installed through the standard installer below, has officially been updated to V2 ⚡For full details, check out the V2 release notes.
- This new version is now included in the standard GlazeWM installer.
- Existing installs can be updated by leaving "Install Zebar" checked.
- Zebar start script has been removed - update your existing GlazeWM config (
%userprofile%/.glzr/glazewm/config.yaml
) as follows:
- startup_commands: ['shell-exec %userprofile%/.glzr/zebar/start.bat']
+ startup_commands: ['shell-exec zebar']
🎉 New features
- Scale inner and outer gaps by monitor DPI (#756, #768).
- Add new
gaps.scale_with_dpi
option to toggle whether gaps should be scaled. This is enabled by default - no config changes necessary.
- Add new
- Add new
scaleFactor
property to monitors in IPC responses. Fixdpi
property not returning a valid DPI (#769).
🐛 Bug fixes
- Fix focus commands not working with
focus_follows_cursor: true
(#767). - Fix not being able to disable cursor jump (#763).
- Add window rule to sample config for floating PowerToys Peek (#757).
🛠️️ Internal changes
- Fix regex for detecting latest version in Winget release workflow (#758).
Big thanks to @JonasWischeropp, @vikingnope, and @lars-berger for contributing to this release 💛
v3.3.0
In case anyone missed it from the last release:
Zebar update & startup change
- Zebar, which can optionally be installed through the standard installer below, has officially been updated to V2 ⚡For full details, check out the V2 release notes.
- This new version is now included in the standard GlazeWM installer.
- Existing installs can be updated by leaving "Install Zebar" checked.
- Zebar start script has been removed - update your existing GlazeWM config (
%userprofile%/.glzr/glazewm/config.yaml
) as follows:
- startup_commands: ['shell-exec %userprofile%/.glzr/zebar/start.bat']
+ startup_commands: ['shell-exec zebar']
🎉 New features
- Add window effects for hiding the title bar and changing corner style (#735).
- Configurable via
window_effects.hide_title_bar
andwindow_effects.corner_style
. - Add to sample config.
- Configurable via
🐛 Bug fixes
- Fix issue where focus was sometimes not being changed (#749, #754).
- Remove input simulation to other processes.
- Fix window border effect flickering (#752).
- Redraw affected workspaces after
move-workspace --direction <DIRECTION>
(#755).
🛠️️ Internal changes
- Fix Winget release workflow (#748).
Big thanks to @JonasWischeropp, @vikingnope, and @lars-berger for contributing to this release 💛
v3.2.0
Zebar update & startup change
- Zebar, which can optionally be installed through the standard installer below, has officially been updated to V2 ⚡For full details, check out the V2 release notes.
- This new version is now included in the standard GlazeWM installer.
- Existing installs can be updated by leaving "Install Zebar" checked.
- Zebar start script has been removed - update your existing GlazeWM config (
%userprofile%/.glzr/glazewm/config.yaml
) as follows:
- startup_commands: ['shell-exec %userprofile%/.glzr/zebar/start.bat']
+ startup_commands: ['shell-exec zebar']
🎉 New features
- Winget support is back (thanks @Dragon1573) via
winget install glzr-io.glazewm
. - Add
set-tiling-direction <vertical|horizontal>
command (#702). - Add
focus --monitor <MONITOR_INDEX>
command (#683). - Add new config options
general.shutdown_commands
andgeneral.reload_commands
(#713).- Also update the sample config to kill Zebar when the WM is shut down.
- Add support for using env variable
GLAZEWM_CONFIG_PATH
for config path (#696). - Improve how tiling windows are moved when dragged via mouse (#673).
- Change focus between windows without simulating a keypress (#672).
- Prevents Start Menu from popping up when using
lwin
in keybindings. - Also fixes #674.
- Prevents Start Menu from popping up when using
🐛 Bug fixes
- Jump to correct monitor when cursor jump is configured to
trigger: 'monitor_focus'
(#744). - Ensure windows aren't unmanaged when moved to workspace (#727).
- Fix regression causing certain windows to not be managed (#726).
- Ignore display change messages when resuming from sleep (#740).
- Sometimes caused workspaces to get swapped between monitors.
- Ignore focus events from windows that aren't the foreground window (#725).
- Remove any empty workspaces after
move-workspace
command (#743). - Update ignore rule in sample config for Powertoys Quick Accent (#745).
Big thanks to @JonasWischeropp, @nikitarevenco, @MoaidHathot, @hiszd, @tmsagarofficial, @LucaCoduriV, @AmineDjeghri, @Dragon1573, and @lars-berger for contributing to this release 💛