Merge OpenSearch-related changes.
diff --git a/Doc/conf.py b/Doc/conf.py
index 27f5ed3..8b1514b 100644
--- a/Doc/conf.py
+++ b/Doc/conf.py
@@ -86,6 +86,12 @@
     'index': 'indexcontent.html',
 }
 
+# Output an OpenSearch description file.
+html_use_opensearch = 'http://docs.python.org/dev/3.0'
+
+# Additional static files.
+html_static_path = ['tools/sphinxext/static']
+
 # Output file base name for HTML help builder.
 htmlhelp_basename = 'python' + release.replace('.', '')
 
diff --git a/Doc/tools/sphinxext/layout.html b/Doc/tools/sphinxext/layout.html
new file mode 100644
index 0000000..689cbda
--- /dev/null
+++ b/Doc/tools/sphinxext/layout.html
@@ -0,0 +1,5 @@
+{% extends "!layout.html" %}
+{% block rootrellink %}
+<li><img src="{{ pathto('_static/py.png', 1) }}" alt="" style="vertical-align: middle; margin-top: -1px"/></li>
+{{ super() }}
+{% endblock %}
diff --git a/Doc/tools/sphinxext/opensearch.xml b/Doc/tools/sphinxext/opensearch.xml
new file mode 100644
index 0000000..d672c2e
--- /dev/null
+++ b/Doc/tools/sphinxext/opensearch.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+  <ShortName>Python Docs</ShortName>
+  <LongName>Python Documentation</LongName>
+  <Description>Search the Python documentation</Description>
+  <InputEncoding>utf-8</InputEncoding>
+  <Url type="text/html" method="get" template="{{ pathto('search') }}?">
+    <Param name="q" value="{searchTerms}" />
+    <Param name="check_keywords" value="yes" />
+    <Param name="area" value="default" />
+  </Url>
+  <Image height="16" width="16" type="image/x-icon">http://www.python.org/images/favicon16x16.ico</Image>
+</OpenSearchDescription>
+
diff --git a/Doc/tools/sphinxext/static/py.png b/Doc/tools/sphinxext/static/py.png
new file mode 100644
index 0000000..93e4a02
--- /dev/null
+++ b/Doc/tools/sphinxext/static/py.png
Binary files differ