A simple SSH shortcut menu for OS X
http://fitztrev.github.io/shuttle/
Sidenote: Many people ask, so here's how I have my terminal setup.
- Download Shuttle
- Copy to Applications
In your home directory create a file called ~/.shuttle.path
In this file should be a single line with the path to the JSON settings file.
/Users/thshdw/Dropbox/shuttle/shuttle.json
shuttle will read ~/.shuttle.path
first and use its contents as the path to your JSON file.
This changes the app that opens settings.json for editing (Global Setting)
Possible values are default
, nano
, vi
, vim
or any terminal based editor.
default
opens settings.json in whatever app is registered as the default for extension .json
"editor": "vim",
would open ~/.shuttle.json
in vim
This allows you to flag the shuttle.app to start automatically (Global Setting)
Possible values are true
or false
This allows you to set the default terminal (Global Setting)
Possible values are Terminal.app
or iTerm
This changes the applescripts for iTerm (Global Setting)
Possible values are stable
or nightly
If terminal
is set to iTerm
this setting is mandatory
This setting is ignored if your terminal is set to Terminal.app
This sets the Terminal theme for all windows. (Global Setting)
Possible values are the Profile names in your terminal preferences. iTerm ships with one Profile named "Default". OS X Terminal ships with several. To see the names see the preferences area of the terminal you are using.
In iTerm the profile names are case sensitive.
Please ensure the theme names you set are valid. If shuttle passes theme "Dagobah" and it does not exist in iTerm or OS X Terminal then your command won't run. This is because the applescripts are not making any checks to see if the theme you passed actually exists within the terminal application.
This setting can be overwritten by the command level "theme"
settings
This changes the default action for how commands are opened (Global Setting)
Possible values are tab
or new
.
tab
opens the command in the active terminal in a new tab.
new
opens the command in a new window.
This setting can be overwritten by the command level "inTerminal"
settings
This changes parsing ssh config. By default, Shuttle will parse your ~/.ssh/config
file for hosts. (Global Setting)
Possible values are false
or true
This will ignore hosts in the ssh config. (Global Setting)
Possible values are the hosts in your config that you want to ignore. If you had github.com and git.example.com in your ssh config, to ignore them you set:
"ssh_config_ignore_hosts": ["github.com", "git.example.com"],
This will ignore keywords in your ssh config. (Global Setting)
Possible values are the keywords in your ssh config that you want to ignore.
Additional ssh config customization
Host work/servers/web01
HostName user@web01.example.com
- or -
Host gandalf
# shuttle.name = work/servers/web01 (webserver)
HostName user@web01.example.com
Command level settings are unique to your command and will overwrite the Global setting equivalent
This is the command / script that will be launched in the terminal. (Command setting)
Where Value is a command or script.
"cmd": "ps aux | grep [s]sh"
Would check for ssh processes.
This sets the text that will appear in shuttles drop down menu. (Command setting)
Were Value is the text you want to see in the drop down menu for this command.
"name": "SSH to my wordpress blog"
This value can also set the title of the terminal window if "title" :"VALUE"
is not set.
This sets how command will open in the terminal window. (Command setting)
Possible values are new
, tab
, or current
new
opens the command in a new terminal window.
tab
opens the command in the active terminal window in a new tab.
current
opens the command in the active terminal's window.
When using using current
I recommend that you wrap the command in some user input like this:
echo "are you sure y/n"; read sure; if [ "$sure" == "y" ]; then echo "running command" && ps aux | grep [s]sh; else echo "exiting..."; fi
Do this as a precaution as it could be possible to run a command on the wrong host.
This sets the theme for the terminal window. (Command setting)
Possible values are the profile names for iTerm or OS X Terminal.
If "theme"
is not set and "default_theme"
is not set then shuttle passes Profile Default
for iTerm and Profile basic
for OS X terminal.
This sets the text that will appear in the terminal's title bar. (Command setting)
Where VALUE is the text you want to set in the terminals title bar.
If title
is missing shuttle uses the menu's name and sets this as title
- Cloud hosting integration
- AWS, Rackspace, Digital Ocean, etc
- Using their APIs, automatically add all of your machines to the menu
- Preferences panel for easier configuration
- Update notifications
- Keyboard hotkeys
- Open menu
- Select host option within menu
This project was created by Trevor Fitzgerald. I owe many thanks to the following people who have helped make Shuttle even better.
(In alphabetical order)
- Alex Carter
- Dave Eddy
- Dmitry Filimonov
- Frank Enderle
- Jack Weeden
- Justin Swanson
- Marco Aurélio
- Martin Grund
- Michael Davis
- Rui Rodrigues
- Ryan Cohen
- Thomas Rosenstein
- Tibor Bödecs
Shuttle was inspired by SSHMenu, the GNOME applet for Linux.
I also looked to projects such as MLBMenu and QuickSmileText for direction on building a Cocoa app for the status bar.