Selecting a theme#

What if you wanted a different appearance for your website? Sphinx uses the alabaster theme by default, but it also ships with a number of built-in themes you can choose. You can also install and use a theme from PyPI. We’ll cover how to do both in this section.

Using a built-in theme#

First, browse through Sphinx’s built-in themes and select your favourite. We picked the theme classic. In conf.py, navigate to the section Options for HTML output and edit the html_theme variable:

# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

html_theme = 'classic'

Now from the docs directory re-build your HTML files:

# from the docs dir
make html

And view index.html in your browser, you should be able to see that the theme has changed.

Using a PyPI Theme#

In addition to Sphinx’s built-in themes, there are many themes available on PyPI. Our favourite is furo. Let’s install it:

pip install furo

Now modify conf.py again to change the theme:

# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

html_theme = 'furo'

And re-build your and preview your docs:

make html

commit and push your changes:

# from the project root
git add docs/conf.py
git commit -m "Use furo theme"
git push origin main

Adding a favicon#

To finish styling our website, let’s see how we can add a favicon.

Sphinx has integrated support for this feature. Find an image you would like to use and move it to the _static directory under docs. You could also use the one provided in images/favicon.ico.

Then in your conf.py, add

html_favicon = "_static/favicon.ico"

and run again

make html

The favicon should now appear on your browser tab!

Commit and push your changes:

# from the project root
git add docs/conf.py docs/_static/favicon.ico
git commit -m "Add favicon"
git push origin main

{: .hint } 🙌 You have now reached the 06-select-theme part of the tutorial. If not, check out that branch and continue from there.


[Previous: Generating HTML docs from docstrings](./5-generating-docs.md){: .btn .float-left} [Next: Hosting on GitHub Pages](./7-hosting-on-github-pages.md){: .btn .btn-purple .float-right}