OSX Terminal – Tab and window shortcuts

In a previous post, I shared a tip on Naming your Terminal tabs in OSX Lion. I’ve been meaning to share some additional shortcuts that I use day-to-day for opening new tabs and renaming them via the command line.

The workflow

We can rename tabs and windows as before:


# Rename tab
tabname "Funky Tab"

# Rename window
winname "Funky Window"

Or, leave out the name to base it the current directory:


# Rename tab to current directory name
tabname

# Rename window to current directory name
winname

…and to save typing, these are aliased as ‘tn’ and ‘tw’, so this will do the same:


# Rename tab to current directory name
tn

# Rename window to current directory name
wn

Now, for opening a new tab we have:


# Open new tab, cd into same directory as current tab and name it
tab

By default this will open a new tab, cd into the same directory as the current tab and name it based on it’s directory. You can optionally include a path:


# Open new tab, cd into specified directory and name it
tab ./path/to/directory

Of course, there is a lazy version of creating tabs too:


# Shortcut for 'tab'
t

The code

To get this functionality, just drop the following into your ~/.profile file:


function tabname {
  # Will use current dir name if called without arg.
  printf "\e]1;${1-$(basename `pwd`)}\a"
}
function winname {
  # Will use current dir name if called without arg.
  printf "\e]2;${1-$(basename `pwd`)}\a"
}
function tab {
  # Will cd into current dir if called without arg.
  osascript -e 'tell application "Terminal"' \
            -e 'tell application "System Events" to keystroke "t" using {command down}' \
            -e "do script \"cd `pwd` && cd ${1-.} && tabname && clear\" in front window" \
            -e 'end tell' > /dev/null
}
alias t='tab'
alias tn='tabname'
alias wn='winname'

See the Gist here.

Happy tabbing!

Pow, meet rbenv

I just ran into a problem with Pow when using rbenv for Ruby version management whereby Rails apps were not launching properly, giving the the following error message:

Error starting application
Your Rack app raised an exception when Pow tried to run it.

Bundler::GemNotFound: Could not find ??? in any of the sources

Turns out that Pow doesn’t know anything about rbenv unless you tell it. Thomas Fuchs tweeted a solution, suggesting that you just add the following to a ~/.powconfig file:

export PATH="/Users/username/.rbenv/shims:/Users/username/.rbenv/bin:$PATH"

Kill off your Pow process (I use the Powder gem for this i.e. powder down && powder up) and all should work just fine.

I personally prefer the solution mentioned in this related Github ticket as is saves having to hardcode your home directory:

export PATH=$(rbenv root)/shims:$(rbenv root)/bin:$PATH

Happy Pow’ing.

Naming your Terminal tabs in OSX Lion

If you find yourself in the Terminal app with a bunch of tabs open, the default name of “bash” isn’t very useful when navigating between them. You can change the tab name via the UI by right clicking the tab, then clicking “Inspect Tab” and changing the window or tab names but this is somewhat long winded.

Below are a couple of bash functions I have in my “.profile” file to make this easier:


function tabname {
  printf "\e]1;$1\a"
}

function winname {
  printf "\e]2;$1\a"
}

Now you can easily name your tabs or windows with the following:


# Rename tab
tabname "Funky Tab"

# Rename window
winname "Funky Window"

Thanks to Bubu and Chris Page on the SuperUser site for the right codes.

Using Pow when developing Rails applications on OSX

I heard about Pow a while ago which is “a zero-config Rack server for Mac OS X” but never got around to giving it a go. I’ve just installed it and can instantly see that it is going to make developing with Rails (or any Rack app) a whole lot nicer, especially when dealing with apps that use subdomain account keys.

If you’ve not tried it yet, head over to the Pow website and get it installed with:

curl get.pow.cx | sh

Happy new year everyone!

Ruby Causing MacBook Pro to Run Hot

The past couple of days the fan on my MacBook Pro has been constantly on and battery usage down to around a third. Launching Activity Monitor, it showed 3 Ruby processes all at 100% CPU usage. The solution was to force quit these processes and within seconds, the fan slowed up and the battery indicator went up. Force quitting these processes didn’t affect anything I was doing with Rails or IRB so I guess they were just stray processes.

If anyone else gets the same problem, just launch Activity Monitor which lives in the /Applications/Utilities folder, click the CPU tab if not already selected, select processes with a process name of “ruby”, click “Quit Process” and then select “Force Quit”. Just selecting “Quit” wouldn’t work for me hence the “Force Quit”.

I hope this saves someone else the head-scratching as to why their Mac is running hot.

Building Ruby, Rails, Subversion, Mongrel, and MySQL on Mac OS X Tiger – The Easy Way

“Dan Benjamin”:http://hivelogic.com/authors/danbenjamin recently updated his very helpful article entitled “”Building Ruby, Rails, Subversion, Mongrel, and MySQL on Mac OS X”:http://hivelogic.com/narrative/articles/ruby-rails-mongrel-mysql-osx”.

I don’t know about anyone else but compiling software is not one of my favourite pastimes. As I’ve been chopping and changing macs lately I thought I’d write a couple of shell scripts to get things right before running anything on my nice new (freshly installed) MacBook Pro.

h3. Prerequisites

There are a couple of prerequisites in addition to what’s on Dan’s “”What’s Needed”:http://hivelogic.com/narrative/articles/ruby-rails-mongrel-mysql-osx” list before running “the scripts”:http://svn.soniciq.com/public/rails/tools/osx_development_setup/. The first is that you must have MySQL installed as referenced in “Dan’s article”:http://hivelogic.com/narrative/articles/ruby-rails-mongrel-mysql-osx, and the second being the following:

Ensure you have the following line at the end of your ~/.bash_login file:

export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

You can add this by typing nano ~/.bash_login then copy and paste the above line into the end of the file. Once this is done, hit ctrl-x to exit, answering ‘y’ to “do you want to save changes” prompt.

h3. The scripts

There are two scripts, “01_osx_rails.sh”:http://svn.soniciq.com/public/rails/tools/osx_development_setup/01_osx_rails.sh and “02_osx_image_tools.sh”:http://svn.soniciq.com/public/rails/tools/osx_development_setup/02_osx_image_tools.sh and the following will explain how to use them.

h3. Creating your development environment

The first script will install everything in Dan’s article along with the following gems that I use frequently:
* rails version 1.1.6 for support of older rails apps
* bluecloth
* redcloth
* sqlite3-ruby
* ferret
* ZenTest
* redgreen

Right… here we go:

(please read “the licence”:http://svn.soniciq.com/public/rails/tools/osx_development_setup/MIT-LICENCE before running these scripts as although they have been tested on a clean install of Tiger, I can’t take any responsibility if something breaks)
# Download “01_osx_rails.sh”:http://svn.soniciq.com/public/rails/tools/osx_development_setup/01_osx_rails.sh to your desktop
# If you don’t wish to install all of these gems then open the file in a text editor and comment out the relevant lines with a hash.
# Open a new terminal window and type the following:

cd ~/Desktop
sh 01_osx_rails.sh


# Go make a cup of tea and watch all the pretty text scroll before your eyes.

That’s it, you should now have a fully working development environment.

h3. Image tools

I use a couple of image tools on my system, GD and ImageMagick (with RMagick). If you wish to install these tools and the related libraries, run the following:

(This script hasn’t been tested as much as the previous one so use at your own risk. If anyone has any bug fixes then please post a comment)

cd ~/Desktop
sh 02_osx_image_tools.sh

h3. We’re done

Please let me know if I’ve missed anything obvious.

I hope this helps anyone else out there with Compilaphobia!