# $DOTFILES/platforms/win/glzr/glazewm/config.yaml # Date: 2025-01-05 # Author: js0ny # Location: # - %UserProfile%\.glzr\glazewm\config.yaml # Linking: Link to whole directory # New-Item -ItemType SymbolicLink -Path $Env:UserProfile\.glzr -Target $DOTFILES\platforms\win\glzr -Force general: # Commands to run when the WM has started. This is useful for running a # script or launching another application. # Example: The below command launches Zebar. startup_commands: ["shell-exec zebar"] # Commands to run just before the WM is shutdown. # Example: The below command kills Zebar. shutdown_commands: ["shell-exec taskkill /IM zebar.exe /F"] # Commands to run after the WM config is reloaded. config_reload_commands: [] # Whether to automatically focus windows underneath the cursor. focus_follows_cursor: false # Whether to switch back and forth between the previously focused # workspace when focusing the current workspace. toggle_workspace_on_refocus: false cursor_jump: # Whether to automatically move the cursor on the specified trigger. enabled: true # Trigger for cursor jump: # - 'monitor_focus': Jump when focus changes between monitors. # - 'window_focus': Jump when focus changes between windows. trigger: "monitor_focus" # How windows should be hidden when switching workspaces. # - 'cloak': Recommended. Hides windows with no animation. # - 'hide': Legacy method (v3.5 and earlier) that has a brief animation, # but has stability issues with some apps. hide_method: "cloak" # Affects which windows get shown in the native Windows taskbar. Has no # effect if `hide_method: 'hide'`. # - 'true': Show all windows (regardless of workspace). # - 'false': Only show windows from the currently shown workspaces. show_all_in_taskbar: false gaps: # Whether to scale the gaps with the DPI of the monitor. scale_with_dpi: true # Gap between adjacent windows. inner_gap: "20px" # Gap between windows and the screen edge. outer_gap: top: "60px" right: "20px" bottom: "20px" left: "20px" window_effects: # Visual effects to apply to the focused window. focused_window: # Highlight the window with a colored border. # ** Exclusive to Windows 11 due to API limitations. border: enabled: true color: "#8dbcff" # Remove the title bar from the window's frame. Note that this can # cause rendering issues for some applications. hide_title_bar: enabled: false # Change the corner style of the window's frame. # ** Exclusive to Windows 11 due to API limitations. corner_style: enabled: false # Allowed values: 'square', 'rounded', 'small_rounded'. style: "square" # Visual effects to apply to non-focused windows. other_windows: border: enabled: true color: "#a1a1a1" hide_title_bar: enabled: false corner_style: enabled: false style: "square" window_behavior: # New windows are created in this state whenever possible. # Allowed values: 'tiling', 'floating'. initial_state: "tiling" # Sets the default options for when a new window is created. This also # changes the defaults for when the state change commands, like # `set-floating`, are used without any flags. state_defaults: floating: # Whether to center floating windows by default. centered: true # Whether to show floating windows as always on top. shown_on_top: false fullscreen: # Maximize the window if possible. If the window doesn't have a # maximize button, then it'll be fullscreen'ed normally instead. maximized: false # Whether to show fullscreen windows as always on top. shown_on_top: false workspaces: - name: "1" - name: "2" - name: "3" - name: "4" - name: "5" - name: "6" - name: "7" - name: "8" - name: "9" window_rules: - commands: ["ignore"] match: # Ignores any Zebar windows. - window_process: { equals: "zebar" } # Ignores picture-in-picture windows for browsers. - window_title: { regex: "[Pp]icture.in.[Pp]icture" } window_class: { regex: "Chrome_WidgetWin_1|MozillaDialogClass" } # Ignore rules for various 3rd-party apps. - window_process: { equals: "PowerToys" } window_class: { regex: 'HwndWrapper\[PowerToys\.PowerAccent.*?\]' } - window_process: { equals: "PowerToys" } window_title: { regex: ".*? - Peek" } - window_process: { equals: "Lively" } window_class: { regex: "HwndWrapper" } binding_modes: # When enabled, the focused window can be resized via arrow keys or HJKL. - name: "resize" keybindings: - commands: ["resize --width -2%"] bindings: ["h", "left"] - commands: ["resize --width +2%"] bindings: ["i", "right"] - commands: ["resize --height +2%"] bindings: ["e", "up"] - commands: ["resize --height -2%"] bindings: ["n", "down"] # Press enter/escape to return to default keybindings. - commands: ["wm-disable-binding-mode --name resize"] bindings: ["escape", "enter"] keybindings: # Shift focus in a given direction. - commands: ["focus --direction left"] bindings: ["lwin+h", "lwin+left"] - commands: ["focus --direction right"] bindings: ["lwin+i", "lwin+right"] - commands: ["focus --direction up"] bindings: ["lwin+e", "lwin+up"] - commands: ["focus --direction down"] bindings: ["lwin+n", "lwin+down"] # Move focused window in a given direction. - commands: ["move --direction left"] bindings: ["lwin+shift+h", "lwin+shift+left"] - commands: ["move --direction right"] bindings: ["lwin+shift+i", "lwin+shift+right"] - commands: ["move --direction up"] bindings: ["lwin+shift+e", "lwin+shift+up"] - commands: ["move --direction down"] bindings: ["lwin+shift+n", "lwin+shift+down"] # Resize focused window by a percentage or pixel amount. - commands: ["resize --width -2%"] bindings: ["alt+u"] - commands: ["resize --width +2%"] bindings: ["alt+p"] - commands: ["resize --height +2%"] bindings: ["alt+o"] - commands: ["resize --height -2%"] bindings: ["alt+i"] # As an alternative to the resize keybindings above, resize mode enables # resizing via arrow keys or HJKL. The binding mode is defined above with # the name 'resize'. - commands: ["wm-enable-binding-mode --name resize"] bindings: ["lwin+shift+r"] # Disables window management and all other keybindings until alt+shift+p # is pressed again. - commands: ["wm-toggle-pause"] bindings: ["alt+shift+p"] # Change tiling direction. This determines where new tiling windows will # be inserted. - commands: ["toggle-tiling-direction"] bindings: ["lwin+v"] # Change focus from tiling windows -> floating -> fullscreen. # - commands: ["wm-cycle-focus"] # bindings: ["alt+space"] # Change the focused window to be floating. - commands: ["toggle-floating --centered"] bindings: ["alt+shift+space"] # Change the focused window to be tiling. - commands: ["toggle-tiling"] bindings: ["lwin+t"] # Change the focused window to be fullscreen. - commands: ["toggle-fullscreen"] bindings: ["lwin+f"] # Minimize focused window. - commands: ["toggle-minimized"] bindings: ["lwin+m"] # Close focused window. - commands: ["close"] bindings: ["lwin+q"] # Kill GlazeWM process safely. - commands: ["wm-exit"] bindings: ["alt+shift+e"] # Re-evaluate configuration file. - commands: ["wm-reload-config"] bindings: ["alt+shift+r"] # Redraw all windows. - commands: ["wm-redraw"] bindings: ["alt+shift+w"] # Launch CMD terminal. Alternatively, use `shell-exec wt` or # `shell-exec %ProgramFiles%/Git/git-bash.exe` to start Windows # Terminal and Git Bash respectively. - commands: ["shell-exec wt"] bindings: ["lwin+r"] # Focus the next/previous active workspace defined in `workspaces` config. - commands: ["focus --next-active-workspace"] bindings: ["alt+s"] - commands: ["focus --prev-active-workspace"] bindings: ["alt+a"] # Focus the workspace that last had focus. - commands: ["focus --recent-workspace"] bindings: ["alt+d"] # Change focus to a workspace defined in `workspaces` config. - commands: ["focus --workspace 1"] bindings: ["lwin+1"] - commands: ["focus --workspace 2"] bindings: ["lwin+2"] - commands: ["focus --workspace 3"] bindings: ["lwin+3"] - commands: ["focus --workspace 4"] bindings: ["lwin+4"] - commands: ["focus --workspace 5"] bindings: ["lwin+5"] - commands: ["focus --workspace 6"] bindings: ["lwin+6"] - commands: ["focus --workspace 7"] bindings: ["lwin+7"] - commands: ["focus --workspace 8"] bindings: ["lwin+8"] - commands: ["focus --workspace 9"] bindings: ["lwin+9"] # Move the focused window's parent workspace to a monitor in a given # direction. - commands: ["move-workspace --direction left"] bindings: ["alt+shift+a"] - commands: ["move-workspace --direction right"] bindings: ["alt+shift+f"] - commands: ["move-workspace --direction up"] bindings: ["alt+shift+d"] - commands: ["move-workspace --direction down"] bindings: ["alt+shift+s"] # Move focused window to a workspace defined in `workspaces` config. - commands: ["move --workspace 1", "focus --workspace 1"] bindings: ["lwin+shift+1"] - commands: ["move --workspace 2", "focus --workspace 2"] bindings: ["lwin+shift+2"] - commands: ["move --workspace 3", "focus --workspace 3"] bindings: ["lwin+shift+3"] - commands: ["move --workspace 4", "focus --workspace 4"] bindings: ["lwin+shift+4"] - commands: ["move --workspace 5", "focus --workspace 5"] bindings: ["lwin+shift+5"] - commands: ["move --workspace 6", "focus --workspace 6"] bindings: ["lwin+shift+6"] - commands: ["move --workspace 7", "focus --workspace 7"] bindings: ["lwin+shift+7"] - commands: ["move --workspace 8", "focus --workspace 8"] bindings: ["lwin+shift+8"] - commands: ["move --workspace 9", "focus --workspace 9"] bindings: ["lwin+shift+9"]