[PATCH v1 1/2] Documentation: Use the furo sphinx theme

Stefan Klug stefan.klug at ideasonboard.com
Wed Aug 14 10:41:02 CEST 2024


Our current theme doesn't handle many of the rst features (namely notes,
proper code highlighting, font formatting).  The furo theme provides a
unobtrusive design which makes the documentation way more fun to read.
The branding is minimal. The libcamera logo is included and theme colors
are set to the libcamera blue.

To get meson/sphinx to successfully compile the docs the package "furo"
needs to be installed (at least on debian based systems).

Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
---
 Documentation/conf.py                        |  17 +-
 Documentation/theme/footer.html              |  14 -
 Documentation/theme/layout.html              | 109 -------
 Documentation/theme/search.html              |  63 ----
 Documentation/theme/static/css/theme.css     | 291 -------------------
 Documentation/theme/static/logo-and-text.svg | 223 ++++++++++++++
 Documentation/theme/static/search.png        | Bin 482 -> 0 bytes
 Documentation/theme/theme.conf               |   7 -
 README.rst                                   |   2 +-
 9 files changed, 238 insertions(+), 488 deletions(-)
 delete mode 100644 Documentation/theme/footer.html
 delete mode 100644 Documentation/theme/layout.html
 delete mode 100644 Documentation/theme/search.html
 delete mode 100644 Documentation/theme/static/css/theme.css
 create mode 100644 Documentation/theme/static/logo-and-text.svg
 delete mode 100644 Documentation/theme/static/search.png
 delete mode 100644 Documentation/theme/theme.conf

diff --git a/Documentation/conf.py b/Documentation/conf.py
index 7eeea7f3865b..022e698efac4 100644
--- a/Documentation/conf.py
+++ b/Documentation/conf.py
@@ -72,8 +72,19 @@ pygments_style = None
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
-html_theme = 'theme'
-html_theme_path = ['.']
+html_theme = "furo"
+
+html_logo = "theme/static/logo-and-text.svg"
+
+html_theme_options = {
+    "light_css_variables": {
+        "color-brand-primary": "#4a9bd9",
+        "color-brand-content": "#4a9bd9F",
+    },
+    "sidebar_hide_name": True,
+}
+
+# html_theme_path = ['.']
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
@@ -84,7 +95,7 @@ html_theme_path = ['.']
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = []
+# html_static_path = []
 
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
diff --git a/Documentation/theme/footer.html b/Documentation/theme/footer.html
deleted file mode 100644
index 12939e8b7c12..000000000000
--- a/Documentation/theme/footer.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{#
-SPDX-License-Identifier: CC-BY-SA-4.0
-#}
-<footer>
-  <div id="signature">
-    {%- if show_copyright %}
-      {%- if hasdoc('copyright') %}
-        {% trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
-      {%- else %}
-        {% trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %}
-      {%- endif %}
-    {%- endif %}
-  </div>
-</footer>
diff --git a/Documentation/theme/layout.html b/Documentation/theme/layout.html
deleted file mode 100644
index 4fffefab62eb..000000000000
--- a/Documentation/theme/layout.html
+++ /dev/null
@@ -1,109 +0,0 @@
-{#
-SPDX-License-Identifier: CC-BY-SA-4.0
-#}
-{# TEMPLATE VAR SETTINGS #}
-{%- set url_root = pathto('', 1) %}
-{%- if url_root == '#' %}{% set url_root = '' %}{% endif %}
-{%- if not embedded and docstitle %}
-  {%- set titlesuffix = " — "|safe + docstitle|e %}
-{%- else %}
-  {%- set titlesuffix = "" %}
-{%- endif %}
-<!DOCTYPE html>
-<head>
-  <meta charset="utf-8">
-  {{ metatags }}
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  {% block htmltitle %}
-  <title>{{ title|striptags|e }}{{ titlesuffix }}</title>
-  {% endblock %}
-
-  {# FAVICON #}
-  {% if favicon %}
-    <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
-  {% endif %}
-
-  {# CSS #}
-
-  {# OPENSEARCH #}
-  {% if not embedded %}
-    {% if use_opensearch %}
-      <link rel="search" type="application/opensearchdescription+xml" title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}" href="{{ pathto('_static/opensearch.xml', 1) }}"/>
-    {% endif %}
-
-  {% endif %}
-
-  {% for cssfile in css_files %}
-    <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
-  {% endfor %}
-
-  {% for cssfile in extra_css_files %}
-    <link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
-  {% endfor %}
-
-  {%- block linktags %}
-    {%- if hasdoc('about') %}
-        <link rel="author" title="{{ _('About these documents') }}"
-              href="{{ pathto('about') }}"/>
-    {%- endif %}
-    {%- if hasdoc('genindex') %}
-        <link rel="index" title="{{ _('Index') }}"
-              href="{{ pathto('genindex') }}"/>
-    {%- endif %}
-    {%- if hasdoc('search') %}
-        <link rel="search" title="{{ _('Search') }}" href="{{ pathto('search') }}"/>
-    {%- endif %}
-    {%- if hasdoc('copyright') %}
-        <link rel="copyright" title="{{ _('Copyright') }}" href="{{ pathto('copyright') }}"/>
-    {%- endif %}
-    <link rel="top" title="{{ docstitle|e }}" href="{{ pathto('index') }}"/>
-    {%- if parents %}
-        <link rel="up" title="{{ parents[-1].title|striptags|e }}" href="{{ parents[-1].link|e }}"/>
-    {%- endif %}
-    {%- if next %}
-        <link rel="next" title="{{ next.title|striptags|e }}" href="{{ next.link|e }}"/>
-    {%- endif %}
-    {%- if prev %}
-        <link rel="prev" title="{{ prev.title|striptags|e }}" href="{{ prev.link|e }}"/>
-    {%- endif %}
-  {%- endblock %}
-  {%- block extrahead %} {% endblock %}
-
-</head>
-
-<body role="document">
-  <header>
-    <div id="navbar">
-      <div class="navbar-brand">
-        <div class="navbar-logo">   _
-+-/ \-+
-| (o) |
-+-----+</div>
-        <div class="navbar-name"><span class="text-light">lib</span>camera</div>
-      </div>
-
-      <div class="navbar">
-        {{ toctree(maxdepth=1) }}
-        <div class="searchbox" role="search">
-          <form class="search" action="{{ pathto('search') }}" method="get">
-            <input type="text" name="q" />
-	    <input type="submit" value="Go" />
-            <input type="hidden" name="check_keywords" value="yes" />
-            <input type="hidden" name="area" value="default" />
-          </form>
-        </div>
-      </div>
-
-    </div>
-  </header>
-
-  <div id="content">
-    {# PAGE CONTENT #}
-    <div class="block">
-      {% block body %}{% endblock %}
-    </div>
-  </div>
-
-  {% include "footer.html" %}
-</body>
-</html>
diff --git a/Documentation/theme/search.html b/Documentation/theme/search.html
deleted file mode 100644
index 00c2af93a1b3..000000000000
--- a/Documentation/theme/search.html
+++ /dev/null
@@ -1,63 +0,0 @@
-{#
-SPDX-License-Identifier: CC-BY-SA-4.0
-#}
-{#
-    basic/search.html
-    ~~~~~~~~~~~~~~~~~
-
-    Template for the search page.
-
-    :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
-    :license: BSD, see LICENSE for details.
-#}
-{%- extends "layout.html" %}
-{% block extrahead %}
-  <script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
-  {%- for scriptfile in script_files %}
-  <script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
-  {%- endfor %}
-  <script type="text/javascript" src="_static/searchtools.js"></script>
-  <script type="text/javascript">
-    jQuery(function() { Search.loadIndex("{{ pathto('searchindex.js', 1) }}"); });
-  </script>
-  {# this is used when loading the search index using $.ajax fails,
-     such as on Chrome for documents on localhost #}
-  <script type="text/javascript" id="searchindexloader"></script>
-{% endblock %}
-{% block body %}
-  <h1 id="search-documentation">{{ _('Search') }}</h1>
-  <div id="fallback" class="admonition warning">
-  <script type="text/javascript">$('#fallback').hide();</script>
-  <p>
-    Please activate JavaScript to enable the search functionality.
-  </p>
-  </div>
-  <p>
-    From here you can search these documents. Enter your search
-    words into the box below and click "search". Note that the search
-    function will automatically search for all of the words. Pages
-    containing fewer words won't appear in the result list.
-  </p>
-  <form action="" method="get">
-    <input type="text" name="q" value="" />
-    <input type="submit" value="{{ _('search') }}" />
-    <span id="search-progress" style="padding-left: 10px"></span>
-  </form>
-  {% if search_performed %}
-    <h2>{{ _('Search Results') }}</h2>
-    {% if not search_results %}
-      <p>{{ _('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.') }}</p>
-    {% endif %}
-  {% endif %}
-  <div id="search-results">
-  {% if search_results %}
-    <ul>
-    {% for href, caption, context in search_results %}
-      <li><a href="{{ pathto(item.href) }}">{{ caption }}</a>
-        <div class="context">{{ context|e }}</div>
-      </li>
-    {% endfor %}
-    </ul>
-  {% endif %}
-  </div>
-{% endblock %}
diff --git a/Documentation/theme/static/css/theme.css b/Documentation/theme/static/css/theme.css
deleted file mode 100644
index d4274ea6f65d..000000000000
--- a/Documentation/theme/static/css/theme.css
+++ /dev/null
@@ -1,291 +0,0 @@
-/* SPDX-License-Identifier: CC-BY-SA-4.0 */
-
-html {
-	background-image: linear-gradient(to bottom right, #4895e1, #56c3ae);
-	background-size: cover;
-	background-repeat: no-repeat;
-	min-height: 100vh;
-}
-
-body {
-	color: rgb(0, 0, 0, 0.65);
-	font-family: Arial, sans-serif;
-	margin: 0px;
-}
-
-a {
-	color: unset;
-	font-weight: bold;
-	text-decoration: underline dotted;
-}
-
-a.headerlink {
-	color: rgba(0, 0, 0, 0.2);
-	font-size: 70%;
-	padding-left: 5px;
-	visibility: hidden;
-}
-
-a.toc-backref {
-	text-decoration: none;
-}
-
-h1:hover a.headerlink,
-h2:hover a.headerlink,
-h3:hover a.headerlink,
-h4:hover a.headerlink,
-h5:hover a.headerlink,
-h6:hover a.headerlink {
-	visibility: visible;
-}
-
-dt {
-	font-weight: bold;
-}
-
-.text-light {
-	color: rgba(255, 255, 255, 0.3);
-}
-
-div#navbar {
-	margin-top: 0px;
-}
-
-div.navbar-brand {
-	color: rgb(255, 255, 255, 1.0);
-	float: left;
-	font-size: 36px;
-	margin: 0px 24px 24px 24px;
-}
-
-div.navbar-logo {
-	float: left;
-	font-family: monospace;
-	font-size: 18px;
-	font-weight: bold;
-	white-space: pre;
-}
-
-div.navbar-name {
-	float: left;
-	color: rgb(255, 255, 255, 1.0);
-	font-size: 34px;
-	margin-top: 31px;
-	margin-left: 10px;
-	padding-top: 1px;
-}
-
-div.navbar {
-	float: right;
-}
-
-div.navbar p.caption {
-	height: 0px;
-	margin: 0px;
-	visibility: hidden;
-}
-
-div.navbar ul {
-	float: left;
-	font-size: 24px;
-	list-style: none;
-	margin-top: 42px;
-	margin-right: 20px;
-	padding-left: 0px;
-}
-
-div.navbar a {
-	font-weight: normal;
-	text-decoration: none;
-}
-
-div.navbar li {
-	float: left;
-	margin-left: 20px;
-	margin-right: 20px;
-	position: relative;
-}
-
-div.navbar li a {
-	color: rgb(255, 255, 255, 0.5);
-	position: relative;
-}
-
-div.navbar li a:before {
-	content: "";
-	position: absolute;
-	width: 100%;
-	height: 2px;
-	bottom: 0;
-	left: 0;
-	background-color: rgb(255, 255, 255, 0.5);
-	visibility: hidden;
-	transform: scaleX(0);
-	transition: all 0.3s ease-in-out 0s;
-}
-
-div.navbar li a:hover {
-	color: rgb(255, 255, 255, 1.0);
-}
-
-div.navbar li a:hover:before {
-	visibility: visible;
-	transform: scaleX(1);
-}
-
-div.navbar li.current a {
-	color: rgb(255, 255, 255, 1.0);
-}
-
-div.navbar li.current a:before {
-	visibility: visible;
-	transform: unset;
-	transition: unset;
-}
-
-div.navbar div.searchbox {
-	background-color: white;
-	float: right;
-	margin-right: 50px;
-	margin-top: 42px;
-}
-
-div.navbar input[type=text] {
-	border-width: 0;
-	height: 2em;
-	margin-left: 10px;
-	margin-right: 5px;
-}
-
-div.navbar input[type=submit] {
-	background-color: white;
-	background-image: url(../search.png);
-	background-repeat: no-repeat;
-	border-width: 0;
-	color: rgba(0, 0, 0, 0);
-	margin-right: 2px;
-	width: 20px;
-}
-
-div#frontpage {
-	clear: both;
-	padding-top: 50px;
-	margin-left: auto;
-	margin-right: auto;
-	width: 75%;
-	display: flex;
-	justify-content: space-between;
-}
-
-div#frontpage > div.block {
-	background-color: white;
-	border-radius: 5px;
-	box-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.2), 0 6px 40px 0 rgba(0, 0, 0, 0.19);
-	color: rgb(0, 0, 0, 0.5);
-	font-size: 20px;
-	margin-bottom: 40px;
-	margin-right: 20px;
-	margin-left: 20px;
-	padding: 20px 60px 20px 60px;
-	text-align: center;
-	width: 50%;
-}
-
-div#frontpage > div.block h1 {
-	font-size: 64px;
-	padding-left: 20%;
-	padding-right: 20%;
-	text-align: center;
-	text-shadow: 4px 4px 5px;
-}
-
-div#content {
-	background-color: white;
-	clear: both;
-	padding-top: 50px;
-	padding-bottom: 50px;
-	margin-left: 0px;
-	margin-right: 0px;
-}
-
-div#content > div.block {
-	font-size: 16px;
-	margin-right: 0px;
-	margin-left: 0px;
-	max-width: 1280px;
-	padding: 0px 60px 0px 60px;
-	text-align: justify;
-}
-
-div#content > div.block h1 {
-	font-size: 40px;
-	margin-top: 0px;
-	text-align: left;
-}
-
-div#content > div.block > div.section {
-	max-width: 800px;
-}
-
-div.local.topic {
-	float: right;
-	background-color: #fcfcff;
-	border: 1px dotted #4896e0;
-	margin-left: 20px;
-	margin-right: 0px;
-	max-width: 15em;
-	padding: 10px 20px 10px 10px;
-	text-align: left;
-}
-
-div.local.topic ul {
-	padding-left: 20px;
-	margin-bottom: 5px;
-}
-
-div.local.topic > ul:before {
-	content: "Contents";
-	display: block;
-	font-weight: bold;
-	margin-bottom: 10px;
-}
-
-div.local.topic a {
-	font-weight: normal;
-	padding-left: 10px;
-	text-decoration: none;
-}
-
-div.highlight-shell > div.highlight > pre,
-pre.console {
-	background-color: #fcfcff;
-	border: 1px dotted #4896e0;
-	margin-left: 0em;
-	padding: 10px;
-	text-align: left;
-}
-
-div.highlight-default > div.highlight > pre,
-pre.diagram {
-	background-color: #fcfcff;
-	border: 1px dotted #4896e0;
-	font-size: 12px;
-	margin-left: 0em;
-	padding: 10px;
-	text-align: left;
-	width: 47em;
-}
-
-div#signature {
-	color: rgb(255, 255, 255, 0.5);
-	margin: 20px;
-	float: right;
-	font-size: 12px;
-}
-
-#libcamera div.toctree-wrapper {
-	height: 0px;
-	margin: 0px;
-	padding: 0px;
-	visibility: hidden;
-}
diff --git a/Documentation/theme/static/logo-and-text.svg b/Documentation/theme/static/logo-and-text.svg
new file mode 100644
index 000000000000..4407f5d5ea89
--- /dev/null
+++ b/Documentation/theme/static/logo-and-text.svg
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="76.987656mm"
+   height="27.246868mm"
+   viewBox="0 0 76.987653 27.246868"
+   version="1.1"
+   id="svg885"
+   inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
+   sodipodi:docname="logo-and-text.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <defs
+     id="defs879">
+    <linearGradient
+       inkscape:collect="always"
+       id="libcamera-gradient">
+      <stop
+         style="stop-color:#4a9cd8;stop-opacity:1;"
+         offset="0"
+         id="stop837" />
+      <stop
+         style="stop-color:#4da5ce;stop-opacity:1;"
+         offset="1"
+         id="stop839" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#libcamera-gradient"
+       id="linearGradient843"
+       x1="36.235832"
+       y1="124.7846"
+       x2="169.38322"
+       y2="124.7846"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5782953,0,0,0.34895428,44.509503,81.842882)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8"
+     inkscape:cx="101.07143"
+     inkscape:cy="113.03571"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer2"
+     showgrid="false"
+     inkscape:window-width="2560"
+     inkscape:window-height="1531"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:showpageshadow="2"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1" />
+  <metadata
+     id="metadata882">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="background"
+     transform="translate(-65.469925,-111.76357)">
+    <rect
+       style="opacity:1;fill:url(#linearGradient843);fill-opacity:1;stroke:#1a1a1a;stroke-width:0.0377345;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
+       id="rect824"
+       width="76.949921"
+       height="27.209133"
+       x="65.488792"
+       y="111.78244" />
+  </g>
+  <g
+     inkscape:label="LogoLayer"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-65.469925,-111.76357)">
+    <g
+       aria-label="   _ +-/ \-+ | (o) | +-----+"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       id="text1432">
+      <path
+         d="m 85.263307,117.54782 v 0.39275 h -2.548682 v -0.39275 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path928" />
+      <path
+         d="m 76.587868,119.76991 v 0.88884 h 0.888834 v 0.49196 h -0.888834 v 0.89296 h -0.489893 v -0.89296 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path930" />
+      <path
+         d="m 78.239446,120.71456 h 1.304313 v 0.60151 h -1.304313 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path932" />
+      <path
+         d="m 82.024228,119.14773 h 0.45682 l -1.624707,3.47885 h -0.45682 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path934" />
+      <path
+         d="m 85.953704,119.14773 1.624707,3.47885 h -0.460954 l -1.624707,-3.47885 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path936" />
+      <path
+         d="m 88.434172,120.71456 h 1.304313 v 0.60151 h -1.304313 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path938" />
+      <path
+         d="m 91.879957,119.76991 v 0.88884 h 0.888835 v 0.49196 h -0.888835 v 0.89296 h -0.489892 v -0.89296 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path940" />
+      <path
+         d="m 76.575465,124.29057 v 4.23333 h -0.469222 v -4.23333 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path942" />
+      <path
+         d="m 82.075904,124.3133 q -0.272851,0.49403 -0.405143,0.95705 -0.132291,0.46302 -0.132291,0.92604 0,0.45889 0.132291,0.92604 0.132292,0.46509 0.405143,0.96119 h -0.471289 q -0.328662,-0.4775 -0.487825,-0.94052 -0.159163,-0.46508 -0.159163,-0.94671 0,-0.47956 0.159163,-0.94464 0.16123,-0.46716 0.487825,-0.93845 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path944" />
+      <path
+         d="m 83.987933,125.64655 q -0.217041,0 -0.341065,0.19224 -0.124023,0.19017 -0.124023,0.53123 0,0.34107 0.124023,0.53331 0.124024,0.19016 0.341065,0.19016 0.219108,0 0.343131,-0.19016 0.124024,-0.19224 0.124024,-0.53331 0,-0.34106 -0.124024,-0.53123 -0.124023,-0.19224 -0.343131,-0.19224 z m -1.070736,0.72347 q 0,-0.56017 0.289388,-0.88676 0.291455,-0.32866 0.781348,-0.32866 0.491959,0 0.781347,0.32866 0.291455,0.32659 0.291455,0.88676 0,0.56018 -0.291455,0.88884 -0.289388,0.32659 -0.781347,0.32659 -0.489893,0 -0.781348,-0.32659 -0.289388,-0.32866 -0.289388,-0.88884 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path946" />
+      <path
+         d="m 85.902027,124.3133 h 0.471289 q 0.326595,0.47129 0.485759,0.93845 0.16123,0.46508 0.16123,0.94464 0,0.48163 -0.159163,0.94671 -0.159164,0.46302 -0.487826,0.94052 h -0.471289 q 0.272852,-0.4961 0.405143,-0.96119 0.132292,-0.46715 0.132292,-0.92604 0,-0.46302 -0.132292,-0.92604 -0.132291,-0.46302 -0.405143,-0.95705 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path948" />
+      <path
+         d="m 91.867555,124.29057 v 4.23333 h -0.469222 v -4.23333 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path950" />
+      <path
+         d="m 76.587868,130.35324 v 0.88884 h 0.888834 v 0.49196 h -0.888834 v 0.89297 h -0.489893 v -0.89297 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path952" />
+      <path
+         d="m 78.239446,131.29789 h 1.304313 v 0.60151 h -1.304313 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path954" />
+      <path
+         d="m 80.788128,131.29789 h 1.304313 v 0.60151 h -1.304313 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path956" />
+      <path
+         d="m 83.33681,131.29789 h 1.304313 v 0.60151 H 83.33681 Z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path958" />
+      <path
+         d="m 85.885491,131.29789 h 1.304313 v 0.60151 h -1.304313 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path960" />
+      <path
+         d="m 88.434172,131.29789 h 1.304313 v 0.60151 h -1.304313 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path962" />
+      <path
+         d="m 91.879957,130.35324 v 0.88884 h 0.888835 v 0.49196 h -0.888835 v 0.89297 h -0.489892 v -0.89297 h -0.892969 v -0.49196 h 0.892969 v -0.88884 z"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.23333px;font-family:monospace;-inkscape-font-specification:'monospace, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.264583"
+         id="path964" />
+    </g>
+    <g
+       aria-label="libcamera"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;line-height:1.25;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       id="text1442">
+      <path
+         d="m 97.705568,129.92384 q -0.626534,0 -0.948267,-0.36407 -0.313267,-0.37253 -0.313267,-1.07526 v -4.60587 h 0.6858 v 4.55507 q 0,0.90593 0.719667,0.90593 0.211667,0 0.381,-0.0508 l -0.01693,0.57573 q -0.262467,0.0593 -0.508,0.0593 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941"
+         id="path909" />
+      <path
+         d="m 98.865497,124.70837 v -0.77046 h 0.846666 v 0.77046 z m 0.08467,5.13927 v -4.1148 h 0.685799 v 4.1148 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941"
+         id="path911" />
+      <path
+         d="m 102.99722,129.92384 q -0.49107,0 -0.8636,-0.22013 -0.36407,-0.22014 -0.55034,-0.60114 v 0.74507 h -0.66886 v -5.969 h 0.6858 v 2.5654 q 0.1778,-0.36407 0.55033,-0.57573 0.37253,-0.21167 0.84667,-0.21167 0.55033,0 0.95673,0.26247 0.41487,0.254 0.635,0.7366 0.2286,0.47413 0.2286,1.13453 0,0.65193 -0.2286,1.13453 -0.22013,0.47414 -0.635,0.7366 -0.4064,0.26247 -0.95673,0.26247 z m -0.14394,-0.55033 q 0.57574,0 0.92287,-0.4064 0.34713,-0.41487 0.34713,-1.17687 0,-0.77047 -0.34713,-1.17687 -0.34713,-0.4064 -0.92287,-0.4064 -0.57573,0 -0.92286,0.4064 -0.34714,0.4064 -0.34714,1.17687 0,0.762 0.34714,1.17687 0.34713,0.4064 0.92286,0.4064 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#ffffff;fill-opacity:0.352941"
+         id="path913" />
+      <path
+         d="m 107.5946,129.92384 q -0.61806,0 -1.0668,-0.26247 -0.44873,-0.27093 -0.69426,-0.75353 -0.23707,-0.49107 -0.23707,-1.143 0,-0.98213 0.5334,-1.54093 0.5334,-0.56727 1.46473,-0.56727 0.381,0 0.75354,0.13547 0.37253,0.13546 0.61806,0.381 l -0.23706,0.49953 q -0.24554,-0.23707 -0.54187,-0.34713 -0.28787,-0.11007 -0.55033,-0.11007 -0.64347,0 -0.9906,0.4064 -0.34714,0.39793 -0.34714,1.15147 0,0.7366 0.34714,1.1684 0.34713,0.42333 0.9906,0.42333 0.26246,0 0.55033,-0.11007 0.29633,-0.11006 0.54187,-0.3556 l 0.23706,0.49954 q -0.24553,0.24553 -0.62653,0.38946 -0.37253,0.13547 -0.74507,0.13547 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path915" />
+      <path
+         d="m 111.03205,129.92384 q -0.42333,0 -0.762,-0.16087 -0.3302,-0.16933 -0.52493,-0.4572 -0.19474,-0.28786 -0.19474,-0.64346 0,-0.44874 0.2286,-0.7112 0.23707,-0.26247 0.77047,-0.37254 0.54187,-0.11853 1.4732,-0.11853 h 0.27093 v -0.26247 q 0,-0.52493 -0.22013,-0.75353 -0.21167,-0.23707 -0.6858,-0.23707 -0.37253,0 -0.71967,0.11007 -0.34713,0.1016 -0.7112,0.33867 l -0.23706,-0.49954 q 0.32173,-0.2286 0.77893,-0.36406 0.46567,-0.13547 0.889,-0.13547 0.79587,0 1.17687,0.38947 0.38946,0.38946 0.38946,1.21073 v 2.5908 h -0.64346 v -0.7112 q -0.16087,0.36407 -0.49954,0.57573 -0.3302,0.21167 -0.77893,0.21167 z m 0.11007,-0.51647 q 0.508,0 0.82973,-0.34713 0.32173,-0.3556 0.32173,-0.89747 v -0.254 h -0.26246 q -0.6858,0 -1.08374,0.0677 -0.38946,0.0593 -0.55033,0.22013 -0.1524,0.1524 -0.1524,0.42333 0,0.34714 0.23707,0.56727 0.24553,0.22013 0.6604,0.22013 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path917" />
+      <path
+         d="m 114.24091,129.84764 v -4.1148 h 0.66886 v 0.69427 q 0.18627,-0.37254 0.51647,-0.56727 0.3302,-0.2032 0.77047,-0.2032 0.9652,0 1.23613,0.8382 0.18627,-0.38947 0.55033,-0.6096 0.36407,-0.2286 0.8382,-0.2286 1.3716,0 1.3716,1.6256 v 2.5654 h -0.6858 v -2.53153 q 0,-0.56727 -0.2032,-0.82974 -0.19473,-0.27093 -0.65193,-0.27093 -0.49953,0 -0.79587,0.3556 -0.29633,0.3556 -0.29633,0.94827 v 2.32833 h -0.6858 v -2.53153 q 0,-0.56727 -0.2032,-0.82974 -0.19473,-0.27093 -0.65193,-0.27093 -0.508,0 -0.80434,0.3556 -0.28786,0.3556 -0.28786,0.94827 v 2.32833 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path919" />
+      <path
+         d="m 123.32563,129.92384 q -0.97367,0 -1.54093,-0.56727 -0.56727,-0.57573 -0.56727,-1.55786 0,-0.635 0.254,-1.1176 0.254,-0.49107 0.69427,-0.75354 0.44873,-0.27093 1.03293,-0.27093 0.8382,0 1.31233,0.54187 0.47414,0.5334 0.47414,1.4732 v 0.26246 h -3.0988 q 0.0339,0.70274 0.4064,1.07527 0.37253,0.36407 1.03293,0.36407 0.37253,0 0.7112,-0.11007 0.33867,-0.11853 0.64347,-0.381 l 0.23706,0.4826 q -0.2794,0.26247 -0.7112,0.41487 -0.4318,0.14393 -0.88053,0.14393 z m -0.11007,-3.7592 q -0.5842,0 -0.92286,0.36407 -0.33867,0.36406 -0.39794,0.95673 h 2.49767 q -0.0254,-0.62653 -0.3302,-0.97367 -0.29633,-0.34713 -0.84667,-0.34713 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path921" />
+      <path
+         d="m 125.97569,129.84764 v -4.1148 h 0.66887 v 0.7366 q 0.3302,-0.74507 1.35467,-0.82127 l 0.24553,-0.0254 0.0508,0.59267 -0.4318,0.0508 q -0.5842,0.0508 -0.889,0.37253 -0.3048,0.31327 -0.3048,0.8636 v 2.34527 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path923" />
+      <path
+         d="m 130.25982,129.92384 q -0.42334,0 -0.762,-0.16087 -0.3302,-0.16933 -0.52494,-0.4572 -0.19473,-0.28786 -0.19473,-0.64346 0,-0.44874 0.2286,-0.7112 0.23707,-0.26247 0.77047,-0.37254 0.54186,-0.11853 1.4732,-0.11853 h 0.27093 v -0.26247 q 0,-0.52493 -0.22013,-0.75353 -0.21167,-0.23707 -0.6858,-0.23707 -0.37254,0 -0.71967,0.11007 -0.34713,0.1016 -0.7112,0.33867 l -0.23707,-0.49954 q 0.32174,-0.2286 0.77894,-0.36406 0.46566,-0.13547 0.889,-0.13547 0.79586,0 1.17686,0.38947 0.38947,0.38946 0.38947,1.21073 v 2.5908 h -0.64347 v -0.7112 q -0.16086,0.36407 -0.49953,0.57573 -0.3302,0.21167 -0.77893,0.21167 z m 0.11006,-0.51647 q 0.508,0 0.82974,-0.34713 0.32173,-0.3556 0.32173,-0.89747 v -0.254 h -0.26247 q -0.6858,0 -1.08373,0.0677 -0.38947,0.0593 -0.55033,0.22013 -0.1524,0.1524 -0.1524,0.42333 0,0.34714 0.23706,0.56727 0.24554,0.22013 0.6604,0.22013 z"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.46667px;font-family:'Nunito Sans';-inkscape-font-specification:'Nunito Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff"
+         id="path925" />
+    </g>
+  </g>
+</svg>
diff --git a/Documentation/theme/static/search.png b/Documentation/theme/static/search.png
deleted file mode 100644
index a93c40eb08106554488deaed910aba0f5aef5ec5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 482
zcmV<80UiE{P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000ie
z000ie0hKEb8vp<Slu1NER49>S{Qv(y11W$BjsN}6-{)Vx|M`d06c#vZ at BJ4Ihb|v`
z{Q4gQ11Af!uc~y5qrR#TFPa8Mh?6FtzL~%Ctf7Qpw2q<#567){pJ$)D^X1p?EfEg3
za$+bt{{R1f{K;#k=A~KNPW}D&?>`KD`0>kj!7kC>HSfRw{Eq|}{{R0UwEB?Fj4jBj
zA>iq!ZyasQJC9yP7Gz>zU^w*fRiw586C)#<bESAW9Tmh6KYooKN}qoImf+#Q8YU7v
zoF9JtLf4=mz<u-WC#)K-zxk-Z&yB7jNJDnvrTZU${zg-M;^~_cPv3 at W$)Rf~w$Nl|
zWb|2a;MLb3aEbFT-iNL^%+1QID8PfP0U8e%UcUEQzW>wD-<~Q`l02L at -hA47{{;&Z
z)31O31UcCD$2#ka3!-RXU|{(0<Ja`FxA)wC@!`iWMFE}wbr~Z`A=?GJ-~IR{%Ef*#
z&Q(){4 at Co3aOU|t=f!(I{rV%x!*M9iRYiywJ at KId6G@@%QBFLpEYH9E$l89Iunm|1
Y03N>L+`-G70ssI207*qoM6N<$g81y{PXGV_

diff --git a/Documentation/theme/theme.conf b/Documentation/theme/theme.conf
deleted file mode 100644
index f2ab39c33c5b..000000000000
--- a/Documentation/theme/theme.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-# SPDX-License-Identifier: CC-BY-SA-4.0
-
-[theme]
-inherit = basic
-stylesheet = css/theme.css
-
-[options]
diff --git a/README.rst b/README.rst
index 92f165022988..2fc98d2eaf15 100644
--- a/README.rst
+++ b/README.rst
@@ -70,7 +70,7 @@ for device hotplug enumeration: [optional]
         libudev-dev
 
 for documentation: [optional]
-        python3-sphinx doxygen graphviz texlive-latex-extra
+        python3-sphinx furo doxygen graphviz texlive-latex-extra
 
 for gstreamer: [optional]
         libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
-- 
2.43.0



More information about the libcamera-devel mailing list