Skip to content

Releases: glzr-io/glazewm

v2.0.2

22 Sep 15:56
9065555
Compare
Choose a tag to compare

Come join the Discord server⚡ for news on GlazeWM or if you're interested in desktop customization in general.

Bug fixes

  • Fix background color and padding not working in volume component.

v2.0.1

18 Sep 19:04
c6c57a0
Compare
Choose a tag to compare

Come join the Discord server⚡ for news on GlazeWM or if you're interested in desktop customization in general.

Bug fixes

  • Fix crash with window title component.
  • Fix regression where dragging a tiling window doesn't snap it back into place.

v2.0.0

17 Sep 19:15
6bac18b
Compare
Choose a tag to compare

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:
  • 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 option general.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% or set 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 of Control 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.

v1.11.1

06 Feb 16:06
1794416
Compare
Choose a tag to compare

⚡ Check out the Discord server

Downloads for runnable .exe files are attached below.

Changelog

  • Fix issue where the WM would occasionally crash with the message Object reference not set to an instance of an object.
  • Improve error logging by including a dump of the last few command invocations.

v1.11.0

28 Jan 07:26
9332bb8
Compare
Choose a tag to compare

⚡ Check out the Discord server

Downloads for runnable .exe files are attached below.

Changelog

  • Be able to specify multiple different bar styles (thanks to @notblam). For example, the below snippet lets you have a bar with a red background on monitor 1, and a green background on monitor 2. This can also be used to show different bar components across monitors.
bars:
  - &default_bar
    bind_to_monitor: 1 # The monitor's number as shown in the Windows display settings (eg. 1, 2, 3...).
    height: "30px"
    background: "red"
    
  - <<: *default_bar # Copy the properties above.
    bind_to_monitor: 2
    background: "green" # Override `background: "red"` with green.

<<: *default_bar is YAML syntax for copying all the properties from the block above labelled &default_bar. This means that height: "30px" is copied over to the 2nd bar, reducing the amount of repeated config.

  • Improvements to the bar:
    • Add a customizable separator between components in the bar (thanks to @AreamanM). Documentation on usage (see component_separator).
    • Be able to change the X and Y position of the bar from the edge of the workspace via new options offset_x and offset_y (thanks to @notblam).
    • Add a new bar component (type: "battery") for showing the battery status (thanks to @AreamanM). Documentation on usage.
    • Add a new bar component (type: "window title") for showing the title of the focused window (thanks to @notblam).
    • Be able to show calendar week via time_formatting option in the clock component (thanks to @s-v-o). Documentation on usage.
    • Be able to customize the text shown in the tiling direction component via new label_horizontal and label_vertical options (thanks to @jovark).
    • Fix issue where tiling direction component wasn't updating correctly (thanks to @notblam).
  • Add option to show floating windows above all tiling windows. This can be enabled from a new general section of the config:
general:
  # Whether to show floating windows as always on top.
  show_floating_on_top: false
  • Add new command (tiling direction toggle) for toggling between a horizontal/vertical tiling direction (thanks to @notblam). This is bound to Alt+V in the default config (replacing the separate keybindings for tiling direction <horizontal|vertical>).
  • Default to vertical tiling for workspaces on vertical monitors (thanks to @notblam).
  • Improvements to focus behavior on window close. This fixes the issue some were having with Flow Launcher.

There's been a lot of help from the community for this release. For the last 2 weeks, there's been a new PR almost every day, so thank you for the unreal amount of support lately ❤️

** There's been a number of changes to the default config file. The latest version of the default config can be viewed here. If you want to simply reset your config file with the default, you can delete your config file located at C:\Users\<YOUR_USER>\.glaze-wm\config.yaml and it'll be created on startup.

v1.10.0

19 Dec 15:52
Compare
Choose a tag to compare

⚡ Check out the Discord server

Downloads for runnable .exe files are attached below.

Changelog

  • Add binding modes. When a binding mode is active, only the keybindings defined for that binding mode are available (all other keybindings are disabled). Use binding mode <NAME> to activate a binding mode that has been defined in the new binding_modes section of the config. Use binding mode none to exit the binding mode and return to the default keybindings.
    • Added a binding mode to the default config for resizing windows via HJKL or arrow keys. This is bound to Alt+R in the default config.
  • Rename layout <horizontal | vertical> command to tiling direction <horizontal | vertical>. The old command naming will still work, but will eventually be removed.
  • Changes to the bar:
    • Improvements to the bar appearance in the default config.
    • Transparency can now be set for any color-related properties in the bar config by specifying an RGBA color (eg. background: #ffffff33 for white at 20% opacity).
    • Added a new bar component (type: "binding mode") for showing whether a binding mode is currently active.
    • Added a new bar component (type: "tiling direction") for showing the current tiling direction.
  • Fix crash when window rules are run after a window has been ignored.
  • Add new command set tiling for making a window tile (similar to set floating, set minimized, etc.). Can be useful for forcing a window to tile if it floats by default.
  • Changes to behavior of focus workspace recent command (thanks to @gtsherman). It will now switch back and forth between the last focused workspace, and should hopefully be more intuitive than before. It is also now mapped to Alt+Y by default instead of Alt+R.
  • Add winget installer (thanks to @afermar). After installing via winget install lars-berger.GlazeWM, GlazeWM can then launched by running glazewm in a terminal (it gets added to $PATH by Winget).
  • Add new command move workspace <DIRECTION> for moving the focused workspace to a monitor in the given direction (thanks to @kuznetsovvj). These are bound by default to Alt+<ASDF> (depending on the direction).

** There's been a number of changes to the default config file. The latest version of the default config can be viewed here. If you want to simply reset your config file with the default, you can delete your config file located at C:\Users\<YOUR_USER>\.glaze-wm\config.yaml and it'll be created on startup.

v1.9.0

14 Nov 15:29
Compare
Choose a tag to compare

There is now a Discord server for GlazeWM, feel free to join at discord.gg/ud6z3qjRvM 🎉

The server might be pretty dead to start out with, but at least it'll be a good way to get announcements when new releases come out.

Downloads for runnable .exe files are attached below.

Changelog

  • Fix issue where workspaces sometimes wouldn't hide properly.
  • Fix issue where windows could disappear if they were too thin when a new window is managed. Sibling windows are now resized proportionately when a new tiling window is managed.
  • Add new command "focus workspace <prev | next>" for focusing the next or previous workspaces defined in the workspaces config (thanks to @kuznetsovvj). This is bound to Alt+T / Alt+Shift+T in the new default config.
  • Add new command "focus workspace recent" for focusing the last focused workspace (thanks to @kuznetsovvj). This is bound to Alt+R in the new default config.
  • Show error message on invalid keybindings (thanks to @kuznetsovvj).

v1.8.1

24 Oct 06:42
abb8f2a
Compare
Choose a tag to compare

Downloads for runnable .exe files are attached below.

Changelog

  • Fix crash with keybindings and window rules which ran multiple commands and changed the window type (eg. ["set floating", "resize borders 0px -7px -7px -7px"]).
  • Fix issue where the WM would sometimes keep running after a fatal exception.

v1.8.0

13 Oct 09:00
Compare
Choose a tag to compare

Downloads for runnable .exe files are attached below.

Changelog

  • Fix issue where keybindings wouldn't fire if the desktop/bar was focused. Now keybindings will always fire unless a window that has explicitly been ignored (via ignore command) is focused.
  • Create new bar component for displaying text (thanks to @AgusArdizzone). Custom commands can optionally be run when the component is left/right-clicked.
bar:
  components_left:
    - type: "text"
      text: ""
      left_click_command: "exec cmd"
      right_click_command: "exec chrome"
  • Add button to reload config from system tray icon.
  • Allow ignore command to be run via keybindings. Previously the ignore command could only be used in window rules.
  • Fix inconsistencies when picking a window to focus after another window is closed, minimized, or moved out from the workspace.

v1.7.1

13 Sep 05:48
ecec72b
Compare
Choose a tag to compare

Downloads for runnable .exe files are attached below.

Changelog

  • Fix crash when an unmanageable window has focus on startup (regression in 1.7.0).
  • Add JSON dump of application state to error logs on crashes. This should help a lot when diagnosing cryptic errors in the future.