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: true # 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: 'window_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: '2px' # Gap between windows and the screen edge. outer_gap: top: '42px' right: '2px' bottom: '4px' left: '2px' 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: true # Allowed values: 'square', 'rounded', 'small_rounded'. style: 'small_rounded' # Change the transparency of the window. transparency: enabled: false # Can be something like '95%' or '0.95' for slightly transparent windows. # '0' or '0%' is fully transparent (and, by consequence, unfocusable). opacity: '95%' # Visual effects to apply to non-focused windows. other_windows: border: enabled: true color: '#a1a1a1' hide_title_bar: enabled: false corner_style: enabled: true style: 'small_rounded' transparency: enabled: true opacity: '85%' 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: true fullscreen: # Maximize the window if possible. If the window doesn't have a # maximize button, then it'll be fullscreen'ed normally instead. maximized: true # Whether to show fullscreen windows as always on top. shown_on_top: true 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: ['l', 'right'] - commands: ['resize --height +2%'] bindings: ['k', 'up'] - commands: ['resize --height -2%'] bindings: ['j', '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: ['alt+h', 'alt+left'] - commands: ['focus --direction right'] bindings: ['alt+l', 'alt+right'] - commands: ['focus --direction up'] bindings: ['alt+k', 'alt+up'] - commands: ['focus --direction down'] bindings: ['alt+j', 'alt+down'] # Move focused window in a given direction. - commands: ['move --direction left'] bindings: ['alt+ctrl+h', 'alt+ctrl+left'] - commands: ['move --direction right'] bindings: ['alt+ctrl+l', 'alt+ctrl+right'] - commands: ['move --direction up'] bindings: ['alt+ctrl+k', 'alt+ctrl+up'] - commands: ['move --direction down'] bindings: ['alt+ctrl+j', 'alt+ctrl+down'] # Resize focused window by a percentage or pixel amount. - commands: ['resize --width -2%'] bindings: ['alt+shift+h'] - commands: ['resize --width +2%'] bindings: ['alt+shift+l'] - commands: ['resize --height +2%'] bindings: ['alt+shift+k'] - commands: ['resize --height -2%'] bindings: ['alt+shift+j'] # 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: ['alt+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: ['alt+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+t'] # Change the focused window to be tiling. # - commands: ['toggle-tiling'] # bindings: ['alt+t'] # Change the focused window to be fullscreen. - commands: ['toggle-fullscreen'] bindings: ['alt+f'] # Minimize focused window. - commands: ['toggle-minimized'] bindings: ['alt+m'] # Close focused window. - commands: ['close'] bindings: ['alt+q'] # Kill GlazeWM process safely. - commands: ['wm-exit'] bindings: ['alt+m'] # 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 pwsh'] bindings: ['alt+enter'] - commands: ['shell-exec wt ubuntu'] bindings: ['alt+t'] - commands: ['shell-exec explorer.exe'] bindings: ['alt+e'] - commands: ['shell-exec steam.exe'] bindings: ['alt+shift+s'] # 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: ['alt+1'] - commands: ['focus --workspace 2'] bindings: ['alt+2'] - commands: ['focus --workspace 3'] bindings: ['alt+3'] - commands: ['focus --workspace 4'] bindings: ['alt+4'] - commands: ['focus --workspace 5'] bindings: ['alt+5'] - commands: ['focus --workspace 6'] bindings: ['alt+6'] - commands: ['focus --workspace 7'] bindings: ['alt+7'] - commands: ['focus --workspace 8'] bindings: ['alt+8'] - commands: ['focus --workspace 9'] bindings: ['alt+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: ['alt+shift+1'] - commands: ['move --workspace 2', 'focus --workspace 2'] bindings: ['alt+shift+2'] - commands: ['move --workspace 3', 'focus --workspace 3'] bindings: ['alt+shift+3'] - commands: ['move --workspace 4', 'focus --workspace 4'] bindings: ['alt+shift+4'] - commands: ['move --workspace 5', 'focus --workspace 5'] bindings: ['alt+shift+5'] - commands: ['move --workspace 6', 'focus --workspace 6'] bindings: ['alt+shift+6'] - commands: ['move --workspace 7', 'focus --workspace 7'] bindings: ['alt+shift+7'] - commands: ['move --workspace 8', 'focus --workspace 8'] bindings: ['alt+shift+8'] - commands: ['move --workspace 9', 'focus --workspace 9'] bindings: ['alt+shift+9']