--- appbar.css	Mon Jan 19 17:26:36 1970
+++ appbar.css	Mon Jan 19 17:26:36 1970
@@ -78,16 +78,19 @@
   border-right: 0 none;
 }
 
-.appbar-block-popup {
+.appbar-block-popup,
+.appbar-block-hover {
   float: left;
 }
 
-.appbar-block-popup .appbar-block-title {
+.appbar-block-popup .appbar-block-title,
+.appbar-block-hover .appbar-block-title {
   cursor: pointer;
   line-height: 25px;
 }
 
-.appbar-block-popup .appbar-block-content {
+.appbar-block-popup .appbar-block-content,
+.appbar-block-hover .appbar-block-content {
   background-color: #FFFFFF;
   border: 1px #B5B5B5 solid;
   bottom: 25px;
@@ -180,7 +183,7 @@
 }
 
 .appbar-new,
-appbar-has-new {
+.appbar-has-new {
   background-color: #FFFFCF;
 }
 
--- appbar.js	Mon Jan 19 17:26:36 1970
+++ appbar.js	Mon Jan 19 17:26:36 1970
@@ -27,6 +27,14 @@
       $('#appbar_count').html('0');
     }
   });
+  context.find('.appbar-block-hover').hover(function() {
+    var content = $(this).find('.appbar-block-content');
+    content.slideToggle('fast');
+    //Hide other open blocks.
+    $('.appbar-block-content:visible').not(content).slideUp('fast');
+  }, function() {
+    $(this).find('.appbar-block-content').slideToggle('fast');
+  });
   context.find('.appbar-block-popup .appbar-block-title').click(function(e) {
     e.preventDefault();
     var content = $(this).prev('.appbar-block-content');
@@ -39,7 +47,7 @@
     e.preventDefault();
     $(this).parent().parent().slideToggle('fast');
   });
-  $('.appbar-block-popup').each(function(index) {
+  $('.appbar-block-popup,.appbar-block-hover').each(function(index) {
     //The -1 is a cheap hack to make this look better when the border is 1px.
     var leftPos = $(this).offset().left - 1;
     $(this).find('.appbar-block-content').css('left', leftPos);
--- appbar.module	Mon Jan 19 17:26:36 1970
+++ appbar.module	Mon Jan 19 17:26:36 1970
@@ -143,6 +143,7 @@
     '#options' => array(
       'popup' => t('Popup (block content appears above bar when title is clicked)'),
       'inline' => t('Inline (block content appears directly on the toolbar)'),
+      'hover' => t('Hover (block content appears above bar when mouse hovers over it)'),
     ),
   );
   $form['appbar']['key'] = array(
@@ -265,6 +266,16 @@
       }
       $blocks .= '</span>';
       $blocks .= '</div>';
+    }
+    elseif ($display_type == 'hover') {
+      //$block->content should be safe at this stage... at least, core assumes it is, so we will too.
+      $blocks .= '<div class="appbar-block appbar-block-hover" id="appbar-block-'. $key .'">
+        <div class="appbar-block-content">'. $block->content .'</div>
+        <span class="appbar-block-title">'.
+          //$block->subject is sanitized already.
+          (empty($block->subject) ? t('<no title>') : $block->subject) .
+        '</span>
+      </div>';
     }
   }
   $existing = array(
--- blue.appbar.css	Mon Jan 19 17:26:36 1970
+++ blue.appbar.css	Mon Jan 19 17:26:36 1970
@@ -8,6 +8,7 @@
 
 #appbar_alerts_list,
 .appbar-block-popup .appbar-block-content,
+.appbar-block-hover .appbar-block-content,
 .appbar-block-controls {
   background-color: #D1E2EF;
   border-color: #5788AF;
--- dark.appbar.css	Mon Jan 19 17:26:36 1970
+++ dark.appbar.css	Mon Jan 19 17:26:36 1970
@@ -8,6 +8,7 @@
 
 #appbar_alerts_list,
 .appbar-block-popup .appbar-block-content,
+.appbar-block-hover .appbar-block-content,
 .appbar-block-controls {
   background-color: #3F3F3F;
   border-color: #2F2F2F;
--- wunderbar.appbar.css	Mon Jan 19 17:26:36 1970
+++ wunderbar.appbar.css	Mon Jan 19 17:26:36 1970
@@ -50,7 +50,8 @@
   margin: 0;
 }
 
-.appbar-block-popup .appbar-block-content {
+.appbar-block-popup .appbar-block-content
+.appbar-block-hover .appbar-block-content, {
   bottom: 31px;
 }
 
