From: classabbyamp <classabbyamp@users.noreply.github.com>
To: ml@inbox.vuxu.org
Subject: [PR PATCH] [RFC] Create a version of Manual.md in mdBook
Date: Sat, 26 Feb 2022 03:49:33 +0100 [thread overview]
Message-ID: <gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-35856@inbox.vuxu.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 1092 bytes --]
There is a new pull request by classabbyamp against master on the void-packages repository
https://github.com/classabbyamp/void-packages manual-mdbook
https://github.com/void-linux/void-packages/pull/35856
[RFC] Create a version of Manual.md in mdBook
This idea was mentioned once on IRC, so I thought I might take a stab at it and submit it for discussion.
I set out to create a version of `Manual.md` that is a bit more user/noob-friendly than a giant monolith of a document, while still preserving the workflow surrounding it. Thus, I created a mdBook pre-processor that processes Manual.md and builds the book, without the need for converting Manual.md *into* an mdBook.
A live example of what is currently generated by mdBook is available here: https://book.qrm.cat/
Note that this is not fully complete, but is a decent working prototype. There is still a little work to be done to set up some CI to check and deploy the generated book, as well as some tweaks in the area of theming.
A patch file from https://github.com/void-linux/void-packages/pull/35856.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-manual-mdbook-35856.patch --]
[-- Type: text/x-diff, Size: 32936 bytes --]
From c5c39afae060aa8d4e2dfb17c369eaf3828c4ed8 Mon Sep 17 00:00:00 2001
From: classabbyamp <dev@kb6.ee>
Date: Fri, 25 Feb 2022 21:35:29 -0500
Subject: [PATCH 1/2] Manual.md: make heading levels match Table of Contents
---
Manual.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/Manual.md b/Manual.md
index 40b2321f7a25..5cb2e1d6c1f2 100644
--- a/Manual.md
+++ b/Manual.md
@@ -814,10 +814,10 @@ not a particular package is present in `makedepends` or `hostmakedepends`, that
package shouldn't be added as a build time dependency.
<a id="repositories"></a>
-#### Repositories
+### Repositories
<a id="repo_by_branch"></a>
-##### Repositories defined by Branch
+#### Repositories defined by Branch
The global repository takes the name of
the current branch, except if the name of the branch is master. Then the resulting
@@ -825,7 +825,7 @@ repository will be at the global scope. The usage scenario is that the user can
update multiple packages in a second branch without polluting his local repository.
<a id="pkg_defined_repo"></a>
-##### Package defined Repositories
+#### Package defined Repositories
The second way to define a repository is by setting the `repository` variable in
a template. This way the maintainer can define repositories for a specific
@@ -1909,7 +1909,7 @@ If it is running under another architecture it tries to use the host's `install-
utility.
<a id="triggers_initramfs_regenerate"></a>
-### initramfs-regenerate
+#### initramfs-regenerate
The initramfs-regenerate trigger will trigger the regeneration of all kernel
initramfs images after package installation or removal. The trigger must be
From 322e4fe5cb1dce4a3700c9991abcd1a36e1e633a Mon Sep 17 00:00:00 2001
From: classabbyamp <dev@kb6.ee>
Date: Fri, 25 Feb 2022 21:36:12 -0500
Subject: [PATCH 2/2] manual/: Add script to generate mdbook of Manual.md
---
.gitignore | 1 +
manual/book.toml | 13 +
manual/generate_mdbook.py | 104 ++++++++
manual/src/SUMMARY.md | 1 +
manual/src/theme/book.js | 104 ++++++++
manual/src/theme/css/general.css | 419 +++++++++++++++++++++++++++++++
manual/src/theme/css/print.css | 54 ++++
manual/src/theme/favicon.png | Bin 0 -> 5800 bytes
manual/src/theme/index.hbs | 157 ++++++++++++
9 files changed, 853 insertions(+)
create mode 100644 manual/book.toml
create mode 100644 manual/generate_mdbook.py
create mode 100644 manual/src/SUMMARY.md
create mode 100644 manual/src/theme/book.js
create mode 100644 manual/src/theme/css/general.css
create mode 100644 manual/src/theme/css/print.css
create mode 100644 manual/src/theme/favicon.png
create mode 100644 manual/src/theme/index.hbs
diff --git a/.gitignore b/.gitignore
index 958f644eee94..52806ca91964 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ etc/conf.*
etc/virtual
etc/xbps.d/custom
.xbps-checkvers*.plist
+/manual/book/
diff --git a/manual/book.toml b/manual/book.toml
new file mode 100644
index 000000000000..5ef5064d8928
--- /dev/null
+++ b/manual/book.toml
@@ -0,0 +1,13 @@
+[book]
+authors = ["The Void Linux Team"]
+multilingual = false
+src = "src"
+title = "XBPS Source Packages Manual"
+
+[preprocessor.gen_manual]
+command = "python3 generate_mdbook.py"
+
+[output.html]
+# TODO: this should be a submodule or something
+# to avoid de-syncing with void-docs/src/theme
+theme = "src/theme"
diff --git a/manual/generate_mdbook.py b/manual/generate_mdbook.py
new file mode 100644
index 000000000000..2e77c40f55b1
--- /dev/null
+++ b/manual/generate_mdbook.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python3
+
+from dataclasses import asdict, dataclass, field
+import json
+from pathlib import Path
+import re
+import sys
+from typing import Optional
+
+
+HEADING_RE = re.compile(r"###? (?:\w|\d)")
+ANCHOR_RE = re.compile(r'<a id=".+"></a>')
+
+
+@dataclass
+class Chapter:
+ name: str
+ content: str
+ path: str
+ source_path: str
+ number: Optional[list[int]] = None
+ sub_items: list['Chapter'] = field(default_factory=list)
+ parent_names: list[str] = field(default_factory=list)
+
+
+@dataclass
+class Section:
+ Chapter: Chapter
+
+
+@dataclass
+class Book:
+ sections: list[Section]
+
+
+def slugify(s: str) -> str:
+ return s.lower().replace(" ", "-").replace(".", "-").replace("`", "")
+
+
+if __name__ == "__main__":
+ if len(sys.argv) > 1:
+ if sys.argv[1] == "supports":
+ raise SystemExit
+
+ manual = Path("../Manual.md").read_text().split("\n")
+
+ sections = []
+ curr_chapter = []
+ hlevel = None
+ heading = None
+ fn = None
+ in_section = False
+
+ for line in manual:
+ if HEADING_RE.match(line):
+ if in_section:
+ if ANCHOR_RE.search(curr_chapter[-1]):
+ del curr_chapter[-1]
+
+ sections.append(
+ Section(
+ Chapter(
+ name=heading,
+ number=num,
+ content="\n".join(curr_chapter),
+ path=fn,
+ source_path=fn,
+ )
+ )
+ )
+ curr_chapter = ["#" + line.lstrip("#")]
+ hlevel, heading = line.split(" ", maxsplit=1)
+ fn = f"./{slugify(heading)}.md"
+
+ match len(hlevel):
+ # intro/help
+ case 2:
+ num = None
+ # other "top" level headings
+ case 3:
+ num = [ len(sections) ]
+ case _:
+ continue
+
+ in_section = True
+ elif in_section:
+ curr_chapter.append(line.replace("####", "##", 1))
+
+ # get the last section
+ sections.append(
+ Section(
+ Chapter(
+ name=heading,
+ number=num,
+ content="\n".join(curr_chapter),
+ path=fn,
+ source_path=fn,
+ )
+ )
+ )
+
+ # mdBook requires this key in the emitted json, for reasons unknown
+ book = asdict(Book(sections)) | {"__non_exhaustive": None}
+ print(json.dumps(book))
diff --git a/manual/src/SUMMARY.md b/manual/src/SUMMARY.md
new file mode 100644
index 000000000000..73fa82d6e79c
--- /dev/null
+++ b/manual/src/SUMMARY.md
@@ -0,0 +1 @@
+<!-- leave this file empty. mdBook needs it but it will not be used -->
diff --git a/manual/src/theme/book.js b/manual/src/theme/book.js
new file mode 100644
index 000000000000..853247bfc4c9
--- /dev/null
+++ b/manual/src/theme/book.js
@@ -0,0 +1,104 @@
+"use strict";
+
+// Fix back button cache problem
+window.onunload = function () { };
+
+(function sidebar() {
+ var html = document.querySelector("html");
+ var sidebar = document.getElementById("sidebar");
+ var sidebarLinks = document.querySelectorAll('#sidebar a');
+ var sidebarToggleButton = document.getElementById("sidebar-toggle");
+ var firstContact = null;
+
+ function showSidebar() {
+ html.classList.remove('sidebar-hidden')
+ html.classList.add('sidebar-visible');
+ Array.from(sidebarLinks).forEach(function (link) {
+ link.setAttribute('tabIndex', 0);
+ });
+ sidebarToggleButton.setAttribute('aria-expanded', true);
+ sidebar.setAttribute('aria-hidden', false);
+ try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { }
+ }
+
+ function hideSidebar() {
+ html.classList.remove('sidebar-visible')
+ html.classList.add('sidebar-hidden');
+ Array.from(sidebarLinks).forEach(function (link) {
+ link.setAttribute('tabIndex', -1);
+ });
+ sidebarToggleButton.setAttribute('aria-expanded', false);
+ sidebar.setAttribute('aria-hidden', true);
+ try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { }
+ }
+
+ // Toggle sidebar
+ sidebarToggleButton.addEventListener('click', function sidebarToggle() {
+ if (html.classList.contains("sidebar-hidden")) {
+ showSidebar();
+ } else if (html.classList.contains("sidebar-visible")) {
+ hideSidebar();
+ } else {
+ if (getComputedStyle(sidebar)['transform'] === 'none') {
+ hideSidebar();
+ } else {
+ showSidebar();
+ }
+ }
+ });
+
+ document.addEventListener('touchstart', function (e) {
+ firstContact = {
+ x: e.touches[0].clientX,
+ time: Date.now()
+ };
+ }, { passive: true });
+
+ document.addEventListener('touchmove', function (e) {
+ if (!firstContact)
+ return;
+
+ var curX = e.touches[0].clientX;
+ var xDiff = curX - firstContact.x,
+ tDiff = Date.now() - firstContact.time;
+
+ if (tDiff < 250 && Math.abs(xDiff) >= 150) {
+ if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300))
+ showSidebar();
+ else if (xDiff < 0 && curX < 300)
+ hideSidebar();
+
+ firstContact = null;
+ }
+ }, { passive: true });
+
+ // Scroll sidebar to current active section
+ var activeSection = sidebar.querySelector(".active");
+ if (activeSection) {
+ sidebar.scrollTop = activeSection.offsetTop;
+ }
+})();
+
+(function chapterNavigation() {
+ document.addEventListener('keydown', function (e) {
+ if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; }
+ if (window.search && window.search.hasFocus()) { return; }
+
+ switch (e.key) {
+ case 'ArrowRight':
+ e.preventDefault();
+ var nextButton = document.querySelector('.nav-chapters.next');
+ if (nextButton) {
+ window.location.href = nextButton.href;
+ }
+ break;
+ case 'ArrowLeft':
+ e.preventDefault();
+ var previousButton = document.querySelector('.nav-chapters.previous');
+ if (previousButton) {
+ window.location.href = previousButton.href;
+ }
+ break;
+ }
+ });
+})();
diff --git a/manual/src/theme/css/general.css b/manual/src/theme/css/general.css
new file mode 100644
index 000000000000..e0255a8281b1
--- /dev/null
+++ b/manual/src/theme/css/general.css
@@ -0,0 +1,419 @@
+body {
+ font-family: 'Ubuntu', sans-serif;
+ font-size: 1rem;
+ line-height: 1.5;
+ color: #333;
+ margin: 0;
+ background-color: #ffffff;
+}
+h1, h2, h3, h4, h5, h6 { color: #333; }
+a {
+ color: #478061;
+ text-decoration: none;
+}
+a:hover {
+ color: #333;
+ text-decoration: underline;
+}
+
+code {
+ background: #fdf6e3;
+ padding: 2px 4px;
+ border-radius: 4px;
+ white-space: pre-wrap;
+ overflow-wrap: break-word;
+}
+pre code {
+ padding: 0;
+ border-radius: 0;
+}
+pre {
+ padding: .5em;
+ margin: 1em 0;
+ background: #fdf6e3;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+
+blockquote {
+ margin: 20px 0;
+ padding: 0 20px;
+ padding-left: 1em;
+ background: #ebf4ef;
+ border: 1px solid #d1e6da;
+ border-left: none;
+ border-right: none;
+}
+
+li.js-unavailable {
+ background-color: #f6cf68;
+ border-radius: 10px;
+ margin-left: 1em;
+ padding-left: 1em;
+ padding-right: 1em;
+}
+
+table {
+ border-collapse: collapse;
+ display: block;
+ overflow-y: auto;
+}
+table td {
+ padding: 3px 20px;
+ border: 1px #fafafa solid;
+}
+table thead {
+ background: #fafafa;
+}
+table thead td {
+ font-weight: 700;
+ border: none;
+}
+table thead tr {
+}
+/* Alternate background colors for rows */
+table tbody tr:nth-child(2n) {
+ background: #fafafa;
+}
+
+svg {
+ position: relative;
+ top: .125em;
+ width: 1em;
+ height: auto;
+}
+
+.hidden {
+ display: none;
+}
+
+.icon-button {
+ border: none;
+ background: none;
+ cursor: pointer;
+ padding: 1em;
+}
+
+/* void navigation */
+
+#void-nav {
+ width: 100%;
+ min-height: 50px;
+ background: #478061;
+ font-size: 14px;
+
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+}
+#void-nav button,
+#void-nav label {
+ fill: #fff;
+ height: 50px;
+ display: block;
+ line-height: 50px;
+ padding: 0 15px;
+ font-size: 1.2em;
+}
+#void-nav ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+#void-nav ul#nav-right {
+ margin-left: auto;
+}
+
+#void-nav ul li {
+ display: inline-block;
+}
+#void-nav ul li a {
+ color: #fff;
+ display: block;
+ padding: 0 15px;
+ line-height: 50px;
+ font-size: 1.2em;
+ text-decoration: none
+}
+#void-nav ul li a:hover,
+#void-nav ul li a:focus,
+#void-nav button:hover,
+#void-nav button:focus,
+#void-nav label:hover,
+#void-nav label:focus {
+ background: #000;
+}
+
+#skip-to-content {
+ position: absolute;
+ left: -999px;
+ top: -999px;
+}
+
+#skip-to-content:active,
+#skip-to-content:focus {
+ position: relative;
+ left: 0;
+ top: 0;
+}
+
+/* sidebar */
+
+.sidebar-hidden #sidebar {
+ display: none;
+}
+#sidebar {
+ padding: .5em;
+ background: #fafafa;
+ font-size: 0.875em;
+}
+#sidebar ol {
+ list-style: none;
+ margin: 0;
+}
+#sidebar ol.chapter {
+ padding: 0;
+ line-height: 2.2em;
+}
+#sidebar ol.section {
+ padding-left: 20px;
+ line-height: 1.9em;
+}
+#sidebar a {
+ color: #000;
+ display: block;
+}
+#sidebar a:hover {
+ color: #478061;
+ text-decoration: none;
+}
+#sidebar a.active {
+ color: #478061;
+}
+
+#sidebar-toggle {
+ display: none;
+}
+
+/* search */
+
+#searchbar {
+ width: 100%;
+ padding: 10px 16px;
+ margin: 5px 0;
+ border-radius: 3px;
+ border: 1px solid #aaa;
+}
+#searchresults-header {
+ font-weight: bold;
+ font-size: 1em;
+ padding: 18px 0 0 5px;
+}
+ul#searchresults {
+ list-style: none;
+ padding-left: 20px;
+}
+ul#searchresults li {
+ margin: 10px 0px;
+ padding: 2px;
+ border-radius: 2px;
+}
+ul#searchresults span.teaser {
+ display: block;
+ clear: both;
+ margin: 5px 0 0 20px;
+ font-size: 0.8em;
+}
+
+/* chapter navigation */
+
+#nav-wide-wrapper {
+ max-width: 800px;
+ margin: 0 auto;
+ margin-top: 50px;
+}
+.previous {
+ float: left;
+}
+.next {
+ float: right;
+ right: 15px;
+}
+.nav-chapters {
+ fill: #ccc;
+ text-align: center;
+ text-decoration: none;
+ display: block;
+ max-width: 150px;
+ min-width: 90px;
+}
+.nav-chapters:hover {
+ text-decoration: none;
+ fill: #333
+}
+
+.nav-chapters svg {
+ margin: 0 auto;
+ width: 1.5em;
+}
+
+/* layout */
+
+body {
+ box-sizing: border-box;
+}
+#content {
+ display: flex;
+ flex-direction: row;
+ width: 100%;
+}
+#page-wrapper {
+ --content-padding: 10px;
+ padding: 0 var(--content-padding);
+ width: calc(100% - var(--content-padding) * 2);
+}
+#search-wrapper,
+#page-wrapper main {
+ width: 100%;
+ max-width: 800px;
+ margin: 0 auto;
+}
+#sidebar {
+ max-width: 300px;
+ flex-shrink: 0;
+}
+
+/* 300px + 800px + 2*90px + 15px */
+@media only screen and (min-width: 1295px) {
+ .sidebar-visible #nav-wide-wrapper {
+ max-width: none;
+ margin: 0;
+ }
+ .sidebar-visible .nav-chapters {
+ background: none;
+ position: fixed;
+ top: 50px;
+ bottom: 0;
+ margin: 0;
+ justify-content: center;
+ align-content: center;
+ display: flex;
+ flex-direction: column;
+ }
+}
+/* 800px + 2*90px + 15px */
+@media only screen and (min-width: 995px) {
+ .sidebar-hidden #nav-wide-wrapper {
+ max-width: none;
+ margin: 0;
+ }
+ .sidebar-hidden .nav-chapters {
+ background: none;
+ position: fixed;
+ top: 50px;
+ bottom: 0;
+ margin: 0;
+ justify-content: center;
+ align-content: center;
+ display: flex;
+ flex-direction: column;
+ }
+ table {
+ display: table;
+ }
+}
+
+@media (prefers-color-scheme: dark) {
+ body {
+ color: #ccc;
+ background-color: #222;
+ }
+ h1, h2, h3, h4, h5, h6 { color: #ccc; }
+ a {
+ color: #62b086;
+ }
+ a:hover {
+ color: #ccc;
+ }
+
+ code {
+ background: inherit;
+ }
+ pre {
+ background: #353535;
+ border: 1px solid #111;
+ }
+
+ blockquote {
+ background: inherit;
+ border-left: .2em solid #ccc;
+ border-right: none;
+ border-top: none;
+ border-bottom: none;
+ padding-top: .5em;
+ padding-bottom: .5em;
+ padding-left: 1em;
+ padding-right: 1em;
+ margin-left: 1em;
+ }
+ blockquote code {
+ color: #62b086;
+ }
+ li.js-unavailable {
+ background-color: #f6cf68;
+ color: #000000;
+ border-radius: 10px;
+ margin-left: 1em;
+ padding-left: 1em;
+ padding-right: 1em;
+ }
+ table td {
+ border: 1px #2c2c2c solid;
+ }
+ table thead {
+ background: #2c2c2c;
+ }
+ table tbody tr:nth-child(2n) {
+ background: #2c2c2c;
+ }
+
+ /* nav */
+ #void-nav ul li a:hover,
+ #void-nav ul li a:focus,
+ #void-nav button:hover,
+ #void-nav button:focus,
+ #void-nav label:hover,
+ #void-nav label:focus {
+ background: #222;
+ }
+
+ #void-nav {
+ background: #295340;
+ }
+
+ /* sidebar */
+ #sidebar {
+ background: #252525;
+ }
+ #sidebar a {
+ color: #ccc;
+ }
+ #sidebar a:hover {
+ color: #62b086;
+ }
+ #sidebar a.active {
+ color: #62b086;
+ }
+
+ /* search */
+ #searchbar {
+ background-color: #222;
+ color: #ccc;
+ }
+
+ /* chapter navigation */
+ .nav-chapters:hover {
+ fill: #fff
+ }
+}
diff --git a/manual/src/theme/css/print.css b/manual/src/theme/css/print.css
new file mode 100644
index 000000000000..717ccb80ed2c
--- /dev/null
+++ b/manual/src/theme/css/print.css
@@ -0,0 +1,54 @@
+
+#sidebar,
+#menu-bar,
+.nav-chapters,
+.mobile-nav-chapters {
+ display: none;
+}
+
+#page-wrapper.page-wrapper {
+ transform: none;
+ margin-left: 0px;
+ overflow-y: initial;
+}
+
+#content {
+ max-width: none;
+ margin: 0;
+ padding: 0;
+}
+
+.page {
+ overflow-y: initial;
+}
+
+code {
+ background-color: #666666;
+ border-radius: 5px;
+
+ /* Force background to be printed in Chrome */
+ -webkit-print-color-adjust: exact;
+}
+
+pre > .buttons {
+ z-index: 2;
+}
+
+a, a:visited, a:active, a:hover {
+ color: #4183c4;
+ text-decoration: none;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ page-break-inside: avoid;
+ page-break-after: avoid;
+}
+
+pre, code {
+ page-break-inside: avoid;
+ white-space: pre-wrap;
+}
+
+svg {
+ display: none !important;
+}
diff --git a/manual/src/theme/favicon.png b/manual/src/theme/favicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd3ec045d08445cdd73c7413e01a89754827593f
GIT binary patch
literal 5800
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
literal 0
HcmV?d00001
diff --git a/manual/src/theme/index.hbs b/manual/src/theme/index.hbs
new file mode 100644
index 000000000000..239c9c5728a1
--- /dev/null
+++ b/manual/src/theme/index.hbs
@@ -0,0 +1,157 @@
+<!DOCTYPE HTML>
+<html lang="{{ language }}" class="sidebar-visible no-js">
+ <head>
+ <!-- Book generated using mdBook -->
+ <meta charset="utf-8">
+ <title>{{ title }}</title>
+ <meta name="description" content="{{ description }}">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="theme-color" content="#ffffff" />
+
+ <link rel="shortcut icon" href="{{ path_to_root }}{{ favicon_png }}">
+ <link rel="stylesheet" href="{{ path_to_root }}css/general.css">
+ <link rel="stylesheet" href="{{ path_to_root }}css/print.css" media="print">
+ </head>
+ <body>
+ <!-- Provide site root to javascript -->
+ <script type="text/javascript">
+ var path_to_root = "{{ path_to_root }}";
+ </script>
+ <!-- Work around some values being stored in localStorage wrapped in quotes -->
+ <script type="text/javascript">
+ try {
+ var sidebar = localStorage.getItem('mdbook-sidebar');
+
+ if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
+ localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
+ }
+ } catch (e) { }
+ </script>
+
+ <header>
+ <nav id="void-nav">
+ <ul>
+ <li><a id="skip-to-content" tabindex="1" href="#main">Skip to content</a></li>
+ <li>
+ <button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+ <path d="M1 3v2h18V3zm0 8h18V9H1zm0 6h18v-2H1z"/>
+ </svg>
+ </button>
+ </li>
+ {{#if search_enabled}}
+ <li>
+ <button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+ <path d="M7.5 13c3.04 0 5.5-2.46 5.5-5.5S10.54 2 7.5 2 2 4.46 2 7.5 4.46 13 7.5 13zm4.55.46C10.79 14.43 9.21 15 7.5 15 3.36 15 0 11.64 0 7.5S3.36 0 7.5 0C11.64 0 15 3.36 15 7.5c0 1.71-.57 3.29-1.54 4.55l6.49 6.49-1.41 1.41-6.49-6.49z"/>
+ </svg>
+ </button>
+ </li>
+ {{/if}}
+ <noscript>
+ <li class="js-unavailable">Search functionality requires JavaScript</li>
+ </noscript>
+ </ul>
+ <ul id="nav-right">
+ <li><a href="https://www.voidlinux.org">Home</a></li>
+ <li><a href="https://www.voidlinux.org/news/">News</a></li>
+ <li><a href="https://www.voidlinux.org/download/">Download</a></li>
+ <li><a href="https://www.voidlinux.org/packages/">Packages</a></li>
+ <li><a href="https://docs.voidlinux.org">Documentation</a></li>
+ <li><a href="https://man.voidlinux.org/">Manual Pages</a></li>
+ <li><a href="https://github.com/void-linux">GitHub</a></li>
+ </ul>
+ </nav>
+ </header>
+
+ <div id="content">
+
+ <!-- Hide / unhide sidebar before it is displayed -->
+ <script type="text/javascript">
+ var html = document.querySelector('html');
+ var sidebar = 'hidden';
+ if (document.body.clientWidth >= 1080) {
+ try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
+ sidebar = sidebar || 'visible';
+ }
+ html.classList.remove('sidebar-visible');
+ html.classList.add("sidebar-" + sidebar);
+ </script>
+
+ <nav id="sidebar" aria-label="Table of contents">
+ {{#toc}}{{/toc}}
+ </nav>
+
+ <!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
+ <script type="text/javascript">
+ document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
+ document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
+ Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
+ link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
+ });
+ </script>
+
+ <div id="page-wrapper">
+ {{#if search_enabled}}
+ <div id="search-wrapper" class="hidden">
+ <form id="searchbar-outer" class="searchbar-outer">
+ <input type="search" name="search" id="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
+ </form>
+ <div id="searchresults-outer" class="searchresults-outer hidden">
+ <div id="searchresults-header" class="searchresults-header"></div>
+ <ul id="searchresults">
+ </ul>
+ </div>
+ </div>
+ {{/if}}
+
+ <main id="main">
+ {{{ content }}}
+ </main>
+
+ <nav id="nav-wide-wrapper" aria-label="Page navigation">
+ {{#previous}}
+ <a href="{{ path_to_root }}{{link}}" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
+ <path d="M4 10l9 9 1.4-1.5L7 10l7.4-7.5L13 1z"/>
+ </svg>
+ </a>
+ {{/previous}}
+
+ {{#next}}
+ <a href="{{ path_to_root }}{{link}}" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
+ <path d="M7 1L5.6 2.5 13 10l-7.4 7.5L7 19l9-9z"/>
+ </svg>
+ </a>
+ {{/next}}
+ </nav>
+ </div>
+ </div>
+
+ {{#if livereload}}
+ <!-- Livereload script (if served using the cli tool) -->
+ <script type="text/javascript">
+ var socket = new WebSocket("{{{livereload}}}");
+ socket.onmessage = function (event) {
+ if (event.data === "reload") {
+ socket.close();
+ location.reload(true); // force reload from server (not from cache)
+ }
+ };
+
+ window.onbeforeunload = function() {
+ socket.close();
+ }
+ </script>
+ {{/if}}
+
+ {{#if search_js}}
+ <script src="{{ path_to_root }}elasticlunr.min.js" type="text/javascript" charset="utf-8"></script>
+ <script src="{{ path_to_root }}mark.min.js" type="text/javascript" charset="utf-8"></script>
+ <script src="{{ path_to_root }}searcher.js" type="text/javascript" charset="utf-8"></script>
+ {{/if}}
+
+ <script src="{{ path_to_root }}book.js" type="text/javascript" charset="utf-8"></script>
+ </body>
+</html>
next reply other threads:[~2022-02-26 2:49 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-26 2:49 classabbyamp [this message]
2022-03-06 3:06 ` [PR PATCH] [Updated] " classabbyamp
2022-03-15 19:17 ` classabbyamp
2022-04-01 19:24 ` classabbyamp
2022-04-01 19:26 ` classabbyamp
2022-04-01 19:29 ` classabbyamp
2022-04-01 19:30 ` classabbyamp
2022-04-02 5:07 ` classabbyamp
2022-04-02 17:50 ` classabbyamp
2022-04-02 21:40 ` classabbyamp
2022-04-07 17:40 ` classabbyamp
2022-04-19 15:28 ` classabbyamp
2022-04-23 1:23 ` [PR PATCH] [Updated] [RFC] render Manual.md with mdBook classabbyamp
2022-05-02 2:09 ` classabbyamp
2022-05-05 17:24 ` classabbyamp
2022-05-05 18:41 ` classabbyamp
2022-05-17 17:09 ` classabbyamp
2022-05-28 7:03 ` classabbyamp
2022-05-28 20:05 ` classabbyamp
2022-05-29 0:12 ` classabbyamp
2022-06-26 23:49 ` classabbyamp
2022-07-17 18:33 ` [PR REVIEW] " ericonr
2022-07-17 18:34 ` ericonr
2022-07-18 5:13 ` [PR PATCH] [Updated] " classabbyamp
2022-07-18 5:13 ` [PR REVIEW] " classabbyamp
2022-08-21 18:47 ` classabbyamp
2022-08-21 18:47 ` [PR PATCH] [Closed]: " classabbyamp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=gh-mailinglist-notifications-41a7ca26-5023-4802-975b-f1789d68868e-void-packages-35856@inbox.vuxu.org \
--to=classabbyamp@users.noreply.github.com \
--cc=ml@inbox.vuxu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).