Skip to content

My Phoenix setup. Powerful, easy to customize, tuned for web development, adds a space switcher.

License

Notifications You must be signed in to change notification settings

nilshae/phoenix

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phoenix

My Phoenix setup. Powerful, easy to customize, tuned for web development, adds a space switcher.

Installation

This configuration uses a remap of the Caps Lock key to something more useful: the Hyper key (basically just ctrl + alt + cmd combined into one key) if used in combination with other keys, otherwise it gets mapped to F18, 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.

  1. Install Phoenix
  2. Install Karabiner Elements via its dmg
  3. Replace Caps Lock with Hyper/F18 using this 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)
  4. $ mkdir ~/.config
  5. $ cd ~/.config
  6. $ git clone git@github.com:fabiospampinato/phoenix.git
  7. Restart Phoenix
  8. Enjoy!

Customization

To disable specific features, just comment out their correspondent require call in phoenix.js.

To tweak some numbers, simply edit constants.js.

Changing the specific shortcut used to trigger an action is pretty trivial.

Don't forget to make a PR if you fixed something or implemented something cool :)

Shortcuts

Sides

Sides

Shortcut Description
⇪ + ↑ Move window to the top side
⇪ + → Move window to the right side
⇪ + ↓ Move window to the bottom side
⇪ + ← Move window to the left side

Corners

Corners

Shortcut Description
⇪ + Q Move window to the top-left corner
⇪ + W Move window to the top-right corner
⇪ + S Move window to the bottom-right corner
⇪ + A Move window to the bottom-left corner

Halves

Halves

Shortcut Description
⇪ + [ Move window to the 1st half
⇪ + ] Move window to the 2nd half

Thirds

Thirds

Shortcut Description
⇪ + 1 Move window to the 1st column
⇪ + 2 Move window to the 2nd column
⇪ + 3 Move window to the 3rd column

Center

Center

Shortcut Description
⇪ + X Center the window
⇪ + shift + X Center the window and set its dimensions to 900x600

Grow

Grow

Shortcut Description
⇪ + shift + ↑ Grow window from the top
⇪ + shift + → Grow window from the right
⇪ + shift + ↓ Grow window from the bottom
⇪ + shift + ← Grow window from the left

Expand

Expand

Shortcut Description
⇪ + space Toggle window expansion to fill the space
⇪ + shift + space Toggle window expansion to fullscreen

Focus or Open

Focus or Open

Shortcut Description
⇪ + ` Focus to or open Noty
⇪ + C Focus to or open Chrome
⇪ + D Focus to or open Chrome Developer Tools
⇪ + V Focus to or open Visual Studio Code
⇪ + F Focus to or open Finder
⇪ + T Focus to or open Hyper
⇪ + G Focus to or open GitTower

Applications Icons

Applications Icons

Shortcut Description
⇪ + I For each window in the current space show an icon indicating its position

Reload Phoenix

Reload Phoenix

Shortcut Description
⇪ + shift + P Reload Phoenix

Quit

Did 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 ⌘Q twice in a short timeframe. Stop wasting 10$ for something so basic.

Shortcut Description
⌘Q ⌘Q Quit application

Split View

//TODO: Unfortunately there's no API available for doing this at the moment, that's a shame given that I would have finally found a use for the § key, it looks like 2 S => Side-by-Side :D

Shortcut Description
⇪ + § If there are only 2 windows in the current space put them in split view

Magic

Chrome

If it gets opened, positionate it to the left side.

Chrome Developer Tools

If 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.

If it gets closed, restore Visual Studio Code's height.

Terminal/Hyper/Finder

If one of these apps' windows gets opened, positionate it to bottom-left corner.

Visual Studio Code

If it gets opened, positionate it to the right side.

Space Switcher

Space Switcher

This is the truly great addition to what was already available on the internet.

It combines Phoenix, Alfred and alfred-spaces-workflow into the space switcher macOS deserves but never had, always just a double Hyper ( ) away.

This is how it works:

  • It uses Phoenix to compile a list of your spaces
  • 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
  • Refreshes the list and those guessed names when necessary
  • Listens for the double Hyper ( ) shortcut
  • Opens Alfred and triggers alfred-spaces-workflow
  • Which reads the list of spaces compiled with Phoenix and displays it to you
  • Select a space to switch to

In order to make this wizardry work you have to open System Preferences -> Keyboard -> Shortcuts -> Mission Control and bind all Switch to Desktop [NUMBER] actions to ctrl + alt + cmd + shift + [NUMBER]. 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.

Limitations:

  • 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.
  • There's no API for detecting when a space gets added, deleted or rearranged. In case you do any of these things you may want to reload Phoenix (⇪ + shift + P). This will be worked around in a future commit.

License

MIT © Fabio Spampinato

About

My Phoenix setup. Powerful, easy to customize, tuned for web development, adds a space switcher.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.4%
  • Shell 0.6%