Index: commands.c
===================================================================
--- commands.c	(revision 451db9e0515b2671c88e0858f712b53a7fcc5b76)
+++ commands.c	(revision 799b60ea3145bfa2ad773b09544d31a3e30e77ff)
@@ -641,4 +641,5 @@
 	      "show keymap <keymap>\n"
 	      "show license\n"
+	      "show quickstart\n"
 	      "show startup\n"
 	      "show status\n"
@@ -2207,4 +2208,6 @@
   } else if (!strcmp(argv[1], "license")) {
     owl_function_show_license();
+  } else if (!strcmp(argv[1], "quickstart")) {
+    owl_function_show_quickstart();
   } else if (!strcmp(argv[1], "startup")) {
     char *filename;
Index: functions.c
===================================================================
--- functions.c	(revision 3f3ee611e4b4ff9de1453aa609918c0099936019)
+++ functions.c	(revision 799b60ea3145bfa2ad773b09544d31a3e30e77ff)
@@ -172,4 +172,34 @@
 }
 
+void owl_function_show_quickstart()
+{
+    char *message =
+    "Move between messages with the arrow keys, and press 'r' to reply.\n"
+    "For more info, press 'h' or visit http://barnowl.mit.edu/\n\n"
+#ifdef HAVE_LIBZEPHYR
+    "@b(Zephyr:)\n"
+    "To send a message to a user, type ':zwrite @b(username)'. You can also\n"
+    "press 'z' and then type the username. To subscribe to a class, type\n"
+    "':sub @b(class)', and then type ':zwrite -c @b(class)' to send.\n\n"
+#endif
+    "@b(AIM:)\n"
+    "Log in to AIM with ':aimlogin @b(screenname)'. Use ':aimwrite @b(screenname)',\n"
+    "or 'a' and then the screen name, to send someone a message.\n\n"
+    ;
+
+    if (owl_perlconfig_is_function("BarnOwl::Hooks::_get_quickstart")) {
+        char *perlquickstart = owl_perlconfig_execute("BarnOwl::Hooks::_get_quickstart()");
+        if (perlquickstart) {
+            char *result = owl_sprintf("%s%s", message, perlquickstart);
+            owl_function_adminmsg("BarnOwl Quickstart", result);
+            owl_free(result);
+            owl_free(perlquickstart);
+            return;
+        }
+    }
+    owl_function_adminmsg("BarnOwl Quickstart", message);
+}
+
+
 /* Create an admin message, append it to the global list of messages
  * and redisplay if necessary.
@@ -602,7 +632,9 @@
 
   if (!found) {
-    owl_function_makemsg("already at last%s message%s%s",
+    owl_function_makemsg("already at last%s message%s%s%s",
 			 skip_deleted?" non-deleted":"",
-			 filter?" in ":"", filter?filter:"");
+			 filter?" in ":"", filter?filter:"",
+			 owl_mainwin_is_curmsg_truncated(owl_global_get_mainwin(&g)) ?
+			 ", press Enter to scroll" : "");
     /* if (!skip_deleted) owl_function_beep(); */
   }
Index: help.c
===================================================================
--- help.c	(revision 0398d55781db08fc6d990621fb6a488b6ce1eb49)
+++ help.c	(revision 799b60ea3145bfa2ad773b09544d31a3e30e77ff)
@@ -18,4 +18,6 @@
   owl_fmtext_append_normal
     (&fm, 
+     "  If you're new to BarnOwl, the first thing you should type is\n\n"
+     "    :show quickstart\n\n"
      "  For help on a specific command use 'help <command>'\n"
      "  For information on advanced keys, use 'show keymaps'.\n"
Index: owl.c
===================================================================
--- owl.c	(revision 7ba9ead95bdf4c9a8c760468d3ab6ea6bc1da412)
+++ owl.c	(revision 799b60ea3145bfa2ad773b09544d31a3e30e77ff)
@@ -322,8 +322,8 @@
   sprintf(buff,      "Welcome to barnowl version %s.  Press 'h' for on-line help.            \n", OWL_VERSION_STRING);
   strcat(startupmsg, buff);
+  strcat(startupmsg, "To see a quick introduction, type ':show quickstart'.                  \n");
   strcat(startupmsg, "                                                                       \n");
   strcat(startupmsg, "BarnOwl is free software. Type ':show license' for more                \n");
-  strcat(startupmsg, "information.                                                           \n");
-  strcat(startupmsg, "                                                                 ^ ^   \n");
+  strcat(startupmsg, "information.                                                     ^ ^   \n");
   strcat(startupmsg, "                                                                 OvO   \n");
   strcat(startupmsg, "Please report any bugs or suggestions to bug-barnowl@mit.edu    (   )  \n");
Index: perl/modules/Jabber/lib/BarnOwl/Module/Jabber.pm
===================================================================
--- perl/modules/Jabber/lib/BarnOwl/Module/Jabber.pm	(revision e979da9926f59c32e4a380c936551b11683cfe94)
+++ perl/modules/Jabber/lib/BarnOwl/Module/Jabber.pm	(revision 799b60ea3145bfa2ad773b09544d31a3e30e77ff)
@@ -70,4 +70,5 @@
         $BarnOwl::Hooks::mainLoop->add("BarnOwl::Module::Jabber::onMainLoop");
         $BarnOwl::Hooks::getBuddyList->add("BarnOwl::Module::Jabber::onGetBuddyList");
+        $BarnOwl::Hooks::getQuickstart->add("BarnOwl::Module::Jabber::onGetQuickstart");
         $vars{show} = '';
 	BarnOwl::new_variable_bool("jabber:show_offline_buddies",
@@ -222,4 +223,14 @@
 }
 
+sub onGetQuickstart {
+    return <<'EOF'
+@b(Jabber:)
+Type ':jabberlogin @b(username@mit.edu)' to log in to Jabber. The command
+':jroster sub @b(somebody@gmail.com)' will request that they let you message
+them. Once you get a message saying you are subscribed, you can message
+them by typing ':jwrite @b(somebody@gmail.com)' or just 'j @b(somebody)'.
+EOF
+}
+
 ################################################################################
 ### Owl Commands
Index: perlwrap.pm
===================================================================
--- perlwrap.pm	(revision 740d5f76770d93df8236a59996511e8ce2d1c0c5)
+++ perlwrap.pm	(revision 799b60ea3145bfa2ad773b09544d31a3e30e77ff)
@@ -810,4 +810,12 @@
 displayed in a popup window, with zephyr formatting parsed.
 
+=item $getQuickstart
+
+Called by :show quickstart to display 2-5 lines of help on how to
+start using the protocol. The result from every function registered
+with this hook will be appended and displayed in an admin message,
+with zephyr formatting parsed. The format should be
+"@b(Protocol:)\nSome text.\nMore text.\n"
+
 =back
 
@@ -818,5 +826,6 @@
 our @EXPORT_OK = qw($startup $shutdown
                     $receiveMessage $newMessage
-                    $mainLoop $getBuddyList);
+                    $mainLoop $getBuddyList
+                    $getQuickstart);
 
 our %EXPORT_TAGS = (all => [@EXPORT_OK]);
@@ -828,4 +837,5 @@
 our $mainLoop = BarnOwl::Hook->new;
 our $getBuddyList = BarnOwl::Hook->new;
+our $getQuickstart = BarnOwl::Hook->new;
 
 # Internal startup/shutdown routines called by the C code
@@ -921,4 +931,8 @@
 }
 
+sub _get_quickstart {
+    return join("\n", $getQuickstart->run);
+}
+
 ################################################################################
 # Built-in perl styles
