[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5474":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},5474,"glazewm","glzr-io\u002Fglazewm","glzr-io","GlazeWM is a tiling window manager for macOS and Windows inspired by i3wm.","",null,"Rust",12221,389,52,338,0,6,42,178,27,109.77,"GNU General Public License v3.0",false,"main",[26,27,28,29,30,31],"i3wm","macos","rust","tiling-window-manager","window-manager","windows","2026-06-12 04:00:25","\u003Cdiv align=\"center\">\n\n> V3 is finally out - check out the changelog [here](https:\u002F\u002Fgithub.com\u002Fglzr-io\u002FGlazeWM\u002Freleases) 🔥\n\n  \u003Cbr>\n  \u003Cimg src=\".\u002Fresources\u002Fassets\u002Flogo.svg\" width=\"230\" alt=\"GlazeWM logo\" \u002F>\n  \u003Cbr>\n\n# GlazeWM\n\n**A tiling window manager for Windows inspired by i3wm.**\n\n[![Discord invite][discord-badge]][discord-link]\n[![Downloads][downloads-badge]][downloads-link]\n[![Good first issues][issues-badge]][issues-link]\n\nGlazeWM lets you easily organize windows and adjust their layout on the fly by using keyboard-driven commands.\n\n[Installation](#installation) •\n[Default keybindings](#default-keybindings) •\n[Config documentation](#config-documentation) •\n[FAQ](#faq) •\n[Contributing ↗](https:\u002F\u002Fgithub.com\u002Fglzr-io\u002Fglazewm\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)\n\n![Demo video][demo-video]\n\n\u003C\u002Fdiv>\n\n### 🌟 Key features\n\n- Simple YAML configuration\n- Multi-monitor support\n- Customizable rules for specific windows\n- Easy one-click installation\n- Integration with [Zebar](https:\u002F\u002Fgithub.com\u002Fglzr-io\u002Fzebar) as a status bar\n\n## Installation\n\n**The latest version of GlazeWM is downloadable via [releases](https:\u002F\u002Fgithub.com\u002Fglzr-io\u002FGlazeWM\u002Freleases).** Zebar can optionally be installed as well via a checkbox during installation.\n\nGlazeWM is also available through several package managers:\n\n**Winget**\n\n```sh\nwinget install GlazeWM\n```\n\n**Chocolatey**\n\n```sh\nchoco install glazewm\n```\n\n**Scoop**\n\n```sh\nscoop bucket add extras\nscoop install extras\u002Fglazewm\n```\n\n## Contributing\n\nHelp fix something that annoys you, or add a feature you've been wanting for a long time! Contributions are very welcome.\n\nLocal development and guidelines are available in the [contributing guide](https:\u002F\u002Fgithub.com\u002Fglzr-io\u002Fglazewm\u002Fblob\u002Fmain\u002FCONTRIBUTING.md).\n\n## Default keybindings\n\nOn the first launch of GlazeWM, a default configuration can optionally be generated.\n\nBelow is a cheat sheet of all available commands and their default keybindings.\n\n![Infographic](\u002Fresources\u002Fassets\u002Fcheatsheet.png)\n\n## Config documentation\n\nThe [default config](https:\u002F\u002Fgithub.com\u002Fglzr-io\u002Fglazewm\u002Fblob\u002Fmain\u002Fresources\u002Fassets\u002Fsample-config.yaml) file is generated at `%userprofile%\\.glzr\\glazewm\\config.yaml`.\n\nTo use a different config file location, you can launch the GlazeWM executable with the CLI argument `--config=\"...\"`, like so:\n\n```sh\n.\u002Fglazewm.exe start --config=\"C:\\\u003CPATH_TO_CONFIG>\\config.yaml\"\n```\n\nOr pass a value for the `GLAZEWM_CONFIG_PATH` environment variable:\n\n```sh\nsetx GLAZEWM_CONFIG_PATH \"C:\\\u003CPATH_TO_CONFIG>\\config.yaml\"\n```\n\nWith the benefit of using a custom path being that you can choose a different name for the config file, such as `glazewm.yaml`.\n\n### Config: General\n\n```yaml\ngeneral:\n  # Commands to run when the WM has started (e.g. to run a script or launch\n  # another application).\n  startup_commands: []\n\n  # Commands to run just before the WM is shutdown.\n  shutdown_commands: []\n\n  # Commands to run after the WM config has reloaded.\n  config_reload_commands: []\n\n  # Whether to automatically focus windows underneath the cursor.\n  focus_follows_cursor: false\n\n  # Whether to switch back and forth between the previously focused\n  # workspace when focusing the current workspace.\n  toggle_workspace_on_refocus: false\n\n  cursor_jump:\n    # Whether to automatically move the cursor on the specified trigger.\n    enabled: true\n\n    # Trigger for cursor jump:\n    # - 'monitor_focus': Jump when focus changes between monitors.\n    # - 'window_focus': Jump when focus changes between windows.\n    trigger: \"monitor_focus\"\n```\n\n### Config: Keybindings\n\nThe available keyboard shortcuts can be customized via the `keybindings` option. A keybinding consists of one or more key combinations and one or more commands to run when pressed.\n\nIt's recommended to use the alt key for keybindings. The Windows key is unfortunately a pain to remap, since the OS reserves certain keybindings (e.g. `lwin+l`).\n\n```yaml\nkeybindings:\n  # Command(s) to run.\n  - commands: [\"focus --workspace 1\"]\n\n    # Key combination(s) to trigger the keybinding.\n    bindings: [\"alt+1\"]\n\n  # Multiple commands can be run in a sequence (e.g. to move a window to a\n  # workspace + focus workspace).\n  - commands: [\"move --workspace 1\", \"focus --workspace 1\"]\n    bindings: [\"alt+shift+1\"]\n```\n\n**Full list of keys that can be used for keybindings:**\n\n\u003Cdetails>\n\u003Csummary>Keys list\u003C\u002Fsummary>\n\n| Key                   | Description                                                               |\n| --------------------- | ------------------------------------------------------------------------- |\n| `a` - `z`             | Alphabetical letter keys                                                  |\n| `0` - `9`             | Number keys                                                               |\n| `numpad0` - `numpad9` | Numerical keypad keys                                                     |\n| `f1` - `f24`          | Function keys                                                             |\n| `shift`               | Either left or right SHIFT key                                            |\n| `lshift`              | The left SHIFT key                                                        |\n| `rshift`              | The right SHIFT key                                                       |\n| `control`             | Either left or right CTRL key                                             |\n| `lctrl`               | The left CTRL key                                                         |\n| `rctrl`               | The right CTRL key                                                        |\n| `alt`                 | Either left or right ALT key                                              |\n| `lalt`                | The left ALT key                                                          |\n| `ralt`                | The right ALT key                                                         |\n| `lwin`                | The left ⊞ Windows logo key                                               |\n| `rwin`                | The right ⊞ Windows logo key                                              |\n| `space`               | The spacebar key                                                          |\n| `escape`              | The ESCAPE key                                                            |\n| `back`                | The BACKSPACE key                                                         |\n| `tab`                 | The TAB key                                                               |\n| `enter`               | The ENTER key                                                             |\n| `left`                | The ← arrow key                                                           |\n| `right`               | The → arrow key                                                           |\n| `up`                  | The ↑ arrow key                                                           |\n| `down`                | The ↓ arrow key                                                           |\n| `num_lock`            | The NUM LOCK key                                                          |\n| `scroll_lock`         | The SCROLL LOCK key                                                       |\n| `caps_lock`           | The CAPS LOCK key                                                         |\n| `page_up`             | The PAGE UP key                                                           |\n| `page_down`           | The PAGE DOWN key                                                         |\n| `insert`              | The INSERT key                                                            |\n| `delete`              | The DELETE key                                                            |\n| `end`                 | The END key                                                               |\n| `home`                | The HOME key                                                              |\n| `print_screen`        | The PRINT SCREEN key                                                      |\n| `multiply`            | The `*` key (only on numpad)                                              |\n| `add`                 | The `+` key (only on numpad)                                              |\n| `subtract`            | The `-` key (only on numpad)                                              |\n| `decimal`             | The DEL key (only on numpad)                                              |\n| `divide`              | The `\u002F` key (only on numpad)                                              |\n| `volume_up`           | The volume up key                                                         |\n| `volume_down`         | The volume down key                                                       |\n| `volume_mute`         | The volume mute key                                                       |\n| `media_next_track`    | The media next track key                                                  |\n| `media_prev_track`    | The media prev track key                                                  |\n| `media_stop`          | The media stop key                                                        |\n| `media_play_pause`    | The media play\u002Fpause key                                                  |\n| `oem_semicolon`       | The `;`\u002F`:` key on a US standard keyboard (varies by keyboard)            |\n| `oem_question`        | The `\u002F`\u002F`?` key on a US standard keyboard (varies by keyboard)            |\n| `oem_tilde`           | The `` ` ``\u002F`~` key on a US standard keyboard (varies by keyboard)        |\n| `oem_open_brackets`   | The `[`\u002F`{` key on a US standard keyboard (varies by keyboard)            |\n| `oem_pipe`            | The `\\`\u002F`\\|` key on a US standard keyboard (varies by keyboard)           |\n| `oem_close_brackets`  | The `]`\u002F`}` key on a US standard keyboard (varies by keyboard)            |\n| `oem_quotes`          | The `'`\u002F`\"` key on a US standard keyboard (varies by keyboard)            |\n| `oem_8`               | The `` ` ``\u002F`¬` key on a UK keyboard (varies by keyboard)                 |\n| `oem_102`             | The `\\`\u002F`\\|` key next to left Shift on ISO keyboards (varies by keyboard) |\n| `oem_plus`            | The `=`\u002F`+` key on a US standard keyboard (varies by keyboard)            |\n| `oem_comma`           | The `,`\u002F`\u003C` key on a US standard keyboard (varies by keyboard)            |\n| `oem_minus`           | The `-`\u002F`_` key on a US standard keyboard (varies by keyboard)            |\n| `oem_period`          | The `.`\u002F`>` key on a US standard keyboard (varies by keyboard)            |\n| `muhenkan`            | The 無変換 (non-convert) key for Japanese keyboard layouts                |\n| `henkan`              | The 変換 (convert) key for Japanese keyboard layouts                      |\n\n\u003C\u002Fdetails>\n\nIf a key is not in the list above, it is likely still supported if you use its character in a keybinding (e.g. `alt+å` for the Norwegian Å character).\n\n> German and US international keyboards treat the right-side alt key differently. For these keyboard layouts, use `ralt+ctrl` instead of `ralt` to bind the right-side alt key.\n\n### Config: Gaps\n\nThe gaps between windows can be changed via the `gaps` property in the config file. Inner and outer gaps are set separately.\n\n```yaml\ngaps:\n  # Gap between adjacent windows.\n  inner_gap: \"20px\"\n\n  # Gap between windows and the screen edge.\n  outer_gap:\n    top: \"20px\"\n    right: \"20px\"\n    bottom: \"20px\"\n    left: \"20px\"\n```\n\n### Config: Workspaces\n\nWorkspaces need to be predefined via the `workspaces` property in the config file. A workspace is automatically assigned to each monitor on startup.\n\n```yaml\nworkspaces:\n  # This is the unique ID for the workspace. It's used in keybinding\n  # commands, and is also the label shown in 3rd-party apps (e.g. Zebar) if\n  # `display_name` is not provided.\n  - name: \"1\"\n\n    # Optional override for the workspace label used in 3rd-party apps.\n    # Does not need to be unique.\n    display_name: \"Work\"\n\n    # Optionally force the workspace on a specific monitor if it exists.\n    # 0 is your leftmost screen, 1 is the next one to the right, and so on.\n    bind_to_monitor: 0\n\n    # Optionally prevent workspace from being deactivated when empty.\n    keep_alive: false\n```\n\n### Config: Window rules\n\nCommands can be run when a window is first launched. This is useful for adding window-specific behaviors like always starting a window as fullscreen or assigning to a specific workspace.\n\nWindows can be targeted by their process, class, and title. Multiple matching criteria can be used together to target a window more precisely.\n\n```yaml\nwindow_rules:\n  - commands: [\"move --workspace 1\"]\n    match:\n      # Move browsers to workspace 1.\n      - window_process: { regex: \"msedge|brave|chrome\" }\n\n  - commands: [\"ignore\"]\n    match:\n      # Ignores any Zebar windows.\n      - window_process: { equals: \"zebar\" }\n\n      # Ignores picture-in-picture windows for browsers.\n      # Note that *both* the title and class must match for the rule to run.\n      - window_title: { regex: \"[Pp]icture.in.[Pp]icture\" }\n        window_class: { regex: \"Chrome_WidgetWin_1|MozillaDialogClass\" }\n```\n\n### Config: Window effects\n\nVisual effects can be applied to windows via the `window_effects` option. Currently, colored borders are the only effect available with more to come in the future.\n\n> Note: Window effects are exclusive to Windows 11.\n\n```yaml\nwindow_effects:\n  # Visual effects to apply to the focused window.\n  focused_window:\n    # Highlight the window with a colored border.\n    border:\n      enabled: true\n      color: \"#0000ff\"\n\n  # Visual effects to apply to non-focused windows.\n  other_windows:\n    border:\n      enabled: false\n      color: \"#d3d3d3\"\n```\n\n### Config: Window behavior\n\nThe `window_behavior` config option exists to customize the states that a window can be in (`tiling`, `floating`, `minimized`, and `fullscreen`).\n\n```yaml\nwindow_behavior:\n  # New windows are created in this state whenever possible.\n  # Allowed values: 'tiling', 'floating'.\n  initial_state: \"tiling\"\n\n  # Sets the default options for when a new window is created. This also\n  # changes the defaults for when the state change commands, like\n  # `set-floating`, are used without any flags.\n  state_defaults:\n    floating:\n      # Whether to center floating windows by default.\n      centered: true\n\n      # Whether to show floating windows as always on top.\n      shown_on_top: false\n\n    fullscreen:\n      # Maximize the window if possible. If the window doesn't have a\n      # maximize button, then it'll be made fullscreen normally instead.\n      maximized: false\n```\n\n### Config: Binding modes\n\nBinding modes are used to modify keybindings while GlazeWM is running.\n\nA binding mode can be enabled with `wm-enable-binding-mode --name \u003CNAME>` and disabled with `wm-disable-binding-mode --name \u003CNAME>`.\n\n```yaml\nbinding_modes:\n  # When enabled, the focused window can be resized via arrow keys or HJKL.\n  - name: \"resize\"\n    keybindings:\n      - commands: [\"resize --width -2%\"]\n        bindings: [\"h\", \"left\"]\n      - commands: [\"resize --width +2%\"]\n        bindings: [\"l\", \"right\"]\n      - commands: [\"resize --height +2%\"]\n        bindings: [\"k\", \"up\"]\n      - commands: [\"resize --height -2%\"]\n        bindings: [\"j\", \"down\"]\n      # Press enter\u002Fescape to return to default keybindings.\n      - commands: [\"wm-disable-binding-mode --name resize\"]\n        bindings: [\"escape\", \"enter\"]\n```\n\n## FAQ\n\n**Q: How do I run GlazeWM on startup?**\n\nRight-click the GlazeWM icon in the system tray and select \"Run on system startup\".\n\n**Q: How can I create `\u003Cinsert layout>`?**\n\nYou can create custom layouts by changing the tiling direction with `alt+v`. This changes where the next window is placed _in relation to the current window_. If the current window's direction is horizontal, the new window will be placed to the right of it. If it is vertical, it will be placed below it. This also applies when moving windows; the tiling direction of the stationary window will affect where the moved window will be placed.\n\nCommunity-made scripts like [Dutch-Raptor\u002FGAT-GWM](https:\u002F\u002Fgithub.com\u002FDutch-Raptor\u002FGAT-GWM) and [burgr033\u002FGlazeWM-autotiling-python](https:\u002F\u002Fgithub.com\u002Fburgr033\u002FGlazeWM-autotiling-python) can be used to automatically change the tiling direction. Native support for automatic layouts isn't _currently_ supported.\n\n**Q: How do I create a rule for `\u003Cinsert application>`?**\n\nTo match a specific application, you need a command to execute and either the window's process name, title, or class name. For example, if you use Flow-Launcher and want to make the settings window float, you can do the following:\n\n```yaml\nwindow_rules:\n  - commands: [\"set-floating\"]\n    match:\n      - window_process: { equals: \"Flow.Launcher\" }\n        window_title: { equals: \"Settings\" }\n```\n\nPrograms like Winlister or AutoHotkey's Window Spy can be useful for getting info about a window.\n\n**Q: How can I ignore GlazeWM's keybindings when `\u003Cinsert application>` is focused?**\n\nThis isn't currently supported, however, the keybinding `alt+shift+p` in the default config is used to disable all other keybindings until `alt+shift+p` is pressed again.\n\n[discord-badge]: https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1041662798196908052.svg?logo=discord&colorB=7289DA\n[discord-link]: https:\u002F\u002Fdiscord.gg\u002Fud6z3qjRvM\n[downloads-badge]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fglzr-io\u002Fglazewm\u002Ftotal?logo=github&logoColor=white\n[downloads-link]: https:\u002F\u002Fgithub.com\u002Fglzr-io\u002Fglazewm\u002Freleases\n[issues-badge]: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgood_first_issues-7057ff\n[issues-link]: https:\u002F\u002Fgithub.com\u002Forgs\u002Fglzr-io\u002Fprojects\u002F4\u002Fviews\u002F1?sliceBy%5Bvalue%5D=good+first+issue\n[demo-video]: resources\u002Fassets\u002Fdemo.webp\n","GlazeWM 是一个受 i3wm 启发的适用于 macOS 和 Windows 的平铺窗口管理器。它允许用户通过键盘快捷键轻松组织和调整窗口布局，支持多显示器，并提供简单的 YAML 配置文件来自定义特定窗口的行为规则。GlazeWM 采用 Rust 语言开发，具备良好的性能和稳定性。此外，它还可以与 Zebar 状态栏集成以增强用户体验。此项目特别适合需要高效管理和利用屏幕空间的开发者或高级用户使用。",2,"2026-06-11 03:03:32","top_language"]