[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6678":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":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},6678,"Amethyst","ianyh\u002FAmethyst","ianyh","Automatic tiling window manager for macOS à la xmonad.","https:\u002F\u002Fianyh.com\u002Famethyst\u002F",null,"Swift",16156,517,105,273,0,3,12,41,14,43.14,"MIT License",false,"development",true,[27,28,29,30],"mac","macos","window-manager","xmonad","2026-06-12 02:01:28","# Amethyst\n\n[![Discussions](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdiscussions\u002Fianyh\u002FAmethyst)](https:\u002F\u002Fgithub.com\u002Fianyh\u002FAmethyst\u002Fdiscussions)\n[![Open Source Helpers](https:\u002F\u002Fwww.codetriage.com\u002Fianyh\u002Famethyst\u002Fbadges\u002Fusers.svg)](https:\u002F\u002Fwww.codetriage.com\u002Fianyh\u002Famethyst)\n[![Reviewed by Hound](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReviewed_by-Hound-8E64B0.svg)](https:\u002F\u002Fhoundci.com)\n\nTiling window manager for macOS along the lines of [xmonad](https:\u002F\u002Fxmonad.org\u002F).\n\n![Windows](https:\u002F\u002Fianyh.com\u002Famethyst\u002Fimages\u002Fwindows.png)\n\nIf you want to learn more about tiling window managers and the features of Amethyst there are some great community resources on YouTube.\n\n[Boost your MacOS PRODUCTIVITY with Amethyst | Tiling Window Manager](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=7Z9-Ry4yGNc)\n\n## Getting Amethyst\n\nAmethyst is available for direct download on the [releases page](https:\u002F\u002Fgithub.com\u002Fianyh\u002FAmethyst\u002Freleases) or using [homebrew cask](https:\u002F\u002Fgithub.com\u002FHomebrew\u002Fhomebrew-cask).\n\n```\nbrew install --cask amethyst\n```\n\nNote: that Amethyst now is only supported on macOS 10.15+.\n\n## Using Amethyst\n\nAmethyst must be given permissions to use the accessibility APIs in the Privacy & Security tab, Privacy -> Accessibilty.\n\n\u003Cp align=\"center\">\n  \u003Cimg style=\"text-align: center; border-radius:4px;\" width=\"500px\" src=\"docs\u002Fimages\u002Faccessibility-permission.png\" alt=\"Give Accessibility permission to Amethyst under Privicay and Security.\" \u002F>\n\u003C\u002Fp>\n\n**_Important note_**: You will probably want to disable `Automatically rearrange Spaces based on most recent use` (found under Mission Control in System Preferences). This setting is enabled by default, and will cause your Spaces to swap places based on use. This makes keyboard navigation between Spaces unpredictable.\n\n\u003Cp align=\"center\">\n  \u003Cimg style=\"text-align: center\" width=\"500px\" src=\"docs\u002Fimages\u002Fauto-rearranage.png\" \u002F>\n\u003C\u002Fp>\n\nor run in a terminal:\n```bash\ndefaults write com.apple.dock workspaces-auto-swoosh -bool NO\nkillall Dock\n```\n\n## Troubleshooting\n\nSee [Troubleshooting](docs\u002Ftroubleshooting.md) for some common issues.\n\n## Configuration\n\n### Keyboard Shortcuts\n\nAmethyst uses two modifier combinations (`mod1` and `mod2`) and can optionally use another two (`mod3` and `mod4`).\n\n| Default Shortcut | Description |\n|---|---|\n| `mod1` | `option + shift` |\n| `mod2` | `ctrl + option + shift` |\n| `mod3` | not defined by default |\n| `mod4` | not defined by default |\n\nAnd defines the following commands, mostly a mapping to xmonad key combinations.\n\n| Default Shortcut | Description |\n|---|---|\n| `mod1 + space` | Cycle layout forward |\n| `mod2 + space` | Cycle layout backwards |\n| `mod1 + h` | Shrink the main pane |\n| `mod1 + l` | Expand the main pane |\n| `mod1 + ,` | Increase main pane count |\n| `mod1 + .` | Decrease main pane count |\n| `mod1 + j` | Move focus counter clockwise |\n| `mod1 + k` | Move focus clockwise |\n| `mod1 + p` | Move focus to counter clockwise screen |\n| `mod1 + n` | Move focus to clockwise screen |\n| `mod2 + h` | Swap focused window to counter clockwise screen |\n| `mod2 + l` | Swap focused window to clockwise screen |\n| `mod2 + j` | Swap focused window counter clockwise |\n| `mod2 + k` | Swap focused window clockwise |\n| `mod1 + enter` | Swap focused window with main window |\n| `mod1 + z` | Force windows to be reevaluated |\n| `mod2 + z` | Relaunch Amethyst |\n| `mod2 + left` | Throw focused window to space left |\n| `mod2 + right` | Throw focused window to space right |\n| `mod2 + 1` | Throw focused window to space 1 |\n| `mod2 + 2` | Throw focused window to space 2 |\n| `mod2 + 3` | Throw focused window to space 3 |\n| `mod2 + 4` | Throw focused window to space 4 |\n| `mod2 + 5` | Throw focused window to space 5 |\n| `mod2 + 6` | Throw focused window to space 6 |\n| `mod2 + 7` | Throw focused window to space 7 |\n| `mod2 + 8` | Throw focused window to space 8 |\n| `mod2 + 9` | Throw focused window to space 9 |\n| `mod2 + 0` | Throw focused window to space 10 |\n| `none`     | Throw focused window to space 11 |\n| `none`     | Throw focused window to space 12 |\n| `none`     | Throw focused window to space 13 |\n| `none`     | Throw focused window to space 14 |\n| `none`     | Throw focused window to space 15 |\n| `none`     | Throw focused window to space 16 |\n| `mod1 + w` | Focus Screen 1 |\n| `mod2 + w` | Throw focused window to screen 1 |\n| `mod1 + e` | Focus Screen 2 |\n| `mod2 + e` | Throw focused window to screen 2 |\n| `mod1 + r` | Focus Screen 3 |\n| `mod2 + r` | Throw focused window to screen 3 |\n| `mod1 + q` | Focus Screen 4 |\n| `mod2 + q` | Throw focused window to screen 4 |\n| `mod1 + g` | Focus Screen 5 |\n| `mod2 + g` | Throw focused window to screen 5 |\n| `mod1 + t` | Toggle float for focused window |\n| `mod1 + i` | Display current layout |\n| `mod2 + t` | Toggle global tiling |\n| `mod1 + a` | Select tall layout |\n| `none` | Select tall-right layout |\n| `mod1 + s` | Select wide layout |\n| `none` | Select middle-wide layout |\n| `mod1 + d` | Select fullscreen layout |\n| `mod1 + f` | Select column layout |\n| `none` | Select row layout |\n| `none` | Select floating layout |\n| `none` | Select widescreen-tall layout |\n| `none` | Select bsp layout |\n\n### Available Layouts\n\nAmethyst allows you to cycle among several different window layouts.\nLayouts can also be enabled\u002Fdisabled to control whether they appear in the cycle sequence at all.\n\n#### Tall\n\nThe default layout. This gives you one \"main pane\" on the left, and one other pane on the right. By default, one window is placed in the main pane (extending the full height of the screen), and all remaining windows are placed in the other pane. If either pane has more than one window, that pane will be evenly split into rows, to show them all. You can use the keyboard shortcuts above to control which window(s), and how many, are in the main pane, as well as the horizontal size of the main pane vs. the other pane.\n\n#### Tall-Right\n\nExactly the same as *Tall*, but the main pane is on the right, with the other pane on the left.\n\n#### Wide\n\nThe rotated version of *Tall*, where the main pane is on the _top_ (extending the full width of the screen), and the other pane is on the bottom. If either pane has more than one window, that pane will split into columns instead of rows.\n\n#### Two Pane\n\nThis layout has two visible panes - the main and the secondary pane. The window\nin the main pane is pinned, just like in other layouts, and all the remaining\nwindows are placed in the other pane with only one window being visible at a\ntime, which can be swapped (using the keyboard shortcuts). This layout\nautomatically adapts to horizontal\u002Fvertical tiling depending on your screen\norientation. The main pane is on the left in the horizontal orientation and it's\non the top in the vertical orientation.\n\n#### Two Pane Right\n\nExactly the same as *Two Pane*, but the main pane is on the right, with the other pane on the left.\n\n#### 3Column-Left\n\nA three-column version of *Tall*, with one main pane on the left (extending the full height of the screen) and two other panes, one in the middle and one on the right. Like *Tall*, if any pane has more than one window, that pane will be split into rows. You can control how many windows are in the main pane as usual; other windows will be assigned as evenly as possible between the other two panes.\n\n#### 3Column-Middle\n\nExactly like *3Column-Left*, but the main pane is in the middle, with the other panes on either side. (In previous versions of Amethyst, this layout was known as *Middle-Wide*.)\n\n#### 3Column-Right\n\nExactly like *3Column-Left*, but the main pane is on the right, with the other panes in the middle and on the left.\n\n#### Widescreen-Tall\n\n This mode is like *Tall*, but if there are multiple windows in the main pane,\n the main pane splits into columns rather than rows.\n The other pane still splits windows into rows, like *Tall*.\n This layout gets its name because it probably makes the most sense on very\n wide screens, with a large main pane consisting of several columns, and all\n remaining windows stacked into the final column.\n Other layouts that work well on very wide screens include any that allow for\n more than two columns (to take advantage of the screen width), such as\n any of the *3Column-&ast;* layouts, or *Column*.\n\n#### Fullscreen\n\nIn this layout, the currently focused window takes up the entire screen, and the other windows are not visible at all. You can rotate between each of the windows using the \"focus the next window\" shortcut, as usual.\n\n#### Column\n\nThis layout has one column per window, with each window extending the full height of the screen. The farthest-left window is considered the \"main\" window in the sense that you can change its size with the \"shrink\u002Fexpand the main pane\" shortcuts; the other windows split the remaining space evenly.\n\n#### Row\n\nThe rotated version of *Column*, where each window takes up an entire row, extending the full width of the screen.\n\n#### Floating\n\nThis mode makes all windows \"floating\", allowing you to move and resize them as if Amethyst were temporarily deactivated. Unlike the other modes, this will mean that windows can be placed \"on top of\" each other, obscuring your view of some windows.\n\n#### Binary Space Partitioning (BSP)\n\nThis layout does not have a main pane in the way that other layouts do. When adding windows, any given pane can be split evenly into two panes along whatever axis is longer. This is recursive such that pane A can be split in the middle into pane A on the left and pane B on the right; pane B can then be split into pane B on top and pane C on bottom; pane C can then be split into pane C on the left and pane D on the right; and so on.\n\n#### Custom (beta)\n\nCustom layouts can be implemented via JavaScript. See [Custom Layouts](docs\u002Fcustom-layouts.md).\n\n### Configuration File\n\nAmethyst supports configuration via YAML in the home directory. See [Configuration Files](docs\u002Fconfiguration-files.md). Note that if configuration file is present, it will override the settings defined via the GUI.\n\n## Building Amethyst Locally\n\nIf you would like to test your changes locally, Amethyst can be built using [`fastlane`](https:\u002F\u002Fgithub.com\u002Ffastlane\u002Ffastlane). Just run the command `fastlane` in the root folder, and the app will be available at `.\u002Fbuild\u002FAmethyst.app`. (You may need to provision the app under \"Signing & Capabilities\" in XCode first.)\n\n## Contributing\n\nIf you'd like to contribute please branch off of the `development` branch and open pull requests against it rather than `master`. Otherwise just try to stick to the general style of the code.\n\n## Donating\n\nAmethyst is free and always will be. That said, a couple of people have expressed their desire to donate money in appreciation. Given the current political climate I would recommend donating to one of these organizations instead:\n\n* [American Civil Liberties Union](https:\u002F\u002Fwww.aclu.org\u002F)\n* [Planned Parenthood](https:\u002F\u002Fwww.plannedparenthood.org\u002F)\n* [Southern Poverty Law Center](https:\u002F\u002Fwww.splcenter.org\u002F)\n* [National Resources Defense Council](https:\u002F\u002Fwww.nrdc.org\u002F)\n* [International Refugee Assistance Project](https:\u002F\u002Frefugeerights.org\u002F)\n* [NAACP Legal Defense Fund](https:\u002F\u002Fwww.naacpldf.org\u002F)\n* [The Trevor Project](https:\u002F\u002Fwww.thetrevorproject.org\u002F)\n* [Mexican American Legal Defense Fund](https:\u002F\u002Fwww.maldef.org\u002F)\n* [ProPublica](https:\u002F\u002Fwww.propublica.org\u002F)\n\nAnd a bunch of technology-oriented ones:\n\n* [National Center for Women & Information Technology](https:\u002F\u002Fncwit.org\u002Fabout-ncwit\u002Fdonate\u002F)\n* [girls who code](https:\u002F\u002Fgirlswhocode.com\u002Fget-involved\u002F)\n* [Trans*H4CK](https:\u002F\u002Fwww.transhack.org\u002Fsponsorship\u002F)\n* [Black Girls CODE](https:\u002F\u002Fwearebgc.org\u002Fdonate\u002F)\n","Amethyst 是一款为 macOS 设计的自动平铺窗口管理器，风格类似于 xmonad。它使用 Swift 语言开发，支持多种布局模式，用户可以通过快捷键轻松切换和调整窗口布局，提高工作效率。Amethyst 的核心功能包括自动布局、窗口聚焦与移动以及多屏幕支持等。适合那些希望在 macOS 上实现高效工作环境、偏好键盘操作或需要同时处理多个窗口任务的用户使用。项目遵循 MIT 许可协议，并拥有活跃的社区支持。",2,"2026-06-11 03:08:18","top_language"]