{"id":114906,"url":"https://github.com/fabiospampinato/phoenix","last_synced_at":"2025-08-29T02:33:20.777Z","repository":{"id":66053417,"uuid":"98041288","full_name":"fabiospampinato/phoenix","owner":"fabiospampinato","description":"My Phoenix setup. Powerful, easy to customize, tuned for web development, adds a space switcher.","archived":false,"fork":false,"pushed_at":"2025-06-28T16:11:53.000Z","size":27125,"stargazers_count":406,"open_issues_count":12,"forks_count":50,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-07-27T16:51:10.636Z","etag":null,"topics":["developer-tools","macos","phoenix","productivity","spaces","switcher"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fabiospampinato.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"fabiospampinato","custom":"https://www.paypal.me/fabiospampinato"}},"created_at":"2017-07-22T15:47:05.000Z","updated_at":"2025-06-28T16:11:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"edaea747-6bc4-46c5-bacc-101f4332016c","html_url":"https://github.com/fabiospampinato/phoenix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fabiospampinato/phoenix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiospampinato%2Fphoenix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiospampinato%2Fphoenix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiospampinato%2Fphoenix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiospampinato%2Fphoenix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fabiospampinato","download_url":"https://codeload.github.com/fabiospampinato/phoenix/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fabiospampinato%2Fphoenix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272611978,"owners_count":24964385,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-29T02:00:10.610Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-tools","macos","phoenix","productivity","spaces","switcher"],"created_at":"2024-01-06T02:39:34.800Z","updated_at":"2025-08-29T02:33:20.735Z","avatar_url":"https://github.com/fabiospampinato.png","language":"JavaScript","funding_links":["https://github.com/sponsors/fabiospampinato","https://www.paypal.me/fabiospampinato"],"categories":["JavaScript"],"sub_categories":[],"readme":"\n# Phoenix\n\nMy [Phoenix](https://github.com/kasper/phoenix) setup. Powerful, easy to customize, tuned for web development, adds a space switcher.\n\n## Installation\n\nThis configuration uses a remap of the Caps Lock key to something more useful: the Hyper key \u003ckbd\u003e⇪\u003c/kbd\u003e (basically just \u003ckbd\u003eCtrl + Alt + Cmd\u003c/kbd\u003e combined into one key) if used in combination with other keys, otherwise it gets mapped to \u003ckbd\u003eF18\u003c/kbd\u003e, which is used to trigger the space switcher. If you prefer you may skip these remap steps while you try the configuration, but if you usually have many spaces opened I highly recommend you not to miss out the awesome space switcher, for which this hack is a requirement.\n\n1. Install [Phoenix](https://github.com/kasper/phoenix#install)\n2. Install [Karabiner Elements](https://github.com/tekezo/Karabiner-Elements) via its [dmg](https://pqrs.org/latest/karabiner-elements-latest.dmg)\n3. Replace Caps Lock with Hyper/F18 using [this](http://tinyurl.com/yc8m5qe8) Karabiner Elements configuration (if the link doesn't work copy and paste this in a browser: `karabiner://karabiner/assets/complex_modifications/import?url=https%3A%2F%2Fraw.githubusercontent.com%2Ffabiospampinato%2Fphoenix%2Fmaster%2Fconfig%2Fkarabiner.json`)\n4. `$ mkdir ~/.config`\n5. `$ cd ~/.config`\n6. `$ git clone git@github.com:fabiospampinato/phoenix.git`\n7. Restart Phoenix\n8. Enjoy!\n\n## Customization\n\nTo disable specific features, just comment out their correspondent `require` call in [phoenix.js](https://github.com/fabiospampinato/phoenix/blob/master/phoenix.js).\n\nTo tweak some numbers, simply edit [constants.js](https://github.com/fabiospampinato/phoenix/blob/master/config/constants.js).\n\nChanging the specific shortcut used to trigger an action is pretty trivial.\n\nDon't forget to make a PR if you fixed something or implemented something cool :)\n\n## Shortcuts\n\n### Sides\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/sides.gif\" alt=\"Sides\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + ↑\u003c/kbd\u003e | Move window to the top side |\n| \u003ckbd\u003e⇪ + →\u003c/kbd\u003e | Move window to the right side |\n| \u003ckbd\u003e⇪ + ↓\u003c/kbd\u003e | Move window to the bottom side |\n| \u003ckbd\u003e⇪ + ←\u003c/kbd\u003e | Move window to the left side |\n\n### Corners\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/corners.gif\" alt=\"Corners\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + Q\u003c/kbd\u003e | Move window to the top-left corner |\n| \u003ckbd\u003e⇪ + W\u003c/kbd\u003e | Move window to the top-right corner |\n| \u003ckbd\u003e⇪ + S\u003c/kbd\u003e | Move window to the bottom-right corner |\n| \u003ckbd\u003e⇪ + A\u003c/kbd\u003e | Move window to the bottom-left corner |\n\n### Halves\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/halves.gif\" alt=\"Halves\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + [\u003c/kbd\u003e | Move window to the 1st half |\n| \u003ckbd\u003e⇪ + ]\u003c/kbd\u003e | Move window to the 2nd half |\n\n### Thirds\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/thirds.gif\" alt=\"Thirds\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + 1\u003c/kbd\u003e | Move window to the 1st column |\n| \u003ckbd\u003e⇪ + 2\u003c/kbd\u003e | Move window to the 2nd column |\n| \u003ckbd\u003e⇪ + 3\u003c/kbd\u003e | Move window to the 3rd column |\n\n### Sixths\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/sixths.gif\" alt=\"Sixths\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + Shift + Q\u003c/kbd\u003e | Move window to the 1st sixth |\n| \u003ckbd\u003e⇪ + Shift + W\u003c/kbd\u003e | Move window to the 2nd sixth |\n| \u003ckbd\u003e⇪ + Shift + E\u003c/kbd\u003e | Move window to the 3rd sixth |\n| \u003ckbd\u003e⇪ + Shift + A\u003c/kbd\u003e | Move window to the 4th sixth |\n| \u003ckbd\u003e⇪ + Shift + S\u003c/kbd\u003e | Move window to the 5th sixth |\n| \u003ckbd\u003e⇪ + Shift + D\u003c/kbd\u003e | Move window to the 6th sixth |\n\n### Center\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/center.gif\" alt=\"Center\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + X\u003c/kbd\u003e | Center the window |\n| \u003ckbd\u003e⇪ + Shift + X\u003c/kbd\u003e | Center the window and set its dimensions to 1280x800 |\n\n### Grow\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/grow.gif\" alt=\"Grow\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + Shift + ↑\u003c/kbd\u003e | Grow window from the top |\n| \u003ckbd\u003e⇪ + Shift + →\u003c/kbd\u003e | Grow window from the right |\n| \u003ckbd\u003e⇪ + Shift + ↓\u003c/kbd\u003e | Grow window from the bottom |\n| \u003ckbd\u003e⇪ + Shift + ←\u003c/kbd\u003e | Grow window from the left |\n\n### Expand\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/expand.gif\" alt=\"Expand\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + Space\u003c/kbd\u003e | Toggle window expansion to fill the space |\n| \u003ckbd\u003e⇪ + Shift + Space\u003c/kbd\u003e | Toggle window expansion to fullscreen |\n\n### Focus or Open\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/focus.gif\" alt=\"Focus or Open\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + `\u003c/kbd\u003e | Focus to or open [Notable](https://notable.md) |\n| \u003ckbd\u003e⇪ + C\u003c/kbd\u003e | Focus to or open [Chrome](https://www.google.com/chrome) |\n| \u003ckbd\u003e⇪ + D\u003c/kbd\u003e | Focus to or open [Chrome Developer Tools](https://developer.chrome.com/devtools) |\n| \u003ckbd\u003e⇪ + V\u003c/kbd\u003e | Focus to or open [Visual Studio Code](https://code.visualstudio.com) |\n| \u003ckbd\u003e⇪ + F\u003c/kbd\u003e | Focus to or open Finder |\n| \u003ckbd\u003e⇪ + T\u003c/kbd\u003e | Focus to or open Terminal |\n| \u003ckbd\u003e⇪ + G\u003c/kbd\u003e | Focus to or open [GitTower](https://www.git-tower.com/) |\n\n### Spaces\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/spaces.gif\" alt=\"Spaces\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\nIn order to make this work you have to open `System Preferences -\u003e Keyboard -\u003e Shortcuts -\u003e Mission Control` and bind all `Switch to Desktop [NUMBER]` actions to \u003ckbd\u003eCtrl + Alt + Cmd + Shift + [NUMBER]\u003c/kbd\u003e. There are actions up to the 9th desktop, but they may not be shown to you if you have less then 9 desktops currently open.\n\n**Note**: If you don't need wrapping support, you should just remap the `Move left/right a space` actions under `System Preferences -\u003e Keyboard -\u003e Shortcuts -\u003e Mission Control`.\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + Tab\u003c/kbd\u003e | Switch to the next space |\n| \u003ckbd\u003e⇪ + Shift + Tab \u003c/kbd\u003e | Switch to the previous space |\n\n### Applications Icons\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/applications_icons.gif\" alt=\"Applications Icons\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + I\u003c/kbd\u003e | For each window in the current space show an icon indicating its position |\n| \u003ckbd\u003e⇪ + Shift + I\u003c/kbd\u003e | Display the current date and time | \u003c!-- //TODO: add to gif --\u003e\n\n### Reload Phoenix\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/reload_phoenix.gif\" alt=\"Reload Phoenix\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + Shift + P\u003c/kbd\u003e | Reload Phoenix |\n\n### Pause/Resume Application\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/pause_resume.gif\" alt=\"Pause/Resume Application\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\nThis can be used for saving battery, pausing single-player games etc.\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⇪ + F8\u003c/kbd\u003e | Pause or resume the current application |\n\n### Quit Application\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/quit.gif\" alt=\"Quit Application\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\nDid you ever close 3+ Chrome windows instead of a single tab by mistake? Fear no more! Now in order to quit an app you have to trigger \u003ckbd\u003e⌘Q\u003c/kbd\u003e twice in a short timeframe. Stop [wasting 10$](https://clickontyler.com/commandq) for something so basic.\n\n| Shortcut | Description |\n| -------- | ----------- |\n| \u003ckbd\u003e⌘Q\u003c/kbd\u003e \u003ckbd\u003e⌘Q\u003c/kbd\u003e | Quit application |\n\n## Mouse\n\n### Snapping\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/snapping.gif\" alt=\"Snapping\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\nDrag a window to an edge or corner to snap it into place.\n\n## Magic\n\n### Chrome\n\nIf it gets opened, positionate it to the left side.\n\n### Chrome Developer Tools\n\nIf it gets opened, positionate it to the bottom-right corner, and shrink Visual Studio Code's height a bit, so that the console will be visible.\n\nIf it gets closed, restore Visual Studio Code's height.\n\n### Terminal/iTerm2/Finder\n\nIf one of these apps' windows gets opened, positionate it to bottom-left corner.\n\n### Visual Studio Code\n\nIf it gets opened, positionate it to the right side.\n\n## Space Switcher\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/spaces_switcher.gif\" alt=\"Space Switcher\" style=\"width:690px\"\u003e\n\u003c/p\u003e\n\nThis is the truly great addition to what was already available on the internet.\n\nIt combines [Phoenix](https://github.com/kasper/phoenix), [Alfred](https://www.alfredapp.com) and [alfred-spaces-workflow](https://github.com/fabiospampinato/alfred-spaces-workflow) into the space switcher macOS deserves but never had, always just a double Hyper (\u003ckbd\u003e⇪\u003c/kbd\u003e \u003ckbd\u003e⇪\u003c/kbd\u003e) away.\n\nThis is how it works:\n- It uses Phoenix to compile a list of your spaces\n- It tries to guess a name for those spaces, by default that would be the name of the folder opened in the Visual Studio Code instance present in that space ([get_space_name.js](https://github.com/fabiospampinato/phoenix/blob/master/helpers/get_space_name.js))\n- Refreshes the list and those guessed names when necessary\n- Listens for the double Hyper (\u003ckbd\u003e⇪\u003c/kbd\u003e \u003ckbd\u003e⇪\u003c/kbd\u003e) shortcut\n- Opens [Alfred](https://www.alfredapp.com) and triggers [alfred-spaces-workflow](https://github.com/fabiospampinato/alfred-spaces-workflow)\n- Which reads the list of spaces compiled with Phoenix and displays it to you\n- Now just select a space to switch to\n\nIn order to make this work you have to open `System Preferences -\u003e Keyboard -\u003e Shortcuts -\u003e Mission Control` and bind all `Switch to Desktop [NUMBER]` actions to \u003ckbd\u003eCtrl + Alt + Cmd + Shift + [NUMBER]\u003c/kbd\u003e. There are actions up to the 9th desktop, but they may not be shown to you if you have less then 9 desktops currently open.\n\n**Note**: There's no API available for retrieving windows from other spaces, therefor other spaces' guessed names won't be refreshed until you visit them. The very first time you load Phoenix you might want to switch the focus to all of them, one by one, to have their names updated.\n\n## License\n\nMIT © Fabio Spampinato\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiospampinato%2Fphoenix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffabiospampinato%2Fphoenix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffabiospampinato%2Fphoenix/lists"}