diff --git a/com.google.eclipse.terminal.local/icons/change_title.gif b/com.google.eclipse.terminal.local/icons/change_title.gif
new file mode 100644
index 0000000..efc77a7
--- /dev/null
+++ b/com.google.eclipse.terminal.local/icons/change_title.gif
Binary files differ
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java
index 43341d2..c1d40ac 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/Activator.java
@@ -17,7 +17,7 @@
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.resource.*;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.*;
+import org.osgi.framework.BundleContext;
 
 /**
  * The activator class controls the plug-in life cycle.
@@ -40,11 +40,15 @@
   }
 
   @Override protected void initializeImageRegistry(ImageRegistry registry) {
-    Bundle bundle = instance().getBundle();
-    URL newTerminalImageUrl = bundle.getEntry("icons/new_terminal.gif");
-    registry.put(NEW_TERMINAL, ImageDescriptor.createFromURL(newTerminalImageUrl));
-    URL scrollLockImageUrl = bundle.getEntry("icons/scroll_lock.gif");
-    registry.put(SCROLL_LOCK, ImageDescriptor.createFromURL(scrollLockImageUrl));
+    addImage(registry, CHANGE_TITLE, "icons/change_title.gif");
+    addImage(registry, NEW_TERMINAL, "icons/new_terminal.gif");
+    addImage(registry, SCROLL_LOCK, "icons/scroll_lock.gif");
+  }
+
+  private void addImage(ImageRegistry registry, String key, String path) {
+    URL imageUrl = instance().getBundle().getEntry(path);
+    registry.put(key, ImageDescriptor.createFromURL(imageUrl));
+
   }
 
   public static void log(String message, Throwable cause) {
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java
index 25b78fb..0dfff3e 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ImageKeys.java
@@ -12,6 +12,7 @@
  * @author alruiz@google.com (Alex Ruiz)
  */
 public final class ImageKeys {
+  public static final String CHANGE_TITLE = "changeTitle";
   public static final String NEW_TERMINAL = "newTerminal";
   public static final String SCROLL_LOCK = "scrollLock";
 
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java
index 96db96b..a9c5cee 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.java
@@ -15,9 +15,12 @@
  */
 public class Messages extends NLS {
   public static String alwaysCloseWithoutWarn;
+  public static String changeTerminalTitle;
   public static String closeTerminalQuestion;
   public static String confirmCloseDialogTitle;
   public static String defaultViewTitle;
+  public static String enterTerminalTitleDialogTitle;
+  public static String enterTerminalTitlePrompt;
   public static String newLocalTerminal;
   public static String scrollLock;
 
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties
index a5c0377..59232db 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/Messages.properties
@@ -1,6 +1,9 @@
 alwaysCloseWithoutWarn=Always close without warn
+changeTerminalTitle=Change Title
 closeTerminalQuestion=Close terminal?
 confirmCloseDialogTitle=Confirm Close
 defaultViewTitle=Local Terminal
+enterTerminalTitleDialogTitle=Enter New Terminal Title
+enterTerminalTitlePrompt=Enter the new title for the terminal:
 newLocalTerminal=New Local Terminal
 scrollLock=Scroll Lock
diff --git a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
index 2a1d9b8..7deb6d3 100644
--- a/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
+++ b/com.google.eclipse.terminal.local/src/com/google/eclipse/terminal/local/ui/view/TerminalView.java
@@ -17,12 +17,14 @@
 import static org.eclipse.core.runtime.Path.fromOSString;
 import static org.eclipse.core.runtime.Status.OK_STATUS;
 import static org.eclipse.jface.resource.JFaceResources.TEXT_FONT;
+import static org.eclipse.jface.window.Window.OK;
 import static org.eclipse.ui.IWorkbenchPage.VIEW_ACTIVATE;
 
 import java.util.UUID;
 
 import org.eclipse.core.runtime.*;
 import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.*;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.util.*;
 import org.eclipse.swt.graphics.Font;
@@ -193,6 +195,8 @@
 
   private void setupToolBarActions() {
     IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
+    toolBarManager.add(new ChangeViewNameAction());
+    toolBarManager.add(new Separator());
     newTerminalAction = new NewTerminalAction();
     toolBarManager.add(newTerminalAction);
     scrollLockAction = new ScrollLockAction();
@@ -270,30 +274,6 @@
     return (IContextService) getSite().getService(IContextService.class);
   }
 
-  private class NewTerminalAction extends Action {
-    NewTerminalAction() {
-      setImageDescriptor(imageDescriptor(NEW_TERMINAL));
-      setText(newLocalTerminal);
-    }
-
-    @Override public void run() {
-      openTerminalView(UUID.randomUUID().toString(), workingDirectory);
-    }
-  }
-
-  private class ScrollLockAction extends Action {
-    ScrollLockAction() {
-      super(scrollLock, AS_RADIO_BUTTON);
-      setChecked(false);
-      setImageDescriptor(imageDescriptor(SCROLL_LOCK));
-    }
-
-    @Override public void run() {
-      boolean newValue = !terminalWidget.isScrollLockEnabled();
-      enableScrollLockAndUpdateAction(newValue);
-    }
-  }
-
   @Override public boolean isDirty() {
     if (checkCanBeClosed) {
       checkCanBeClosed = false;
@@ -327,4 +307,53 @@
   @Override public boolean isSaveAsAllowed() {
     return false;
   }
+
+  private class NewTerminalAction extends Action {
+    NewTerminalAction() {
+      setImageDescriptor(imageDescriptor(NEW_TERMINAL));
+      setText(newLocalTerminal);
+    }
+
+    @Override public void run() {
+      openTerminalView(UUID.randomUUID().toString(), workingDirectory);
+    }
+  }
+
+  private class ScrollLockAction extends Action {
+    ScrollLockAction() {
+      super(scrollLock, AS_RADIO_BUTTON);
+      setChecked(false);
+      setImageDescriptor(imageDescriptor(SCROLL_LOCK));
+    }
+
+    @Override public void run() {
+      boolean newValue = !terminalWidget.isScrollLockEnabled();
+      enableScrollLockAndUpdateAction(newValue);
+    }
+  }
+
+  private class ChangeViewNameAction extends Action {
+    ChangeViewNameAction() {
+      setImageDescriptor(imageDescriptor(CHANGE_TITLE));
+      setText(changeTerminalTitle);
+    }
+
+    @Override public void run() {
+      Shell shell = getViewSite().getShell();
+      final String currentTitle = getPartName();
+      InputDialog input = new InputDialog(shell, enterTerminalTitleDialogTitle, enterTerminalTitlePrompt, currentTitle,
+          new IInputValidator() {
+            @Override public String isValid(String newText) {
+              if (newText == null || newText.isEmpty() || currentTitle.equals(newText)) {
+                return "";
+              }
+              return null;
+            }
+          });
+      input.setBlockOnOpen(true);
+      if (input.open() == OK) {
+        setPartName(input.getValue());
+      }
+    }
+  }
 }
