Index: trunk/wp-includes/theme.php
===================================================================
--- trunk/wp-includes/theme.php	(revision 19631)
+++ trunk/wp-includes/theme.php	(working copy)
@@ -171,9 +171,9 @@
  *
  * The style.css file must contain theme name, theme URI, and description. The
  * data can also contain author URI, author, template (parent template),
- * version, status, and finally tags. Some of these are not used by WordPress
- * administration panels, but are used by theme directory web sites which list
- * the theme.
+ * version, status, tags, and a recommended display type for the front page
+ * (static or posts). Some of these are not used by WordPress administration
+ * panels, but are used by theme directory web sites which list the theme.
  *
  * @since 1.5.0
  *
@@ -190,7 +190,8 @@
 		'Version' => 'Version',
 		'Template' => 'Template',
 		'Status' => 'Status',
-		'Tags' => 'Tags'
+		'Tags' => 'Tags',
+		'FrontPage' => 'Front Page'
 		);
 
 	$themes_allowed_tags = array(
@@ -207,6 +208,12 @@
 		'em' => array(),
 		'strong' => array()
 	);
+	
+	$themes_allowed_front_page = array(
+		'posts',
+		'static',
+		'null' // default - means neither posts nor static holds more weight
+	);
 
 	$theme_data = get_file_data( $theme_file, $default_headers, 'theme' );
 
@@ -242,6 +249,10 @@
 			$theme_data['Author'] = sprintf( '<a href="%1$s" title="%2$s">%3$s</a>', $theme_data['AuthorURI'], esc_attr__( 'Visit author homepage' ), $theme_data['AuthorName'] );
 		}
 	}
+	
+	if ( ! in_array( strtolower( $theme_data['FrontPage'] ), $themes_allowed_front_page ) ) {
+		$theme_data['FrontPage'] = 'null';
+	}
 
 	return $theme_data;
 }
@@ -437,6 +448,7 @@
 			'Tags' => $theme_data['Tags'],
 			'Theme Root' => $theme_root,
 			'Theme Root URI' => str_replace( WP_CONTENT_DIR, content_url(), $theme_root ),
+			'Front Page' => $theme_data['FrontPage']
 		);
 	}
 
@@ -1247,7 +1259,7 @@
  * @param string $stylesheet Stylesheet name.
  */
 function switch_theme($template, $stylesheet) {
-	global $wp_theme_directories, $sidebars_widgets;
+	global $wp_theme_directories, $sidebars_widgets, $wp_recommended_front_page;
 
 	if ( is_array( $sidebars_widgets ) )
 		set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $sidebars_widgets ) );
@@ -1269,6 +1281,11 @@
 		$default_theme_mods = (array) get_option( "mods_$theme" );
 		add_option( "theme_mods_$stylesheet", $default_theme_mods );
 	}
+	
+	$current_theme_options = get_theme( $theme );
+	if ( 'null' !== $current_theme_options['Front Page'] ) {
+		$wp_recommended_front_page = $current_theme_options['Front Page'];
+	}
 
 	update_option( 'theme_switched', $old_theme );
 	do_action( 'switch_theme', $theme );
Index: trunk/wp-admin/themes.php
===================================================================
--- trunk/wp-admin/themes.php	(revision 19631)
+++ trunk/wp-admin/themes.php	(working copy)
@@ -18,7 +18,12 @@
 	if ( 'activate' == $_GET['action'] ) {
 		check_admin_referer('switch-theme_' . $_GET['template']);
 		switch_theme($_GET['template'], $_GET['stylesheet']);
-		wp_redirect( admin_url('themes.php?activated=true') );
+		
+		// After switch_theme, the recommended front page global is available.
+		global $wp_recommended_front_page;
+		$front_page_query = ( isset( $wp_recommended_front_page ) ) ? '&frontpage=' . urlencode( $wp_recommended_front_page ) : '';
+		
+		wp_redirect( admin_url('themes.php?activated=true' . $front_page_query) );
 		exit;
 	} elseif ( 'delete' == $_GET['action'] ) {
 		check_admin_referer('delete-theme_' . $_GET['template']);
@@ -77,13 +82,24 @@
 
 <?php if ( ! validate_current_theme() ) : ?>
 <div id="message1" class="updated"><p><?php _e('The active theme is broken. Reverting to the default theme.'); ?></p></div>
-<?php elseif ( isset($_GET['activated']) ) :
-		if ( isset($wp_registered_sidebars) && count( (array) $wp_registered_sidebars ) && current_user_can('edit_theme_options') ) { ?>
-<div id="message2" class="updated"><p><?php printf( __('New theme activated. This theme supports widgets, please visit the <a href="%s">widgets settings</a> screen to configure them.'), admin_url( 'widgets.php' ) ); ?></p></div><?php
-		} else { ?>
-<div id="message2" class="updated"><p><?php printf( __( 'New theme activated. <a href="%s">Visit site</a>' ), home_url( '/' ) ); ?></p></div><?php
-		}
-	elseif ( isset($_GET['deleted']) ) : ?>
+<?php elseif ( isset($_GET['activated']) ) : ?>
+<div id="message2" class="updated"><p>
+<?php
+if ( isset($wp_registered_sidebars) && count( (array) $wp_registered_sidebars ) && current_user_can('edit_theme_options') ) {
+	$theme_msg2_out = sprintf( __('New theme activated. This theme supports widgets, please visit the <a href="%s">widgets settings</a> screen to configure them.'), admin_url( 'widgets.php' ) );
+} else {
+	$theme_msg2_out = sprintf( __( 'New theme activated. <a href="%s">Visit site</a>' ), home_url( '/' ) );
+}
+
+if ( 'static' == $_GET['frontpage'] && current_user_can('manage_options') ) {
+	$theme_msg2_out .= sprintf( __( ' This theme works best with a static front page. Please visit the <a href="%s">reading settings</a> screen to configure your front page preferences.' ), get_admin_url( null, 'options-reading.php' ) );
+}
+
+echo $theme_msg2_out;
+unset( $theme_msg2_out );
+?>		
+</p></div>
+<?php elseif ( isset($_GET['deleted']) ) : ?>
 <div id="message3" class="updated"><p><?php _e('Theme deleted.') ?></p></div>
 <?php endif; ?>
 
