Compare commits

..

No commits in common. "main" and "90s-style" have entirely different histories.

64 changed files with 2158 additions and 3888 deletions

View file

@ -9,20 +9,17 @@ INSTALLDIR_ANSI := public_ansi/
ARTICLEDIR := articles ARTICLEDIR := articles
PANDOCDIR := pandoc PANDOCDIR := pandoc
STYLEDIR := styles STYLEDIR := styles
SCRIPTDIR := scripts
IMAGEDIR := images IMAGEDIR := images
# The name of the stylesheet. This needs to be copied to any directory containing html files that use it. # The name of the stylesheet. This needs to be copied to any directory containing html files that use it.
style := $(STYLEDIR)/style.css style := $(STYLEDIR)/style.css
syntax_style := $(PANDOCDIR)/solarized.theme
# Main html template that pandoc uses to generate .html from .md files # Main html template that pandoc uses to generate .html from .md files
template_html := $(PANDOCDIR)/html-template.html template_html := $(PANDOCDIR)/template.html
template_ansi := $(PANDOCDIR)/ansi-template template_ansi := $(PANDOCDIR)/template
template_rss := $(PANDOCDIR)/rss-template.xml
template_atom := $(PANDOCDIR)/atom-template.xml
# Template for extracting metadata of .md files in json format # Template for extracting metadata of .md files in json format
list_template := $(PANDOCDIR)/metadata-template.json list_template := $(PANDOCDIR)/meta-json-template.txt
# Location of the shark.js # Location of the shark.js
shark_js := $(PANDOCDIR)/shark.js shark_js := $(PANDOCDIR)/shark.js
@ -36,10 +33,10 @@ articles_md := $(wildcard $(SRCDIR)/$(ARTICLEDIR)/*.md)
articles_html := $(patsubst $(SRCDIR)/%.md, $(BUILDDIR)/%.html, $(articles_md)) articles_html := $(patsubst $(SRCDIR)/%.md, $(BUILDDIR)/%.html, $(articles_md))
articles_ansi := $(patsubst $(SRCDIR)/%.md, $(BUILDDIR)/%, $(articles_md)) articles_ansi := $(patsubst $(SRCDIR)/%.md, $(BUILDDIR)/%, $(articles_md))
all: $(BUILDDIR)/index.html $(BUILDDIR)/index $(BUILDDIR)/atom.xml all: $(BUILDDIR)/index.html $(BUILDDIR)/index
install: install:
cp -r $(BUILDDIR)/index.html $(BUILDDIR)/atom.xml $(articles_html) $(STYLEDIR) $(SCRIPTDIR) $(IMAGEDIR) $(INSTALLDIR_HTML); \ cp -r $(BUILDDIR)/index.html $(articles_html) $(STYLEDIR) $(IMAGEDIR) $(INSTALLDIR_HTML); \
cp -r $(BUILDDIR)/index $(articles_ansi) $(INSTALLDIR_ANSI); cp -r $(BUILDDIR)/index $(articles_ansi) $(INSTALLDIR_ANSI);
clean: clean:
@ -50,28 +47,23 @@ $(BUILDDIR):
mkdir $(BUILDDIR) $(BUILDDIR)/$(ARTICLEDIR) mkdir $(BUILDDIR) $(BUILDDIR)/$(ARTICLEDIR)
$(BUILDDIR)/$(ARTICLEDIR)/%.html: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR) $(BUILDDIR)/$(ARTICLEDIR)/%.html: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR)
jq 'del(.articles[] | select(.filename == "$(patsubst %.html,%,$(notdir $@))"))' $(article_list) > articles.json.tmp; \ jq 'del(.articles[] | select(.filename == "$(notdir $@)"))' $(article_list) > articles.json.tmp; \
mv articles.json.tmp $(article_list); \ mv ./articles.json.tmp $(article_list); \
# Build articles using pandoc # Build articles using pandoc
pandoc $< --template $(template_html) --css $(style) --highlight-style $(syntax_style) --mathml --toc --output $@; \ pandoc $< --template $(template_html) --css $(style) --highlight-style zenburn --mathml --toc --output $@; \
# Extract metadata from .md file, append filename field to the article object. # Extract metadata from .md file, append filename field to the article object.
# This is used to link to the article from index.html. Append article object to the article list. # This is used to link to the article from index.html. Append article object to the article list.
jq '.articles += [$(shell pandoc $< --template $(list_template) | jq '. += {"filename": "$(patsubst %.html,%,$(notdir $@))"}')]' $(article_list) > articles.json.tmp; \ jq '.articles += [$(shell pandoc $< --template $(list_template) | jq '. += {"filename": "$(patsubst %.html, %, $(notdir $@))"}')]' $(article_list) > articles.json.tmp; \
mv articles.json.tmp $(article_list); mv ./articles.json.tmp $(article_list); \
$(BUILDDIR)/$(ARTICLEDIR)/%: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR) $(BUILDDIR)/$(ARTICLEDIR)/%: $(SRCDIR)/$(ARTICLEDIR)/%.md | $(BUILDDIR)
pandoc $< --template $(template_ansi) --to ansi --output $@ pandoc $< --template $(template_ansi) --to ansi --output $@
$(BUILDDIR)/index.html: $(SRCDIR)/index.md $(articles_html) | $(BUILDDIR) $(BUILDDIR)/index.html: $(SRCDIR)/index.md $(articles_html) | $(BUILDDIR)
# Sort articles decending by date (date need to be in ISO 8601 format)
jq '.articles |= sort_by(.date) | .articles |= reverse' ${article_list} > articles.json.tmp; \
mv articles.json.tmp ${article_list}; \
# Build index.html with metadata injected from articles_list # Build index.html with metadata injected from articles_list
pandoc $< --template $(template_html) --css $(style) --metadata-file $(article_list) --highlight-style $(syntax_style) --mathml --toc --output $@; pandoc $< --template $(template_html) --include-after-body $(shark_js) --css $(style) --metadata-file $(article_list) --highlight-style zenburn --mathml --toc --output $@; \
$(BUILDDIR)/index: $(SRCDIR)/index.md $(articles_ansi) | $(BUILDDIR) $(BUILDDIR)/index: $(SRCDIR)/index.md $(articles_ansi) | $(BUILDDIR)
pandoc $< --template $(template_ansi) --metadata-file $(article_list) --to ansi --output $@ pandoc $< --template $(template_ansi) --metadata-file $(article_list) --to ansi --output $@
$(BUILDDIR)/atom.xml: $(SRCDIR)/feed.md $(articles_html) | $(BUILDDIR)
pandoc $< --template $(template_atom) --metadata-file $(article_list) --metadata "updated:$(shell date --iso-8601=minutes)" --to html --output $@

View file

@ -1,71 +0,0 @@
Bohnen und Maisbrot
Never
2026-06-22
────────────────────
BOHNEN
Maße Zutaten
─────────────────────────────────── ───────────────────────────────────
2 Zwiebeln
2 Knoblauchzehen
1 rote Chili (Peperoni/Chile de
árbol¹)
Kreuzkümmel
Speckwürfel (Optional)
1 l Brühe (Gemüse/Huhn/Rind)
1 Dose Kidneybohnen
1 Dose Pintobohnen oder andere Bohnen
1 Chile Ancho² oder geräuchertes
Paprikapulver
Petersilienstängel
Limettensaft
Salz
─────────────────────────────────── ───────────────────────────────────
Zubereitung
1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und Speckwürfel
anbraten.
2. Mit Brühe ablöschen und die Bohnen, Ancho Chili und
Petersilienstängel hinzufügen. Köcheln und etwas reduzieren lassen.
3. Mit Salz und Limettensaft abschmecken.
MAISBROT
Maße Zutaten
─────────────────────────────────── ───────────────────────────────────
1 Tasse Mehl
1 Tasse Maismehl
4 TL Backpulver
Salz
1/4 Tasse brauner Zucker
1 Ei
1/3 Tasse flüssige Butter
1 - 2 Tassen Milch oder Buttermilch
1/3 Tasse flüssige Butter
Speckwürfel (Optional)
Gehackte grüne Chilis (Optional)
─────────────────────────────────── ───────────────────────────────────
Zubereitung
1. Trockene Zutaten mischen.
2. Ei und Butter unterrühren.
3. Schrittweise die Milch hinzugeben, bis eine zähflüssige Masse
entstanden ist.
────────────────────
1. ]8;;https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol\Chile de árbol]8;;\; Eine kleine, scharfe, rote Chili. Meist getrocknet
zu finden.
2. ]8;;https://en.wikipedia.org/wiki/Poblano\Chile Ancho]8;;\; Eine große getrocknete Chili mit rauchigem Geschmack.
]8;;\

View file

@ -1,227 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" >
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" />
<meta name="dcterms.date" content="2026-06-22" />
<title>Bohnen und Maisbrot</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
</style>
<link rel="stylesheet" href="styles/style.css">
</head>
<body>
<img id="shork" src="images/shork.png"></img>
<header id="page-header">
<a class="page-header-button" href="index.html">Home</a>
<a class="rss-button" href="atom.xml">Atom Feed</a>
</header>
<main id="page">
<header id="title-block-header">
<h1 class="title">Bohnen und Maisbrot</h1>
<p class="author">Never</p>
<p class="date">2026-06-22</p>
</header>
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#bohnen" id="toc-bohnen">Bohnen</a>
<ul>
<li><a href="#zubereitung"
id="toc-zubereitung">Zubereitung</a></li>
</ul></li>
<li><a href="#maisbrot" id="toc-maisbrot">Maisbrot</a>
<ul>
<li><a href="#zubereitung-1"
id="toc-zubereitung-1">Zubereitung</a></li>
</ul></li>
</ul>
</nav>
<article>
<h1 id="bohnen">Bohnen</h1>
<table>
<thead>
<tr>
<th style="text-align: right;">Maße</th>
<th style="text-align: left;">Zutaten</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">2</td>
<td style="text-align: left;">Zwiebeln</td>
</tr>
<tr>
<td style="text-align: right;">2</td>
<td style="text-align: left;">Knoblauchzehen</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">rote Chili (Peperoni/Chile de
árbol<a href="#fn1" class="footnote-ref" id="fnref1"
role="doc-noteref"><sup>1</sup></a>)</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Kreuzkümmel</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Speckwürfel (Optional)</td>
</tr>
<tr>
<td style="text-align: right;">1 l</td>
<td style="text-align: left;">Brühe (Gemüse/Huhn/Rind)</td>
</tr>
<tr>
<td style="text-align: right;">1 Dose</td>
<td style="text-align: left;">Kidneybohnen</td>
</tr>
<tr>
<td style="text-align: right;">1 Dose</td>
<td style="text-align: left;">Pintobohnen oder andere
Bohnen</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">Chile Ancho<a href="#fn2"
class="footnote-ref" id="fnref2"
role="doc-noteref"><sup>2</sup></a> oder geräuchertes
Paprikapulver</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Petersilienstängel</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Limettensaft</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Salz</td>
</tr>
</tbody>
</table>
<h2 id="zubereitung">Zubereitung</h2>
<ol type="1">
<li><p>Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und
Speckwürfel anbraten.</p></li>
<li><p>Mit Brühe ablöschen und die Bohnen, Ancho Chili und
Petersilienstängel hinzufügen. Köcheln und etwas reduzieren
lassen.</p></li>
<li><p>Mit Salz und Limettensaft abschmecken.</p></li>
</ol>
<h1 id="maisbrot">Maisbrot</h1>
<table>
<thead>
<tr>
<th style="text-align: right;">Maße</th>
<th style="text-align: left;">Zutaten</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">1 Tasse</td>
<td style="text-align: left;">Mehl</td>
</tr>
<tr>
<td style="text-align: right;">1 Tasse</td>
<td style="text-align: left;">Maismehl</td>
</tr>
<tr>
<td style="text-align: right;">4 TL</td>
<td style="text-align: left;">Backpulver</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Salz</td>
</tr>
<tr>
<td style="text-align: right;">1/4 Tasse</td>
<td style="text-align: left;">brauner Zucker</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">Ei</td>
</tr>
<tr>
<td style="text-align: right;">1/3 Tasse</td>
<td style="text-align: left;">flüssige Butter</td>
</tr>
<tr>
<td style="text-align: right;">1 - 2 Tassen</td>
<td style="text-align: left;">Milch oder Buttermilch</td>
</tr>
<tr>
<td style="text-align: right;">1/3 Tasse</td>
<td style="text-align: left;">flüssige Butter</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Speckwürfel (Optional)</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Gehackte grüne Chilis
(Optional)</td>
</tr>
</tbody>
</table>
<h2 id="zubereitung-1">Zubereitung</h2>
<ol type="1">
<li><p>Trockene Zutaten mischen.</p></li>
<li><p>Ei und Butter unterrühren.</p></li>
<li><p>Schrittweise die Milch hinzugeben, bis eine
zähflüssige Masse entstanden ist.</p></li>
</ol>
<section id="footnotes"
class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
<li id="fn1"><p><a
href="https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol">Chile
de árbol</a>; Eine kleine, scharfe, rote Chili. Meist
getrocknet zu finden.<a href="#fnref1" class="footnote-back"
role="doc-backlink">↩︎</a></p></li>
<li id="fn2"><p><a
href="https://en.wikipedia.org/wiki/Poblano">Chile
Ancho</a>; Eine große getrocknete Chili mit rauchigem
Geschmack.<a href="#fnref2" class="footnote-back"
role="doc-backlink">↩︎</a></p></li>
</ol>
</section>
</article>
</main>
<footer id="page-footer">
<nav id="webring">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous"
src="images/cups_left_dark.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg"
width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next"
src="images/cups_right_dark.svg" width="30" height="30"></a>
</nav>
</footer>
</body>
<script src="scripts/shork.js"></script>
</html>

View file

@ -3,7 +3,7 @@
Never Never
2026-01-09 9.1.2026
──────────────────── ────────────────────

View file

@ -1,76 +1,68 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" /> <meta name="author" content="Never" />
<meta name="dcterms.date" content="2026-01-09" /> <title>Latex Endeavors</title>
<title>Latex Endeavors</title> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <style>
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> code{white-space: pre-wrap;}
<style> span.smallcaps{font-variant: small-caps;}
code{white-space: pre-wrap;} div.columns{display: flex; gap: min(4vw, 1.5em);}
span.smallcaps{font-variant: small-caps;} div.column{flex: auto; overflow-x: auto;}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.column{flex: auto; overflow-x: auto;} /* The extra [class] is a hack that increases specificity enough to
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} override a similar rule in reveal.js */
/* The extra [class] is a hack that increases specificity enough to ul.task-list[class]{list-style: none;}
override a similar rule in reveal.js */ ul.task-list li input[type="checkbox"] {
ul.task-list[class]{list-style: none;} font-size: inherit;
ul.task-list li input[type="checkbox"] { width: 0.8em;
font-size: inherit; margin: 0 0.8em 0.2em -1.6em;
width: 0.8em; vertical-align: middle;
margin: 0 0.8em 0.2em -1.6em; }
vertical-align: middle; </style>
} <link rel="stylesheet" href="styles/style.css">
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Latex Endeavors</h1>
<header id="title-block-header"> <p class="subtitle">Some unintuitive quirks of Latex</p>
<h1 class="title">Latex Endeavors</h1> <p class="author">Never</p>
<p class="subtitle">Some unintuitive quirks of Latex</p> <p class="date">9.1.2026</p>
<p class="author">Never</p> </header>
<p class="date">2026-01-09</p> <section id="content">
</header> <nav id="TOC" role="doc-toc">
<nav id="TOC" role="doc-toc"> <ul>
<ul> <li><a href="#biblatex-and-biber" id="toc-biblatex-and-biber">BibLaTeX
<li><a href="#biblatex-and-biber" and Biber</a>
id="toc-biblatex-and-biber">BibLaTeX and Biber</a> <ul>
<ul> <li><a href="#biber-doesnt-run" id="toc-biber-doesnt-run">Biber doesnt
<li><a href="#biber-doesnt-run" run</a></li>
id="toc-biber-doesnt-run">Biber doesnt run</a></li> </ul></li>
</ul></li> </ul>
</ul> </nav>
</nav> <article>
<article> <h1 id="biblatex-and-biber">BibLaTeX and Biber</h1>
<h1 id="biblatex-and-biber">BibLaTeX and Biber</h1> <h2 id="biber-doesnt-run">Biber doesnt run</h2>
<h2 id="biber-doesnt-run">Biber doesnt run</h2> <p>Biber doenst run if the (fedora) package
<p>Biber doenst run if the (fedora) package <code>libxcrypt-compat</code> is missing. It will fail with the error
<code>libxcrypt-compat</code> is missing. It will fail with message</p>
the error message</p> <pre><code>biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</code></pre>
<pre><code>biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</code></pre> </article>
</article> </section>
</main> <footer id="page-footer">
<footer id="page-footer"> <!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<nav id="webring"> <p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" <a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
src="images/cups_left_dark.svg" width="30" height="30"></a> <a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" <a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
width="120" height="60"></a> </p>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" </footer>
src="images/cups_right_dark.svg" width="30" height="30"></a>
</nav>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

View file

@ -3,7 +3,7 @@
Never Never
2025-07-25 25.7.2025
──────────────────── ────────────────────

View file

@ -1,147 +1,134 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" /> <meta name="author" content="Never" />
<meta name="dcterms.date" content="2025-07-25" /> <title>Random linux utilities</title>
<title>Random linux utilities</title> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <style>
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> code{white-space: pre-wrap;}
<style> span.smallcaps{font-variant: small-caps;}
code{white-space: pre-wrap;} div.columns{display: flex; gap: min(4vw, 1.5em);}
span.smallcaps{font-variant: small-caps;} div.column{flex: auto; overflow-x: auto;}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.column{flex: auto; overflow-x: auto;} /* The extra [class] is a hack that increases specificity enough to
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} override a similar rule in reveal.js */
/* The extra [class] is a hack that increases specificity enough to ul.task-list[class]{list-style: none;}
override a similar rule in reveal.js */ ul.task-list li input[type="checkbox"] {
ul.task-list[class]{list-style: none;} font-size: inherit;
ul.task-list li input[type="checkbox"] { width: 0.8em;
font-size: inherit; margin: 0 0.8em 0.2em -1.6em;
width: 0.8em; vertical-align: middle;
margin: 0 0.8em 0.2em -1.6em; }
vertical-align: middle; /* CSS for syntax highlighting */
} html { -webkit-text-size-adjust: 100%; }
/* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; }
html { -webkit-text-size-adjust: 100%; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span:empty { height: 1.2em; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } .sourceCode { overflow: visible; }
pre > code.sourceCode > span:empty { height: 1.2em; } code.sourceCode > span { color: inherit; text-decoration: inherit; }
.sourceCode { overflow: visible; } div.sourceCode { margin: 1em 0; }
code.sourceCode > span { color: inherit; text-decoration: inherit; } pre.sourceCode { margin: 0; }
div.sourceCode { margin: 1em 0; } @media screen {
pre.sourceCode { margin: 0; } div.sourceCode { overflow: auto; }
@media screen { }
div.sourceCode { overflow: auto; } @media print {
} pre > code.sourceCode { white-space: pre-wrap; }
@media print { pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
pre > code.sourceCode { white-space: pre-wrap; } }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } pre.numberSource code
} { counter-reset: source-line 0; }
pre.numberSource code pre.numberSource code > span
{ counter-reset: source-line 0; } { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span pre.numberSource code > span > a:first-child::before
{ position: relative; left: -4em; counter-increment: source-line; } { content: counter(source-line);
pre.numberSource code > span > a:first-child::before position: relative; left: -1em; text-align: right; vertical-align: baseline;
{ content: counter(source-line); border: none; display: inline-block;
position: relative; left: -1em; text-align: right; vertical-align: baseline; -webkit-touch-callout: none; -webkit-user-select: none;
border: none; display: inline-block; -khtml-user-select: none; -moz-user-select: none;
-webkit-touch-callout: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;
-khtml-user-select: none; -moz-user-select: none; padding: 0 4px; width: 4em;
-ms-user-select: none; user-select: none; }
padding: 0 4px; width: 4em; pre.numberSource { margin-left: 3em; padding-left: 4px; }
background-color: #073642; div.sourceCode
color: #586e75; { color: #cccccc; background-color: #303030; }
} @media screen {
pre.numberSource { margin-left: 3em; border-left: 1px solid #586e75; padding-left: 4px; } pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
div.sourceCode }
{ color: #839496; background-color: #002b36; } code span.al { color: #ffcfaf; } /* Alert */
@media screen { code span.an { color: #7f9f7f; font-weight: bold; } /* Annotation */
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } code span.at { } /* Attribute */
} code span.bn { color: #dca3a3; } /* BaseN */
code span.al { color: #d33682; } /* Alert */ code span.bu { } /* BuiltIn */
code span.an { color: #dc322f; } /* Annotation */ code span.cf { color: #f0dfaf; } /* ControlFlow */
code span.at { color: #dc322f; } /* Attribute */ code span.ch { color: #dca3a3; } /* Char */
code span.bn { color: #2aa198; } /* BaseN */ code span.cn { color: #dca3a3; font-weight: bold; } /* Constant */
code span.bu { color: #b58900; } /* BuiltIn */ code span.co { color: #7f9f7f; } /* Comment */
code span.cf { color: #859900; } /* ControlFlow */ code span.cv { color: #7f9f7f; font-weight: bold; } /* CommentVar */
code span.ch { color: #2aa198; } /* Char */ code span.do { color: #7f9f7f; } /* Documentation */
code span.cn { color: #b58900; } /* Constant */ code span.dt { color: #dfdfbf; } /* DataType */
code span.co { color: #586e75; font-style: italic; } /* Comment */ code span.dv { color: #dcdccc; } /* DecVal */
code span.cv { color: #268bd2; } /* CommentVar */ code span.er { color: #c3bf9f; } /* Error */
code span.do { color: #586e75; font-style: italic; } /* Documentation */ code span.ex { } /* Extension */
code span.dt { color: #b58900; } /* DataType */ code span.fl { color: #c0bed1; } /* Float */
code span.dv { color: #2aa198; } /* DecVal */ code span.fu { color: #efef8f; } /* Function */
code span.er { color: #dc322f; text-decoration: underline; } /* Error */ code span.im { } /* Import */
code span.ex { color: #b58900; } /* Extension */ code span.in { color: #7f9f7f; font-weight: bold; } /* Information */
code span.fl { color: #2aa198; } /* Float */ code span.kw { color: #f0dfaf; } /* Keyword */
code span.fu { } /* Function */ code span.op { color: #f0efd0; } /* Operator */
code span.im { color: #cb4b16; } /* Import */ code span.ot { color: #efef8f; } /* Other */
code span.in { color: #268bd2; } /* Information */ code span.pp { color: #ffcfaf; font-weight: bold; } /* Preprocessor */
code span.kw { color: #93a1a1; font-weight: bold; } /* Keyword */ code span.sc { color: #dca3a3; } /* SpecialChar */
code span.op { } /* Operator */ code span.ss { color: #cc9393; } /* SpecialString */
code span.ot { } /* Other */ code span.st { color: #cc9393; } /* String */
code span.pp { color: #cb4b16; } /* Preprocessor */ code span.va { } /* Variable */
code span.re { color: #cb4b16; } /* RegionMarker */ code span.vs { color: #cc9393; } /* VerbatimString */
code span.sc { color: #dc322f; } /* SpecialChar */ code span.wa { color: #7f9f7f; font-weight: bold; } /* Warning */
code span.ss { color: #b58900; } /* SpecialString */ </style>
code span.st { color: #2aa198; } /* String */ <link rel="stylesheet" href="styles/style.css">
code span.va { color: #cb4b16; } /* Variable */
code span.vs { color: #dc322f; } /* VerbatimString */
code span.wa { color: #b58900; } /* Warning */
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Random linux utilities</h1>
<header id="title-block-header"> <p class="subtitle">Neat things I picked up along the way</p>
<h1 class="title">Random linux utilities</h1> <p class="author">Never</p>
<p class="subtitle">Neat things I picked up along the <p class="date">25.7.2025</p>
way</p> </header>
<p class="author">Never</p> <section id="content">
<p class="date">2025-07-25</p> <nav id="TOC" role="doc-toc">
</header> <ul>
<nav id="TOC" role="doc-toc"> <li><a href="#merge-pdfs" id="toc-merge-pdfs">Merge pdfs</a>
<ul> <ul>
<li><a href="#merge-pdfs" id="toc-merge-pdfs">Merge pdfs</a> <li><a href="#using-ghostscript" id="toc-using-ghostscript">Using
<ul> Ghostscript</a></li>
<li><a href="#using-ghostscript" </ul></li>
id="toc-using-ghostscript">Using Ghostscript</a></li> </ul>
</ul></li> </nav>
</ul> <article>
</nav> <h1 id="merge-pdfs">Merge pdfs</h1>
<article> <h2 id="using-ghostscript">Using Ghostscript</h2>
<h1 id="merge-pdfs">Merge pdfs</h1> <p>Ghostscript has a feature to merge multiple pdf files into one.
<h2 id="using-ghostscript">Using Ghostscript</h2> Although ImageMagick also has this feature, I prefer this one, as it
<p>Ghostscript has a feature to merge multiple pdf files doesnt rasterize and scales down the pdf files.</p>
into one. Although ImageMagick also has this feature, I <div class="sourceCode" id="cb1"><pre
prefer this one, as it doesnt rasterize and scales down the class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">gs</span> <span class="at">-dNOPAUSE</span> <span class="at">-sDEVICE</span><span class="op">=</span>pdfwrite <span class="dt">\</span></span>
pdf files.</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">gs</span> <span class="at">-dNOPAUSE</span> <span class="at">-sDEVICE</span><span class="op">=</span>pdfwrite <span class="dt">\</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> <span class="at">-sOUTPUTFILE</span><span class="op">=</span>output.pdf <span class="dt">\</span></span> <span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> <span class="at">-sOUTPUTFILE</span><span class="op">=</span>output.pdf <span class="dt">\</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="at">-dBATCH</span> 1.pdf 2.pdf</span></code></pre></div> <span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="at">-dBATCH</span> 1.pdf 2.pdf</span></code></pre></div>
</article> </article>
</main> </section>
<footer id="page-footer"> <footer id="page-footer">
<nav id="webring"> <!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" <p class="cups-light">
src="images/cups_left_dark.svg" width="30" height="30"></a> <a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" <a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
width="120" height="60"></a> <a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" </p>
src="images/cups_right_dark.svg" width="30" height="30"></a> </footer>
</nav>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

View file

@ -2,7 +2,7 @@
Never Never
2026-01-12 12.01.2026
──────────────────── ────────────────────
@ -89,4 +89,28 @@ config.
Now on your Linux machine, syncronise your Music library with rsync. Now on your Linux machine, syncronise your Music library with rsync.
rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
Refreshing the Android MediaStore
Android uses a Database to store files. In order to play your music,
this database needs to be refreshed. This can be achieved by a reboot or
by using adb to manually refresh it.
sudo dnf install adb
Connect the Android device via USB and see if it is listed.
adb devices
If it is, restart adb in TCP mode with port 5555
adb tcpip 5555
Connect to the device using its .
adb connect <ip_address>
Refresh MediaStore.
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/
]8;;\ ]8;;\

View file

@ -1,160 +1,148 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" /> <meta name="author" content="Never" />
<meta name="dcterms.date" content="2026-01-12" /> <title>Using rsync on Android to syncronise my Music library</title>
<title>Using rsync on Android to syncronise my Music library</title> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <style>
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> code{white-space: pre-wrap;}
<style> span.smallcaps{font-variant: small-caps;}
code{white-space: pre-wrap;} div.columns{display: flex; gap: min(4vw, 1.5em);}
span.smallcaps{font-variant: small-caps;} div.column{flex: auto; overflow-x: auto;}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.column{flex: auto; overflow-x: auto;} /* The extra [class] is a hack that increases specificity enough to
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} override a similar rule in reveal.js */
/* The extra [class] is a hack that increases specificity enough to ul.task-list[class]{list-style: none;}
override a similar rule in reveal.js */ ul.task-list li input[type="checkbox"] {
ul.task-list[class]{list-style: none;} font-size: inherit;
ul.task-list li input[type="checkbox"] { width: 0.8em;
font-size: inherit; margin: 0 0.8em 0.2em -1.6em;
width: 0.8em; vertical-align: middle;
margin: 0 0.8em 0.2em -1.6em; }
vertical-align: middle; /* CSS for syntax highlighting */
} html { -webkit-text-size-adjust: 100%; }
/* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; }
html { -webkit-text-size-adjust: 100%; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span:empty { height: 1.2em; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } .sourceCode { overflow: visible; }
pre > code.sourceCode > span:empty { height: 1.2em; } code.sourceCode > span { color: inherit; text-decoration: inherit; }
.sourceCode { overflow: visible; } div.sourceCode { margin: 1em 0; }
code.sourceCode > span { color: inherit; text-decoration: inherit; } pre.sourceCode { margin: 0; }
div.sourceCode { margin: 1em 0; } @media screen {
pre.sourceCode { margin: 0; } div.sourceCode { overflow: auto; }
@media screen { }
div.sourceCode { overflow: auto; } @media print {
} pre > code.sourceCode { white-space: pre-wrap; }
@media print { pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
pre > code.sourceCode { white-space: pre-wrap; } }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } pre.numberSource code
} { counter-reset: source-line 0; }
pre.numberSource code pre.numberSource code > span
{ counter-reset: source-line 0; } { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span pre.numberSource code > span > a:first-child::before
{ position: relative; left: -4em; counter-increment: source-line; } { content: counter(source-line);
pre.numberSource code > span > a:first-child::before position: relative; left: -1em; text-align: right; vertical-align: baseline;
{ content: counter(source-line); border: none; display: inline-block;
position: relative; left: -1em; text-align: right; vertical-align: baseline; -webkit-touch-callout: none; -webkit-user-select: none;
border: none; display: inline-block; -khtml-user-select: none; -moz-user-select: none;
-webkit-touch-callout: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;
-khtml-user-select: none; -moz-user-select: none; padding: 0 4px; width: 4em;
-ms-user-select: none; user-select: none; }
padding: 0 4px; width: 4em; pre.numberSource { margin-left: 3em; padding-left: 4px; }
background-color: #073642; div.sourceCode
color: #586e75; { color: #cccccc; background-color: #303030; }
} @media screen {
pre.numberSource { margin-left: 3em; border-left: 1px solid #586e75; padding-left: 4px; } pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
div.sourceCode }
{ color: #839496; background-color: #002b36; } code span.al { color: #ffcfaf; } /* Alert */
@media screen { code span.an { color: #7f9f7f; font-weight: bold; } /* Annotation */
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } code span.at { } /* Attribute */
} code span.bn { color: #dca3a3; } /* BaseN */
code span.al { color: #d33682; } /* Alert */ code span.bu { } /* BuiltIn */
code span.an { color: #dc322f; } /* Annotation */ code span.cf { color: #f0dfaf; } /* ControlFlow */
code span.at { color: #dc322f; } /* Attribute */ code span.ch { color: #dca3a3; } /* Char */
code span.bn { color: #2aa198; } /* BaseN */ code span.cn { color: #dca3a3; font-weight: bold; } /* Constant */
code span.bu { color: #b58900; } /* BuiltIn */ code span.co { color: #7f9f7f; } /* Comment */
code span.cf { color: #859900; } /* ControlFlow */ code span.cv { color: #7f9f7f; font-weight: bold; } /* CommentVar */
code span.ch { color: #2aa198; } /* Char */ code span.do { color: #7f9f7f; } /* Documentation */
code span.cn { color: #b58900; } /* Constant */ code span.dt { color: #dfdfbf; } /* DataType */
code span.co { color: #586e75; font-style: italic; } /* Comment */ code span.dv { color: #dcdccc; } /* DecVal */
code span.cv { color: #268bd2; } /* CommentVar */ code span.er { color: #c3bf9f; } /* Error */
code span.do { color: #586e75; font-style: italic; } /* Documentation */ code span.ex { } /* Extension */
code span.dt { color: #b58900; } /* DataType */ code span.fl { color: #c0bed1; } /* Float */
code span.dv { color: #2aa198; } /* DecVal */ code span.fu { color: #efef8f; } /* Function */
code span.er { color: #dc322f; text-decoration: underline; } /* Error */ code span.im { } /* Import */
code span.ex { color: #b58900; } /* Extension */ code span.in { color: #7f9f7f; font-weight: bold; } /* Information */
code span.fl { color: #2aa198; } /* Float */ code span.kw { color: #f0dfaf; } /* Keyword */
code span.fu { } /* Function */ code span.op { color: #f0efd0; } /* Operator */
code span.im { color: #cb4b16; } /* Import */ code span.ot { color: #efef8f; } /* Other */
code span.in { color: #268bd2; } /* Information */ code span.pp { color: #ffcfaf; font-weight: bold; } /* Preprocessor */
code span.kw { color: #93a1a1; font-weight: bold; } /* Keyword */ code span.sc { color: #dca3a3; } /* SpecialChar */
code span.op { } /* Operator */ code span.ss { color: #cc9393; } /* SpecialString */
code span.ot { } /* Other */ code span.st { color: #cc9393; } /* String */
code span.pp { color: #cb4b16; } /* Preprocessor */ code span.va { } /* Variable */
code span.re { color: #cb4b16; } /* RegionMarker */ code span.vs { color: #cc9393; } /* VerbatimString */
code span.sc { color: #dc322f; } /* SpecialChar */ code span.wa { color: #7f9f7f; font-weight: bold; } /* Warning */
code span.ss { color: #b58900; } /* SpecialString */ </style>
code span.st { color: #2aa198; } /* String */ <link rel="stylesheet" href="styles/style.css">
code span.va { color: #cb4b16; } /* Variable */
code span.vs { color: #dc322f; } /* VerbatimString */
code span.wa { color: #b58900; } /* Warning */
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Using rsync on Android to syncronise my Music
<header id="title-block-header"> library</h1>
<h1 class="title">Using rsync on Android to syncronise my <p class="author">Never</p>
Music library</h1> <p class="date">12.01.2026</p>
<p class="author">Never</p> </header>
<p class="date">2026-01-12</p> <section id="content">
</header> <nav id="TOC" role="doc-toc">
<nav id="TOC" role="doc-toc"> <ul>
<ul> <li><a href="#setup-termux" id="toc-setup-termux">Setup Termux</a></li>
<li><a href="#setup-termux" id="toc-setup-termux">Setup <li><a href="#establishing-an-ssh-connection"
Termux</a></li> id="toc-establishing-an-ssh-connection">Establishing an ssh
<li><a href="#establishing-an-ssh-connection" connection</a>
id="toc-establishing-an-ssh-connection">Establishing an ssh <ul>
connection</a> <li><a href="#configuring-android"
<ul> id="toc-configuring-android">Configuring Android</a></li>
<li><a href="#configuring-android" <li><a href="#connecting-to-android-via-ssh"
id="toc-configuring-android">Configuring Android</a></li> id="toc-connecting-to-android-via-ssh">Connecting to Android via
<li><a href="#connecting-to-android-via-ssh" ssh</a></li>
id="toc-connecting-to-android-via-ssh">Connecting to Android </ul></li>
via ssh</a></li> <li><a href="#syncronising-files-with-rsync"
</ul></li> id="toc-syncronising-files-with-rsync">Syncronising files with rsync</a>
<li><a href="#syncronising-files-with-rsync" <ul>
id="toc-syncronising-files-with-rsync">Syncronising files <li><a href="#refreshing-the-android-mediastore"
with rsync</a></li> id="toc-refreshing-the-android-mediastore">Refreshing the Android
</ul> MediaStore</a></li>
</nav> </ul></li>
<article> </ul>
<h1 id="setup-termux">Setup Termux</h1> </nav>
<p>Install Termux using F-Droid.</p> <article>
<p>Update software repos.</p> <h1 id="setup-termux">Setup Termux</h1>
<div class="sourceCode" id="cb1"><pre <p>Install Termux using F-Droid.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> update</span></code></pre></div> <p>Update software repos.</p>
<p>Grant file access permissions using.</p> <div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> update</span></code></pre></div>
<div class="sourceCode" id="cb2"><pre <p>Grant file access permissions using.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">termux-setup-storage</span></span></code></pre></div> <div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">termux-setup-storage</span></span></code></pre></div>
<h1 id="establishing-an-ssh-connection">Establishing an ssh <h1 id="establishing-an-ssh-connection">Establishing an ssh
connection</h1> connection</h1>
<p>If network (such as eduroam) is blocking ssh trafic <p>If network (such as eduroam) is blocking ssh trafic between machines,
between machines, open a Wi-Fi Hotspot on your Linux machine open a Wi-Fi Hotspot on your Linux machine and connect the Android
and connect the Android device to it before using device to it before using <code>rsync</code> or <code>ssh</code>.</p>
<code>rsync</code> or <code>ssh</code>.</p> <h2 id="configuring-android">Configuring Android</h2>
<h2 id="configuring-android">Configuring Android</h2> <p>Install the openssh server on Termux.</p>
<p>Install the openssh server on Termux.</p> <div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install openssh</span></code></pre></div>
<div class="sourceCode" id="cb3"><pre <p>Start the ssh server daemon.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install openssh</span></code></pre></div> <div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">sshd</span></span></code></pre></div>
<p>Start the ssh server daemon.</p> <p>Get the ip address of the Android machine (in the Hotspot).</p>
<div class="sourceCode" id="cb4"><pre <div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">ifconfig</span></span></code></pre></div>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">sshd</span></span></code></pre></div> <pre><code>Warning: cannot open /proc/net/dev (Permission denied). Limited output.
<p>Get the ip address of the Android machine (in the
Hotspot).</p>
<div class="sourceCode" id="cb5"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">ifconfig</span></span></code></pre></div>
<pre><code>Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt; mtu 65536 lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt; mtu 65536
inet 127.0.0.1 netmask 255.0.0.0 inet 127.0.0.1 netmask 255.0.0.0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
@ -166,49 +154,62 @@ rmnet0: flags=4305&lt;UP,POINTOPOINT,RUNNING,NOARP,MULTICAST&gt; mtu 1280
wlan0: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt; mtu 1500 wlan0: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt; mtu 1500
inet 10.42.0.200 netmask 255.255.255.0 broadcast 10.42.0.210 inet 10.42.0.200 netmask 255.255.255.0 broadcast 10.42.0.210
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)</code></pre> unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)</code></pre>
<p>In this case 10.42.0.200.</p> <p>In this case 10.42.0.200.</p>
<p>The ssh server should now be running and listening on <p>The ssh server should now be running and listening on port 8022. You
port 8022. You can check by running</p> can check by running</p>
<div class="sourceCode" id="cb7"><pre <div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">nmap</span> <span class="at">-Pn</span> <span class="op">&lt;</span>ip_address<span class="op">&gt;</span></span></code></pre></div>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">nmap</span> <span class="at">-Pn</span> <span class="op">&lt;</span>ip_address<span class="op">&gt;</span></span></code></pre></div> <p>For me <code>&lt;ip_address&gt;</code> whould be 10.42.0.200.</p>
<p>For me <code>&lt;ip_address&gt;</code> whould be <p>Get the username.</p>
10.42.0.200.</p> <div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">whoami</span></span></code></pre></div>
<p>Get the username.</p> <pre><code>u0_a700</code></pre>
<div class="sourceCode" id="cb8"><pre <p>Set a password for this user.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">whoami</span></span></code></pre></div> <div class="sourceCode" id="cb10"><pre
<pre><code>u0_a700</code></pre> class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">passwd</span></span></code></pre></div>
<p>Set a password for this user.</p> <h2 id="connecting-to-android-via-ssh">Connecting to Android via
<div class="sourceCode" id="cb10"><pre ssh</h2>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">passwd</span></span></code></pre></div> <p>Make sure you have an ssh key pair on the Linux system. If not
<h2 id="connecting-to-android-via-ssh">Connecting to Android generate one using <code>ssh-keygen</code>.</p>
via ssh</h2> <p>Now connect to Android by <code>ssh</code>.</p>
<p>Make sure you have an ssh key pair on the Linux system. <div class="sourceCode" id="cb11"><pre
If not generate one using <code>ssh-keygen</code>.</p> class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">ssh</span> <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span> -p 8022</span></code></pre></div>
<p>Now connect to Android by <code>ssh</code>.</p> <h1 id="syncronising-files-with-rsync">Syncronising files with
<div class="sourceCode" id="cb11"><pre rsync</h1>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">ssh</span> <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span> -p 8022</span></code></pre></div> <p>Install <code>rsync</code> on Termux and Linux. Make sure to keep
<h1 id="syncronising-files-with-rsync">Syncronising files your own openssl config.</p>
with rsync</h1> <div class="sourceCode" id="cb12"><pre
<p>Install <code>rsync</code> on Termux and Linux. Make sure class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install rsync</span></code></pre></div>
to keep your own openssl config.</p> <p>Now on your Linux machine, syncronise your Music library with
<div class="sourceCode" id="cb12"><pre rsync.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install rsync</span></code></pre></div> <div class="sourceCode" id="cb13"><pre
<p>Now on your Linux machine, syncronise your Music library class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rsync</span> <span class="at">-av</span> <span class="at">-e</span> <span class="st">&quot;ssh -p 8022&quot;</span> ~/Music <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span>:/data/data/com.termux/files/home/storage/music</span></code></pre></div>
with rsync.</p> <h2 id="refreshing-the-android-mediastore">Refreshing the Android
<div class="sourceCode" id="cb13"><pre MediaStore</h2>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rsync</span> <span class="at">-av</span> <span class="at">-e</span> <span class="st">&quot;ssh -p 8022&quot;</span> ~/Music <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span>:/data/data/com.termux/files/home/storage/music</span></code></pre></div> <p>Android uses a Database to store files. In order to play your music,
</article> this database needs to be refreshed. This can be achieved by a reboot or
</main> by using adb to manually refresh it.</p>
<footer id="page-footer"> <div class="sourceCode" id="cb14"><pre
<nav id="webring"> class="sourceCode sh"><code class="sourceCode bash"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> dnf install adb</span></code></pre></div>
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" <p>Connect the Android device via USB and see if it is listed.</p>
src="images/cups_left_dark.svg" width="30" height="30"></a> <div class="sourceCode" id="cb15"><pre
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> devices</span></code></pre></div>
width="120" height="60"></a> <p>If it is, restart adb in TCP mode with port 5555</p>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" <div class="sourceCode" id="cb16"><pre
src="images/cups_right_dark.svg" width="30" height="30"></a> class="sourceCode sh"><code class="sourceCode bash"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> tcpip 5555</span></code></pre></div>
</nav> <p>Connect to the device using its <ip_address>.</p>
</footer> <div class="sourceCode" id="cb17"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> connect <span class="op">&lt;</span>ip_address<span class="op">&gt;</span></span></code></pre></div>
<p>Refresh MediaStore.</p>
<div class="sourceCode" id="cb18"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> shell am broadcast <span class="at">-a</span> android.intent.action.MEDIA_SCANNER_SCAN <span class="at">-d</span> file:///data/data/com.termux/files/home/storage/music/</span></code></pre></div>
</article>
</section>
<footer id="page-footer">
<!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
</p>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

View file

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>nevereverever.de</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh"/>
<id>nevereverever.de</id>
<updated>2026-06-22T22:12+02:00</updated>
<published>2026-03-10</published>
<author>
<name>Never</name>
</author>
<subtitle>Here I post random stuff.</subtitle>
<entry>
<title>Bohnen und Maisbrot</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/beans-and-cornbread.html"/>
<id>beans-and-cornbread</id>
<updated>2026-06-22T20:47+02:00</updated>
<published>2026-06-22</published>
<author>
<name>Never</name>
</author>
<summary>Inspiriert von der Küche der Kuhtreiber des Wilden
Westens.</summary>
</entry>
<entry>
<title>Using rsync on Android to syncronise my Music
library</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/rsync-android.html"/>
<id>rsync-android</id>
<updated>2026-01-12T16:24+01:00</updated>
<published>2026-01-12</published>
<author>
<name>Never</name>
</author>
<summary>As Spotify is getting enshittified by capitalism,
keeping a music library is kind of essential. Here I use rsync to
syncronise my library with my Android smartphone.</summary>
</entry>
<entry>
<title>Latex Endeavors</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/latex-endeavors.html"/>
<id>latex-endeavors</id>
<updated>2026-01-10T16:23+01:00</updated>
<published>2026-01-09</published>
<author>
<name>Never</name>
</author>
<summary>Latex undoubtedly has some quirks. Some of them have a
rather unintuitive solution. In this article I cover some quirks and
solutions I have encountered.</summary>
</entry>
<entry>
<title>Random linux utilities</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/random-linux-utils.html"/>
<id>random-linux-utils</id>
<updated>2025-07-25T16:24+01:00</updated>
<published>2025-07-25</published>
<author>
<name>Never</name>
</author>
<summary>Tricks and tools I learned about, while tweaking my
Linux sytem or trying to do productive things.</summary>
</entry>
</feed>

View file

@ -2,38 +2,25 @@
──────────────────── ────────────────────
Hello! I am Never and this is my little place on the internet where I Hello World
post the stuff that I am currently nerding out about.
This Website itself is one of those projects, that I like to tweak and
tinker with. Maybe Ill write an article about its build system. It is
also viewable via  curl . Just run
curl nevereverever.de
There also is an Atom Feed to stay updated about my doings.
ARTICLES ARTICLES
Bohnen und Maisbrot (beans-and-cornbread) Latex Endeavors (latex-endeavors)
Inspiriert von der Küche der Kuhtreiber des Wilden Westens. Latex undoubtedly has some quirks. Some of them have a rather
Never - 2026-06-22 unintuitive solution. In this article I cover some quirks and solutions
I have encountered.
Never - 9.1.2026
Random linux utilities (random-linux-utils)
Tricks and tools I learned about, while tweaking my Linux sytem or
trying to do productive things.
Never - 25.7.2025
Using rsync on Android to syncronise my Music Using rsync on Android to syncronise my Music
library (rsync-android) library (rsync-android)
As Spotify is getting enshittified by capitalism, keeping a music As Spotify is getting enshittified by capitalism, keeping a music
library is kind of essential. Here I use rsync to syncronise my library library is kind of essential. Here I use rsync to syncronise my library
with my Android smartphone. with my Android smartphone.
Never - 2026-01-12 Never - 12.01.2026
Latex Endeavors (latex-endeavors)
Latex undoubtedly has some quirks. Some of them have a rather
unintuitive solution. In this article I cover some quirks and solutions
I have encountered.
Never - 2026-01-09
Random linux utilities (random-linux-utils)
Tricks and tools I learned about, while tweaking my Linux sytem or
trying to do productive things.
Never - 2025-07-25
]8;;\ ]8;;\

View file

@ -1,190 +1,154 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Home</title> <title>Home</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> <style>
<style> code{white-space: pre-wrap;}
code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;}
span.smallcaps{font-variant: small-caps;} div.columns{display: flex; gap: min(4vw, 1.5em);}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.column{flex: auto; overflow-x: auto;}
div.column{flex: auto; overflow-x: auto;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} /* The extra [class] is a hack that increases specificity enough to
/* The extra [class] is a hack that increases specificity enough to override a similar rule in reveal.js */
override a similar rule in reveal.js */ ul.task-list[class]{list-style: none;}
ul.task-list[class]{list-style: none;} ul.task-list li input[type="checkbox"] {
ul.task-list li input[type="checkbox"] { font-size: inherit;
font-size: inherit; width: 0.8em;
width: 0.8em; margin: 0 0.8em 0.2em -1.6em;
margin: 0 0.8em 0.2em -1.6em; vertical-align: middle;
vertical-align: middle; }
} </style>
/* CSS for syntax highlighting */ <link rel="stylesheet" href="styles/style.css">
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
background-color: #073642;
color: #586e75;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #586e75; padding-left: 4px; }
div.sourceCode
{ color: #839496; background-color: #002b36; }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #d33682; } /* Alert */
code span.an { color: #dc322f; } /* Annotation */
code span.at { color: #dc322f; } /* Attribute */
code span.bn { color: #2aa198; } /* BaseN */
code span.bu { color: #b58900; } /* BuiltIn */
code span.cf { color: #859900; } /* ControlFlow */
code span.ch { color: #2aa198; } /* Char */
code span.cn { color: #b58900; } /* Constant */
code span.co { color: #586e75; font-style: italic; } /* Comment */
code span.cv { color: #268bd2; } /* CommentVar */
code span.do { color: #586e75; font-style: italic; } /* Documentation */
code span.dt { color: #b58900; } /* DataType */
code span.dv { color: #2aa198; } /* DecVal */
code span.er { color: #dc322f; text-decoration: underline; } /* Error */
code span.ex { color: #b58900; } /* Extension */
code span.fl { color: #2aa198; } /* Float */
code span.fu { } /* Function */
code span.im { color: #cb4b16; } /* Import */
code span.in { color: #268bd2; } /* Information */
code span.kw { color: #93a1a1; font-weight: bold; } /* Keyword */
code span.op { } /* Operator */
code span.ot { } /* Other */
code span.pp { color: #cb4b16; } /* Preprocessor */
code span.re { color: #cb4b16; } /* RegionMarker */
code span.sc { color: #dc322f; } /* SpecialChar */
code span.ss { color: #b58900; } /* SpecialString */
code span.st { color: #2aa198; } /* String */
code span.va { color: #cb4b16; } /* Variable */
code span.vs { color: #dc322f; } /* VerbatimString */
code span.wa { color: #b58900; } /* Warning */
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Home</h1>
<header id="title-block-header"> </header>
<h1 class="title">Home</h1> <section id="content">
</header> <article>
<article> <p>Hello World</p>
<p>Hello! I am Never and this is my little place on the </article>
internet where I post the stuff that I am currently nerding <nav id="articles">
out about.</p> <h2>Articles</h2>
<p>This Website itself is one of those projects, that I like <ul>
to tweak and tinker with. Maybe Ill write an article about <li>
its build system. It is also viewable via <code>curl</code>. <div class="articles-header">
Just run</p> <a href="latex-endeavors.html" class="articles-title">Latex
<div class="sourceCode" id="cb1"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">curl</span> nevereverever.de</span></code></pre></div>
<p>There also is an Atom Feed to stay updated about my
doings.</p>
</article>
<nav id="articles">
<h1>Articles</h1>
<ul>
<li>
<header class="articles-header">
<a href="beans-and-cornbread.html" class="articles-title">Bohnen
und Maisbrot</a>
</header>
<p class="articles-summary">Inspiriert von der Küche
der Kuhtreiber des Wilden Westens.</p>
<footer class="articles-footer">
<div class="articles-author">Never</div>
<div class="articles-date">2026-06-22</div>
</footer>
</li>
<li>
<header class="articles-header">
<a href="rsync-android.html" class="articles-title">Using
rsync on Android to syncronise my Music library</a>
</header>
<p class="articles-summary">As Spotify is getting
enshittified by capitalism, keeping a music library is kind of
essential. Here I use rsync to syncronise my library with my Android
smartphone.</p>
<footer class="articles-footer">
<div class="articles-author">Never</div>
<div class="articles-date">2026-01-12</div>
</footer>
</li>
<li>
<header class="articles-header">
<a href="latex-endeavors.html" class="articles-title">Latex
Endeavors</a> Endeavors</a>
</header> <p class="articles-author"><em>Never</em></p>
<p class="articles-summary">Latex undoubtedly has </div>
some quirks. Some of them have a rather unintuitive solution. In this <p class="articles-summary">Latex undoubtedly has some quirks. Some of
article I cover some quirks and solutions I have encountered.</p> them have a rather unintuitive solution. In this article I cover some
<footer class="articles-footer"> quirks and solutions I have encountered.</p>
<div class="articles-author">Never</div> <p class="articles-date">9.1.2026</p>
<div class="articles-date">2026-01-09</div> </li>
</footer> <li>
</li> <div class="articles-header">
<li> <a href="random-linux-utils.html" class="articles-title">Random linux
<header class="articles-header"> utilities</a>
<a href="random-linux-utils.html" class="articles-title">Random <p class="articles-author"><em>Never</em></p>
linux utilities</a> </div>
</header> <p class="articles-summary">Tricks and tools I learned about, while
<p class="articles-summary">Tricks and tools I tweaking my Linux sytem or trying to do productive things.</p>
learned about, while tweaking my Linux sytem or trying to do productive <p class="articles-date">25.7.2025</p>
things.</p> </li>
<footer class="articles-footer"> <li>
<div class="articles-author">Never</div> <div class="articles-header">
<div class="articles-date">2025-07-25</div> <a href="rsync-android.html" class="articles-title">Using rsync on
</footer> Android to syncronise my Music library</a>
</li> <p class="articles-author"><em>Never</em></p>
</ul> </div>
</nav> <p class="articles-summary">As Spotify is getting enshittified by
</main> capitalism, keeping a music library is kind of essential. Here I use
<footer id="page-footer"> rsync to syncronise my library with my Android smartphone.</p>
<nav id="webring"> <p class="articles-date">12.01.2026</p>
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" </li>
src="images/cups_left_dark.svg" width="30" height="30"></a> </ul>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" </nav>
width="120" height="60"></a> </section>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" <script>
src="images/cups_right_dark.svg" width="30" height="30"></a> let speed = 10;
</nav> let scale = 0.33; // Image scale (I work on 1080p monitor)
</footer> let canvas;
let ctx;
let logoColor;
let dvd = {
x: 256,
y: 354,
xspeed: 2,
yspeed: 2,
img: new Image()
};
(function main(){
canvas = document.getElementById("tv-screen");
ctx = canvas.getContext("2d");
dvd.img.src = 'images/shark.png';
//Draw the "tv screen"
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
pickColor();
update();
})();
function update() {
setTimeout(() => {
//Draw the canvas background
ctx.fillStyle = '#00000000';
ctx.clearRect(0, 0, canvas.width, canvas.height);
//Draw DVD Logo and his background
//ctx.fillStyle = logoColor;
//ctx.fillRect(dvd.x, dvd.y, dvd.img.width*scale, dvd.img.height*scale);
ctx.drawImage(dvd.img, dvd.x, dvd.y, dvd.img.width*scale, dvd.img.height*scale);
//Move the logo
dvd.x+=dvd.xspeed;
dvd.y+=dvd.yspeed;
//Check for collision
checkHitBox();
update();
}, speed)
}
//Check for border collision
function checkHitBox(){
if(dvd.x+dvd.img.width*scale >= canvas.width || dvd.x <= 0){
dvd.xspeed *= -1;
pickColor();
}
if(dvd.y+dvd.img.height*scale >= canvas.height || dvd.y <= 0){
dvd.yspeed *= -1;
pickColor();
}
}
//Pick a random color in RGB format
function pickColor(){
r = Math.random() * (254 - 0) + 0;
g = Math.random() * (254 - 0) + 0;
b = Math.random() * (254 - 0) + 0;
logoColor = 'rgb('+r+','+g+', '+b+')';
}
</script>
<footer id="page-footer">
<!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
</p>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

BIN
images/shark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

209
pandoc.md
View file

@ -1,209 +0,0 @@
---
title: Testing pandoc markdown capabilities
subtitle: Things I hope just work
author: Never
email: n.gude@posteo.de
date: 2025-07-25
summary: Pandocs wonderful Markdown features tested out.
---
# Level 1 Heading
A link to a Heading [Level 4 Heading] followed by another paragraph.
* fruits
Everything is a fruit
+ apples
- macintosh
- red delicious
+ pears
+ peaches
* vegetables
+ broccoli
+ chard
1. first
2. second
3. third
i. subone
ii. subtwo
iii. subthree
- [ ] an unchecked task list item
- [x] checked item
Lorem _ipsum dolor_ sit amet, consectetur *adipi*scing elit. Integer nisl enim, condimentum ~~vitae lacus vel~~, semper efficitur est. Cras pretium porta luctus. __Nulla iaculis__ nisi at quam varius, et con**sequat** lorem blandit. Ut tincidunt leo sit amet velit lobortis, et blandit metus mollis. Nam H~2~O tristique ex a quam aliquet, eget 2^10^ vehicula sapien `rhoncus`. Aliquam `return 0;`{.c} sodales pretium auctor. [Aliquam convallis]{.smallcaps} sodales [elementum]{.mark}.
```c
#include <stdio.h>
// TODO: A funny comment
int main() {
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
char greetings2[] = "Hello World!";
printf("%zu\n", sizeof(greetings));
printf("%zu\n", sizeof(greetings2));
return 0;
}
```
Aenean eros lacus, volutpat at molestie vitae, pretium eu diam. Quisque sit $1 + 2 + 3 + \cdots + n$ amet nisl ut dolor congue sodales.
$$
\sum_{i=1}^{n} i = \frac{n (n + 1)}{2}
$$
## Level 2 Heading
> This is a block quote with
> two lines and a
>
> 1. List item
> 2. Another list item
>
> > And a nested block quote
>
> Yeah
Term 1
: Definition 1
Term 2 with *inline markup*
: Definition 2
{ some code, part of Definition 2 }
Third paragraph of definition 2.
Term 1
~ Definition 1
Term 2
~ Definition 2a
~ Definition 2b
### Level 3 Heading
A little poem
| The limerick packs laughs anatomical
| In space that is quite economical.
| But the good ones I've seen
| So seldom are clean
| And the clean ones so seldom are comical
* * * *
(@) My first example will be numbered (1).
(@good) My second example will be numbered (2).
Explanation of examples.
(@) My third example will be numbered (3).
As (@good) illustrates, ...
---------------
#### Level 4 Heading
Right Left Center Default
------- ------ ---------- -------
12 12 12 12
123 123 123 123
1 1 1 1
Table: Demonstration of simple table syntax.
Following is a multiline table
-------------------------------------------------------------
Centered Default Right Left
Header Aligned Aligned Aligned
----------- ------- --------------- -------------------------
First row 12.0 Example of a row that
spans multiple lines.
Second row 5.0 Here's another one. Note
the blank line between
rows.
-------------------------------------------------------------
Table: Here's the caption. It, too, may span
multiple lines.
Then we have a Grid table
+---------------------+-----------------------+
| Location | Temperature 1961-1990 |
| | in degree Celsius |
| +-------+-------+-------+
| | min | mean | max |
+:====================+======:+======:+======:+
| Antarctica | -89.2 | N/A | 19.8 |
+---------------------+-------+-------+-------+
| Earth | -89.2 | 14 | 56.7 |
+---------------------+-------+-------+-------+
Table: Grid table
An a Pipe table
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
: Demonstration of pipe table syntax.
##### Level 5 Heading
<https://google.com>
<sam@green.eggs.ham>
[my label 1]: index.html "My title, optional"
[my label 2]: .
[my label 3]: https://fsf.org (The Free Software Foundation)
[my label 4]: index.html#articles 'A title in single quotes'
Link to [my label 1] and [my label 2] and [my label 3] and [my label 4]
This is an [inline link](/url), and here's [one with
a title](https://fsf.org "click here for a good time!") and [Write me!](mailto:sam@green.eggs.ham)
![The wonderful shork](images/shork.png "the shork"){width=20%}
Here is a footnote reference,[^1] and another.[^longnote]
[^1]: Here is the footnote.
[^longnote]: Here's one with multiple blocks.
Subsequent paragraphs are indented to show that they
belong to the previous footnote.
{ some.code }
The whole paragraph can be indented, or just the first
line. In this way, multi-paragraph footnotes work like
multi-paragraph list items.
This paragraph won't be part of the note, because it
isn't indented.
###### Level 6 Heading
::: Warning ::::::
This is a warning.
::: Danger
This is a warning within a warning.
:::
::::::::::::::::::

View file

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>$title$</title>
<link href="$link$"/>
<id>$id$</id>
<updated>$updated$</updated>
<published>$date$</published>
<author>
<name>$author$</name>
</author>
$if(subtitle)$
<subtitle>$subtitle$</subtitle>
$endif$
$for(articles)$
<entry>
<title>$articles.title$</title>
<link href="$link$/$articles.filename$.html"/>
<id>$articles.filename$</id>
<updated>$if(articles.updated)$$articles.updated$$else$$articles.date$$endif$</updated>
<published>$articles.date$</published>
<author>
<name>$articles.author$</name>
</author>
<summary>$articles.summary$</summary>
</entry>
$endfor$
</feed>

View file

@ -1,124 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$" $if(dir)$ dir="$dir$" $endif$>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
$for(author-meta)$
<meta name="author" content="$author-meta$" />
$endfor$
$if(date-meta)$
<meta name="dcterms.date" content="$date-meta$" />
$endif$
$if(keywords)$
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
$endif$
$if(description-meta)$
<meta name="description" content="$description-meta$" />
$endif$
<title>$if(title-prefix)$$title-prefix$ $endif$$pagetitle$</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml">
<style>
$styles.html()$
</style>
$for(css)$
<link rel="stylesheet" href="$css$">
$endfor$
$for(header-includes)$
$header-includes$
$endfor$
$if(math)$
$if(mathjax)$
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
$endif$
$math$
$endif$
</head>
<body>
$for(include-before)$
$include-before$
$endfor$
<img id="shork" src="images/shork.png"></img>
<header id="page-header">
<a class="page-header-button" href="index.html">Home</a>
<a class="rss-button" href="atom.xml">Atom Feed</a>
</header>
<main id="page">
$if(title)$
<header id="title-block-header">
<h1 class="title">$title$</h1>
$if(subtitle)$
<p class="subtitle">$subtitle$</p>
$endif$
$for(author)$
<p class="author">$author$</p>
$endfor$
$if(date)$
<p class="date">$date$</p>
$endif$
$if(abstract)$
<div class="abstract">
<div class="abstract-title">$abstract-title$</div>
$abstract$
</div>
$endif$
</header>
$endif$
$if(toc)$
<nav id="$idprefix$TOC" role="doc-toc">
$if(toc-title)$
<h2 id="$idprefix$toc-title">$toc-title$</h2>
$endif$
$table-of-contents$
</nav>
$endif$
<article>
$body$
</article>
$if(articles)$
<nav id="articles">
<h1>Articles</h1>
<ul>
$for(articles)$
<li>
<header class="articles-header">
$if(articles.title)$
<a href="$articles.filename$.html" class="articles-title">$articles.title$</a>
$endif$
</header>
$if(articles.summary)$
<p class="articles-summary">$articles.summary$</p>
$endif$
<footer class="articles-footer">
$if(articles.author)$
<div class="articles-author">$articles.author$</div>
$endif$
$if(articles.date)$
<div class="articles-date">$articles.date$</div>
$endif$
</footer>
</li>
$endfor$
</ul>
</nav>
$endif$
</main>
<footer id="page-footer">
<nav id="webring">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous"
src="images/cups_left_dark.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg"
width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next"
src="images/cups_right_dark.svg" width="30" height="30"></a>
</nav>
</footer>
$for(include-after)$
$include-after$
$endfor$
</body>
<script src="scripts/shork.js"></script>
</html>

View file

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
$if(title)$
<title>$title$</title>
$endif$
$if(link)$
<link>$link$</link>
$endif$
$if(description)$
<description>$description$</description>
$endif$
$if(lang)$
<language>$lang$</language>
$endif$
$if(pubdate)$
<pubDate>$pubdate$</pubDate>
$endif$
$if(builddate)$
<lastBuildDate>$builddate$</lastBuildDate>
$endif$
<docs>https://www.rssboard.org/rss-specification</docs>
<generator>pandoc</generator>
$if(editor)$
<managingEditor>$editor$</managingEditor>
$endif$
$if(webmaster)$
<webMaster>$webmaster$</webMaster>
$endif$
$for(articles)$
<item>
$if(articles.title)$
<title>$articles.title$</title>
$endif$
$if(articles.email)$
<author>$articles.email$$if(articles.author)$ ($articles.author$)$endif$</author>
$endif$
$if(articles.filename)$
<link>$link$/$articles.filename$.html</link>
$endif$
$if(articles.summary)$
<description>$articles.summary$</description>
$endif$
$if(articles.pubdate)$
<pubDate>$articles.pubdate$</pubDate>
$endif$
$if(articles.filename)$
<guid>$articles.filename$</guid>
$endif$
</item>
$endfor$
</channel>
</rss>

View file

@ -1,226 +0,0 @@
{
"metadata": {
"author": "Never Gude <n.gude@posteo.de>",
"license": "Unlicense",
"name": "solarized",
"revision": 1
},
"text-color": "#839496",
"background-color": "#002b36",
"line-number-color": "#586e75",
"line-number-background-color": "#073642",
"text-styles": {
"Alert": {
"text-color": "#d33682",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Annotation": {
"text-color": "#dc322f",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Attribute": {
"text-color": "#dc322f",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"BaseN": {
"text-color": "#2aa198",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"BuiltIn": {
"text-color": "#b58900",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Char": {
"text-color": "#2aa198",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Comment": {
"text-color": "#586e75",
"background-color": null,
"bold": false,
"italic": true,
"underline": false
},
"CommentVar": {
"text-color": "#268bd2",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Constant": {
"text-color": "#b58900",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"ControlFlow": {
"text-color": "#859900",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"DataType": {
"text-color": "#b58900",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"DecVal": {
"text-color": "#2aa198",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Documentation": {
"text-color": "#586e75",
"background-color": null,
"bold": false,
"italic": true,
"underline": false
},
"Error": {
"text-color": "#dc322f",
"background-color": null,
"bold": false,
"italic": false,
"underline": true
},
"Extension": {
"text-color": "#b58900",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Float": {
"text-color": "#2aa198",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Function": {
"text-color": null,
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Import": {
"text-color": "#cb4b16",
"background-color": null,
"bold": null,
"italic": false,
"underline": false
},
"Information": {
"text-color": "#268bd2",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Keyword": {
"text-color": "#93a1a1",
"background-color": null,
"bold": true,
"italic": false,
"underline": false
},
"Operator": {
"text-color": null,
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Others": {
"text-color": null,
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Preprocessor": {
"text-color": "#cb4b16",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"RegionMarker": {
"text-color": "#cb4b16",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"SpecialChar": {
"text-color": "#dc322f",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"SpecialString": {
"text-color": "#b58900",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"String": {
"text-color": "#2aa198",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Variable": {
"text-color": "#cb4b16",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"VerbatimString": {
"text-color": "#dc322f",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
},
"Warning": {
"text-color": "#b58900",
"background-color": null,
"bold": false,
"italic": false,
"underline": false
}
}
}

View file

@ -26,7 +26,7 @@ $endif$
$if(articles.summary)$ $if(articles.summary)$
$articles.summary$ $articles.summary$
$endif$ $endif$
$if(articles.author)$ $articles.author$$endif$$if(articles.date)$ - $articles.date$$endif$ $if(articles.author)$ $articles.author$$endif$$if(articles.date)$ - $articles.date$$endif$
$endfor$ $endfor$
$endif$ $endif$

115
pandoc/template.html Normal file
View file

@ -0,0 +1,115 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
$for(author-meta)$
<meta name="author" content="$author-meta$" />
$endfor$
$if(date-meta)$
<meta name="dcterms.date" content="$date-meta$" />
$endif$
$if(keywords)$
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
$endif$
$if(description-meta)$
<meta name="description" content="$description-meta$" />
$endif$
<title>$if(title-prefix)$$title-prefix$ $endif$$pagetitle$</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png">
<style>
$styles.html()$
</style>
$for(css)$
<link rel="stylesheet" href="$css$">
$endfor$
$for(header-includes)$
$header-includes$
$endfor$
$if(math)$
$if(mathjax)$
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
$endif$
$math$
$endif$
</head>
<body>
<canvas id="tv-screen"></canvas>
<header id="page-header">
<ul><li><a href="index.html">Home</a></li></ul>
</header>
$for(include-before)$
$include-before$
$endfor$
$if(title)$
<header id="title-block-header">
<h1 class="title">$title$</h1>
$if(subtitle)$
<p class="subtitle">$subtitle$</p>
$endif$
$for(author)$
<p class="author">$author$</p>
$endfor$
$if(date)$
<p class="date">$date$</p>
$endif$
$if(abstract)$
<div class="abstract">
<div class="abstract-title">$abstract-title$</div>
$abstract$
</div>
$endif$
</header>
<section id="content">
$endif$
$if(toc)$
<nav id="$idprefix$TOC" role="doc-toc">
$if(toc-title)$
<h2 id="$idprefix$toc-title">$toc-title$</h2>
$endif$
$table-of-contents$
</nav>
$endif$
<article>
$body$
</article>
$if(articles)$
<nav id="articles">
<h2>Articles</h2>
<ul>
$for(articles)$
<li>
<div class="articles-header">
$if(articles.title)$
<a href="$articles.filename$.html" class="articles-title">$articles.title$</a>
$endif$
$if(articles.author)$
<p class="articles-author"><em>$articles.author$</em></p>
$endif$
</div>
$if(articles.summary)$
<p class="articles-summary">$articles.summary$</p>
$endif$
$if(articles.date)$
<p class="articles-date">$articles.date$</p>
$endif$
</li>
$endfor$
</ul>
</nav>
$endif$
</section>
$for(include-after)$
$include-after$
$endfor$
<footer id="page-footer">
<!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
</p>
</footer>
</body>
</html>

View file

@ -1,71 +0,0 @@
Bohnen und Maisbrot
Never
2026-06-22
────────────────────
BOHNEN
Maße Zutaten
─────────────────────────────────── ───────────────────────────────────
2 Zwiebeln
2 Knoblauchzehen
1 rote Chili (Peperoni/Chile de
árbol¹)
Kreuzkümmel
Speckwürfel (Optional)
1 l Brühe (Gemüse/Huhn/Rind)
1 Dose Kidneybohnen
1 Dose Pintobohnen oder andere Bohnen
1 Chile Ancho² oder geräuchertes
Paprikapulver
Petersilienstängel
Limettensaft
Salz
─────────────────────────────────── ───────────────────────────────────
Zubereitung
1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und Speckwürfel
anbraten.
2. Mit Brühe ablöschen und die Bohnen, Ancho Chili und
Petersilienstängel hinzufügen. Köcheln und etwas reduzieren lassen.
3. Mit Salz und Limettensaft abschmecken.
MAISBROT
Maße Zutaten
─────────────────────────────────── ───────────────────────────────────
1 Tasse Mehl
1 Tasse Maismehl
4 TL Backpulver
Salz
1/4 Tasse brauner Zucker
1 Ei
1/3 Tasse flüssige Butter
1 - 2 Tassen Milch oder Buttermilch
1/3 Tasse flüssige Butter
Speckwürfel (Optional)
Gehackte grüne Chilis (Optional)
─────────────────────────────────── ───────────────────────────────────
Zubereitung
1. Trockene Zutaten mischen.
2. Ei und Butter unterrühren.
3. Schrittweise die Milch hinzugeben, bis eine zähflüssige Masse
entstanden ist.
────────────────────
1. ]8;;https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol\Chile de árbol]8;;\; Eine kleine, scharfe, rote Chili. Meist getrocknet
zu finden.
2. ]8;;https://en.wikipedia.org/wiki/Poblano\Chile Ancho]8;;\; Eine große getrocknete Chili mit rauchigem Geschmack.
]8;;\

View file

@ -2,38 +2,25 @@
──────────────────── ────────────────────
Hello! I am Never and this is my little place on the internet where I Hello World
post the stuff that I am currently nerding out about.
This Website itself is one of those projects, that I like to tweak and
tinker with. Maybe Ill write an article about its build system. It is
also viewable via  curl . Just run
curl nevereverever.de
There also is an Atom Feed to stay updated about my doings.
ARTICLES ARTICLES
Bohnen und Maisbrot (beans-and-cornbread) Latex Endeavors (latex-endeavors)
Inspiriert von der Küche der Kuhtreiber des Wilden Westens. Latex undoubtedly has some quirks. Some of them have a rather
Never - 2026-06-22 unintuitive solution. In this article I cover some quirks and solutions
I have encountered.
Never - 9.1.2026
Random linux utilities (random-linux-utils)
Tricks and tools I learned about, while tweaking my Linux sytem or
trying to do productive things.
Never - 25.7.2025
Using rsync on Android to syncronise my Music Using rsync on Android to syncronise my Music
library (rsync-android) library (rsync-android)
As Spotify is getting enshittified by capitalism, keeping a music As Spotify is getting enshittified by capitalism, keeping a music
library is kind of essential. Here I use rsync to syncronise my library library is kind of essential. Here I use rsync to syncronise my library
with my Android smartphone. with my Android smartphone.
Never - 2026-01-12 Never - 12.01.2026
Latex Endeavors (latex-endeavors)
Latex undoubtedly has some quirks. Some of them have a rather
unintuitive solution. In this article I cover some quirks and solutions
I have encountered.
Never - 2026-01-09
Random linux utilities (random-linux-utils)
Tricks and tools I learned about, while tweaking my Linux sytem or
trying to do productive things.
Never - 2025-07-25
]8;;\ ]8;;\

View file

@ -3,7 +3,7 @@
Never Never
2026-01-09 9.1.2026
──────────────────── ────────────────────

View file

@ -1,218 +0,0 @@
Testing pandoc markdown capabilities
Things I hope just work
Never
2025-07-25
────────────────────
LEVEL 1 HEADING
A link to a Heading ]8;;#level-4-heading\Level 4 Heading]8;;\ followed by another paragraph.
• fruits
Everything is a fruit
• apples
• macintosh
• red delicious
• pears
• peaches
• vegetables
• broccoli
• chard
1. first
2. second
3. third
i. subone
ii. subtwo
iii. subthree
• ☐ an unchecked task list item
• ☒ checked item
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nisl
enim, condimentum vitae lacus vel, semper efficitur est. Cras pretium
porta luctus. Nulla iaculis nisi at quam varius, et consequat lorem
blandit. Ut tincidunt leo sit amet velit lobortis, et blandit metus
mollis. Nam H₂O tristique ex a quam aliquet, eget 2¹⁰ vehicula sapien
 rhoncus . Aliquam  return 0;  sodales pretium auctor. Aliquam convallis
sodales elementum.
1 #include <stdio.h>
2
3 // TODO: A funny comment
4 int main() {
5  char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
6  char greetings2[] = "Hello World!";
7
8  printf("%zu\n", sizeof(greetings));
9  printf("%zu\n", sizeof(greetings2));
10
11  return 0;
12 }
Aenean eros lacus, volutpat at molestie vitae, pretium eu diam. Quisque
sit 1+2+3+ ⋯ +n amet nisl ut dolor congue sodales.
$$
\sum_{i=1}^{n} i = \frac{n (n + 1)}{2}
$$
Level 2 Heading
│ This is a block quote with two lines and a
│ 1. List item
│ 2. Another list item
│ │ And a nested block quote
│ Yeah
Term 1
Definition 1
Term 2 with inline markup
Definition 2
{ some code, part of Definition 2 }
Third paragraph of definition 2.
Term 1
Definition 1
Term 2
Definition 2a
Definition 2b
Level 3 Heading
A little poem
The limerick packs laughs anatomical
In space that is quite economical.
   But the good ones Ive seen
   So seldom are clean
And the clean ones so seldom are comical
────────────────────
(1) My first example will be numbered (1).
(2) My second example will be numbered (2).
Explanation of examples.
(3) My third example will be numbered (3).
As (2) illustrates, …
────────────────────
Level 4 Heading
Right Left Center Default
───────────────── ───────────────── ───────────────── ─────────────────
12 12 12 12
123 123 123 123
1 1 1 1
───────────────── ───────────────── ───────────────── ─────────────────
Demonstration of simple table syntax.
Following is a multiline table
Centered Default Right Aligned Left Aligned
Header Aligned
─────────── ─────── ─────────────── ────────────────────────
First row 12.0 Example of a row that
spans multiple lines.
Second row 5.0 Heres another one. Note
the blank line between
rows.
─────────── ─────── ─────────────── ────────────────────────
Heres the caption. It, too, may span multiple lines.
Then we have a Grid table
Location Temperature 1961-1990
in degree Celsius
min mean max
───────────────────── ─────── ─────── ───────
Antarctica -89.2 N/A 19.8
Earth -89.2 14 56.7
───────────────────── ─────── ─────── ───────
Grid table
An a Pipe table
Right Left Default Center
───────────────── ───────────────── ───────────────── ─────────────────
12 12 12 12
123 123 123 123
1 1 1 1
───────────────── ───────────────── ───────────────── ─────────────────
Demonstration of pipe table syntax.
Level 5 Heading
]8;;https://google.com\https://google.com]8;;\
]8;;mailto:sam@green.eggs.ham\sam@green.eggs.ham]8;;\
Link to ]8;;index.html\my label 1]8;;\ and ]8;;.\my label 2]8;;\ and ]8;;https://fsf.org\my label 3]8;;\ and ]8;;index.html#articles\my label 4]8;;\
This is an ]8;;/url\inline link]8;;\, and heres ]8;;https://fsf.org\one with a title]8;;\ and ]8;;mailto:sam@green.eggs.ham\Write me!]8;;\
[image]
The wonderful shork
Here is a footnote reference,¹ and another.²
This paragraph wont be part of the note, because it isnt indented.
Level 6 Heading
This is a warning.
This is a warning within a warning.
────────────────────
1. Here is the footnote.
2. Heres one with multiple blocks.
Subsequent paragraphs are indented to show that they belong to the
previous footnote.
{ some.code }
The whole paragraph can be indented, or just the first line. In
this way, multi-paragraph footnotes work like multi-paragraph list
items.
]8;;\

View file

@ -3,7 +3,7 @@
Never Never
2025-07-25 25.7.2025
──────────────────── ────────────────────

View file

@ -2,7 +2,7 @@
Never Never
2026-01-12 12.01.2026
──────────────────── ────────────────────
@ -89,4 +89,28 @@ config.
Now on your Linux machine, syncronise your Music library with rsync. Now on your Linux machine, syncronise your Music library with rsync.
rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
Refreshing the Android MediaStore
Android uses a Database to store files. In order to play your music,
this database needs to be refreshed. This can be achieved by a reboot or
by using adb to manually refresh it.
sudo dnf install adb
Connect the Android device via USB and see if it is listed.
adb devices
If it is, restart adb in TCP mode with port 5555
adb tcpip 5555
Connect to the device using its .
adb connect <ip_address>
Refresh MediaStore.
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/
]8;;\ ]8;;\

View file

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>nevereverever.de</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh"/>
<id>nevereverever.de</id>
<updated>2026-06-22T22:12+02:00</updated>
<published>2026-03-10</published>
<author>
<name>Never</name>
</author>
<subtitle>Here I post random stuff.</subtitle>
<entry>
<title>Bohnen und Maisbrot</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/beans-and-cornbread.html"/>
<id>beans-and-cornbread</id>
<updated>2026-06-22T20:47+02:00</updated>
<published>2026-06-22</published>
<author>
<name>Never</name>
</author>
<summary>Inspiriert von der Küche der Kuhtreiber des Wilden
Westens.</summary>
</entry>
<entry>
<title>Using rsync on Android to syncronise my Music
library</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/rsync-android.html"/>
<id>rsync-android</id>
<updated>2026-01-12T16:24+01:00</updated>
<published>2026-01-12</published>
<author>
<name>Never</name>
</author>
<summary>As Spotify is getting enshittified by capitalism,
keeping a music library is kind of essential. Here I use rsync to
syncronise my library with my Android smartphone.</summary>
</entry>
<entry>
<title>Latex Endeavors</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/latex-endeavors.html"/>
<id>latex-endeavors</id>
<updated>2026-01-10T16:23+01:00</updated>
<published>2026-01-09</published>
<author>
<name>Never</name>
</author>
<summary>Latex undoubtedly has some quirks. Some of them have a
rather unintuitive solution. In this article I cover some quirks and
solutions I have encountered.</summary>
</entry>
<entry>
<title>Random linux utilities</title>
<link href="https://nevereverever.de/eh/eh/eh/eh-eh/random-linux-utils.html"/>
<id>random-linux-utils</id>
<updated>2025-07-25T16:24+01:00</updated>
<published>2025-07-25</published>
<author>
<name>Never</name>
</author>
<summary>Tricks and tools I learned about, while tweaking my
Linux sytem or trying to do productive things.</summary>
</entry>
</feed>

View file

@ -1,227 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" >
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" />
<meta name="dcterms.date" content="2026-06-22" />
<title>Bohnen und Maisbrot</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
</style>
<link rel="stylesheet" href="styles/style.css">
</head>
<body>
<img id="shork" src="images/shork.png"></img>
<header id="page-header">
<a class="page-header-button" href="index.html">Home</a>
<a class="rss-button" href="atom.xml">Atom Feed</a>
</header>
<main id="page">
<header id="title-block-header">
<h1 class="title">Bohnen und Maisbrot</h1>
<p class="author">Never</p>
<p class="date">2026-06-22</p>
</header>
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#bohnen" id="toc-bohnen">Bohnen</a>
<ul>
<li><a href="#zubereitung"
id="toc-zubereitung">Zubereitung</a></li>
</ul></li>
<li><a href="#maisbrot" id="toc-maisbrot">Maisbrot</a>
<ul>
<li><a href="#zubereitung-1"
id="toc-zubereitung-1">Zubereitung</a></li>
</ul></li>
</ul>
</nav>
<article>
<h1 id="bohnen">Bohnen</h1>
<table>
<thead>
<tr>
<th style="text-align: right;">Maße</th>
<th style="text-align: left;">Zutaten</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">2</td>
<td style="text-align: left;">Zwiebeln</td>
</tr>
<tr>
<td style="text-align: right;">2</td>
<td style="text-align: left;">Knoblauchzehen</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">rote Chili (Peperoni/Chile de
árbol<a href="#fn1" class="footnote-ref" id="fnref1"
role="doc-noteref"><sup>1</sup></a>)</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Kreuzkümmel</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Speckwürfel (Optional)</td>
</tr>
<tr>
<td style="text-align: right;">1 l</td>
<td style="text-align: left;">Brühe (Gemüse/Huhn/Rind)</td>
</tr>
<tr>
<td style="text-align: right;">1 Dose</td>
<td style="text-align: left;">Kidneybohnen</td>
</tr>
<tr>
<td style="text-align: right;">1 Dose</td>
<td style="text-align: left;">Pintobohnen oder andere
Bohnen</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">Chile Ancho<a href="#fn2"
class="footnote-ref" id="fnref2"
role="doc-noteref"><sup>2</sup></a> oder geräuchertes
Paprikapulver</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Petersilienstängel</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Limettensaft</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Salz</td>
</tr>
</tbody>
</table>
<h2 id="zubereitung">Zubereitung</h2>
<ol type="1">
<li><p>Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und
Speckwürfel anbraten.</p></li>
<li><p>Mit Brühe ablöschen und die Bohnen, Ancho Chili und
Petersilienstängel hinzufügen. Köcheln und etwas reduzieren
lassen.</p></li>
<li><p>Mit Salz und Limettensaft abschmecken.</p></li>
</ol>
<h1 id="maisbrot">Maisbrot</h1>
<table>
<thead>
<tr>
<th style="text-align: right;">Maße</th>
<th style="text-align: left;">Zutaten</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">1 Tasse</td>
<td style="text-align: left;">Mehl</td>
</tr>
<tr>
<td style="text-align: right;">1 Tasse</td>
<td style="text-align: left;">Maismehl</td>
</tr>
<tr>
<td style="text-align: right;">4 TL</td>
<td style="text-align: left;">Backpulver</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Salz</td>
</tr>
<tr>
<td style="text-align: right;">1/4 Tasse</td>
<td style="text-align: left;">brauner Zucker</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">Ei</td>
</tr>
<tr>
<td style="text-align: right;">1/3 Tasse</td>
<td style="text-align: left;">flüssige Butter</td>
</tr>
<tr>
<td style="text-align: right;">1 - 2 Tassen</td>
<td style="text-align: left;">Milch oder Buttermilch</td>
</tr>
<tr>
<td style="text-align: right;">1/3 Tasse</td>
<td style="text-align: left;">flüssige Butter</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Speckwürfel (Optional)</td>
</tr>
<tr>
<td style="text-align: right;"></td>
<td style="text-align: left;">Gehackte grüne Chilis
(Optional)</td>
</tr>
</tbody>
</table>
<h2 id="zubereitung-1">Zubereitung</h2>
<ol type="1">
<li><p>Trockene Zutaten mischen.</p></li>
<li><p>Ei und Butter unterrühren.</p></li>
<li><p>Schrittweise die Milch hinzugeben, bis eine
zähflüssige Masse entstanden ist.</p></li>
</ol>
<section id="footnotes"
class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
<li id="fn1"><p><a
href="https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol">Chile
de árbol</a>; Eine kleine, scharfe, rote Chili. Meist
getrocknet zu finden.<a href="#fnref1" class="footnote-back"
role="doc-backlink">↩︎</a></p></li>
<li id="fn2"><p><a
href="https://en.wikipedia.org/wiki/Poblano">Chile
Ancho</a>; Eine große getrocknete Chili mit rauchigem
Geschmack.<a href="#fnref2" class="footnote-back"
role="doc-backlink">↩︎</a></p></li>
</ol>
</section>
</article>
</main>
<footer id="page-footer">
<nav id="webring">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous"
src="images/cups_left_dark.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg"
width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next"
src="images/cups_right_dark.svg" width="30" height="30"></a>
</nav>
</footer>
</body>
<script src="scripts/shork.js"></script>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

View file

@ -1,190 +1,154 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Home</title> <title>Home</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> <style>
<style> code{white-space: pre-wrap;}
code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;}
span.smallcaps{font-variant: small-caps;} div.columns{display: flex; gap: min(4vw, 1.5em);}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.column{flex: auto; overflow-x: auto;}
div.column{flex: auto; overflow-x: auto;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} /* The extra [class] is a hack that increases specificity enough to
/* The extra [class] is a hack that increases specificity enough to override a similar rule in reveal.js */
override a similar rule in reveal.js */ ul.task-list[class]{list-style: none;}
ul.task-list[class]{list-style: none;} ul.task-list li input[type="checkbox"] {
ul.task-list li input[type="checkbox"] { font-size: inherit;
font-size: inherit; width: 0.8em;
width: 0.8em; margin: 0 0.8em 0.2em -1.6em;
margin: 0 0.8em 0.2em -1.6em; vertical-align: middle;
vertical-align: middle; }
} </style>
/* CSS for syntax highlighting */ <link rel="stylesheet" href="styles/style.css">
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
background-color: #073642;
color: #586e75;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #586e75; padding-left: 4px; }
div.sourceCode
{ color: #839496; background-color: #002b36; }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #d33682; } /* Alert */
code span.an { color: #dc322f; } /* Annotation */
code span.at { color: #dc322f; } /* Attribute */
code span.bn { color: #2aa198; } /* BaseN */
code span.bu { color: #b58900; } /* BuiltIn */
code span.cf { color: #859900; } /* ControlFlow */
code span.ch { color: #2aa198; } /* Char */
code span.cn { color: #b58900; } /* Constant */
code span.co { color: #586e75; font-style: italic; } /* Comment */
code span.cv { color: #268bd2; } /* CommentVar */
code span.do { color: #586e75; font-style: italic; } /* Documentation */
code span.dt { color: #b58900; } /* DataType */
code span.dv { color: #2aa198; } /* DecVal */
code span.er { color: #dc322f; text-decoration: underline; } /* Error */
code span.ex { color: #b58900; } /* Extension */
code span.fl { color: #2aa198; } /* Float */
code span.fu { } /* Function */
code span.im { color: #cb4b16; } /* Import */
code span.in { color: #268bd2; } /* Information */
code span.kw { color: #93a1a1; font-weight: bold; } /* Keyword */
code span.op { } /* Operator */
code span.ot { } /* Other */
code span.pp { color: #cb4b16; } /* Preprocessor */
code span.re { color: #cb4b16; } /* RegionMarker */
code span.sc { color: #dc322f; } /* SpecialChar */
code span.ss { color: #b58900; } /* SpecialString */
code span.st { color: #2aa198; } /* String */
code span.va { color: #cb4b16; } /* Variable */
code span.vs { color: #dc322f; } /* VerbatimString */
code span.wa { color: #b58900; } /* Warning */
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Home</h1>
<header id="title-block-header"> </header>
<h1 class="title">Home</h1> <section id="content">
</header> <article>
<article> <p>Hello World</p>
<p>Hello! I am Never and this is my little place on the </article>
internet where I post the stuff that I am currently nerding <nav id="articles">
out about.</p> <h2>Articles</h2>
<p>This Website itself is one of those projects, that I like <ul>
to tweak and tinker with. Maybe Ill write an article about <li>
its build system. It is also viewable via <code>curl</code>. <div class="articles-header">
Just run</p> <a href="latex-endeavors.html" class="articles-title">Latex
<div class="sourceCode" id="cb1"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">curl</span> nevereverever.de</span></code></pre></div>
<p>There also is an Atom Feed to stay updated about my
doings.</p>
</article>
<nav id="articles">
<h1>Articles</h1>
<ul>
<li>
<header class="articles-header">
<a href="beans-and-cornbread.html" class="articles-title">Bohnen
und Maisbrot</a>
</header>
<p class="articles-summary">Inspiriert von der Küche
der Kuhtreiber des Wilden Westens.</p>
<footer class="articles-footer">
<div class="articles-author">Never</div>
<div class="articles-date">2026-06-22</div>
</footer>
</li>
<li>
<header class="articles-header">
<a href="rsync-android.html" class="articles-title">Using
rsync on Android to syncronise my Music library</a>
</header>
<p class="articles-summary">As Spotify is getting
enshittified by capitalism, keeping a music library is kind of
essential. Here I use rsync to syncronise my library with my Android
smartphone.</p>
<footer class="articles-footer">
<div class="articles-author">Never</div>
<div class="articles-date">2026-01-12</div>
</footer>
</li>
<li>
<header class="articles-header">
<a href="latex-endeavors.html" class="articles-title">Latex
Endeavors</a> Endeavors</a>
</header> <p class="articles-author"><em>Never</em></p>
<p class="articles-summary">Latex undoubtedly has </div>
some quirks. Some of them have a rather unintuitive solution. In this <p class="articles-summary">Latex undoubtedly has some quirks. Some of
article I cover some quirks and solutions I have encountered.</p> them have a rather unintuitive solution. In this article I cover some
<footer class="articles-footer"> quirks and solutions I have encountered.</p>
<div class="articles-author">Never</div> <p class="articles-date">9.1.2026</p>
<div class="articles-date">2026-01-09</div> </li>
</footer> <li>
</li> <div class="articles-header">
<li> <a href="random-linux-utils.html" class="articles-title">Random linux
<header class="articles-header"> utilities</a>
<a href="random-linux-utils.html" class="articles-title">Random <p class="articles-author"><em>Never</em></p>
linux utilities</a> </div>
</header> <p class="articles-summary">Tricks and tools I learned about, while
<p class="articles-summary">Tricks and tools I tweaking my Linux sytem or trying to do productive things.</p>
learned about, while tweaking my Linux sytem or trying to do productive <p class="articles-date">25.7.2025</p>
things.</p> </li>
<footer class="articles-footer"> <li>
<div class="articles-author">Never</div> <div class="articles-header">
<div class="articles-date">2025-07-25</div> <a href="rsync-android.html" class="articles-title">Using rsync on
</footer> Android to syncronise my Music library</a>
</li> <p class="articles-author"><em>Never</em></p>
</ul> </div>
</nav> <p class="articles-summary">As Spotify is getting enshittified by
</main> capitalism, keeping a music library is kind of essential. Here I use
<footer id="page-footer"> rsync to syncronise my library with my Android smartphone.</p>
<nav id="webring"> <p class="articles-date">12.01.2026</p>
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" </li>
src="images/cups_left_dark.svg" width="30" height="30"></a> </ul>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" </nav>
width="120" height="60"></a> </section>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" <script>
src="images/cups_right_dark.svg" width="30" height="30"></a> let speed = 10;
</nav> let scale = 0.33; // Image scale (I work on 1080p monitor)
</footer> let canvas;
let ctx;
let logoColor;
let dvd = {
x: 256,
y: 354,
xspeed: 2,
yspeed: 2,
img: new Image()
};
(function main(){
canvas = document.getElementById("tv-screen");
ctx = canvas.getContext("2d");
dvd.img.src = 'images/shark.png';
//Draw the "tv screen"
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
pickColor();
update();
})();
function update() {
setTimeout(() => {
//Draw the canvas background
ctx.fillStyle = '#00000000';
ctx.clearRect(0, 0, canvas.width, canvas.height);
//Draw DVD Logo and his background
//ctx.fillStyle = logoColor;
//ctx.fillRect(dvd.x, dvd.y, dvd.img.width*scale, dvd.img.height*scale);
ctx.drawImage(dvd.img, dvd.x, dvd.y, dvd.img.width*scale, dvd.img.height*scale);
//Move the logo
dvd.x+=dvd.xspeed;
dvd.y+=dvd.yspeed;
//Check for collision
checkHitBox();
update();
}, speed)
}
//Check for border collision
function checkHitBox(){
if(dvd.x+dvd.img.width*scale >= canvas.width || dvd.x <= 0){
dvd.xspeed *= -1;
pickColor();
}
if(dvd.y+dvd.img.height*scale >= canvas.height || dvd.y <= 0){
dvd.yspeed *= -1;
pickColor();
}
}
//Pick a random color in RGB format
function pickColor(){
r = Math.random() * (254 - 0) + 0;
g = Math.random() * (254 - 0) + 0;
b = Math.random() * (254 - 0) + 0;
logoColor = 'rgb('+r+','+g+', '+b+')';
}
</script>
<footer id="page-footer">
<!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
</p>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

View file

@ -1,76 +1,68 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" /> <meta name="author" content="Never" />
<meta name="dcterms.date" content="2026-01-09" /> <title>Latex Endeavors</title>
<title>Latex Endeavors</title> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <style>
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> code{white-space: pre-wrap;}
<style> span.smallcaps{font-variant: small-caps;}
code{white-space: pre-wrap;} div.columns{display: flex; gap: min(4vw, 1.5em);}
span.smallcaps{font-variant: small-caps;} div.column{flex: auto; overflow-x: auto;}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.column{flex: auto; overflow-x: auto;} /* The extra [class] is a hack that increases specificity enough to
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} override a similar rule in reveal.js */
/* The extra [class] is a hack that increases specificity enough to ul.task-list[class]{list-style: none;}
override a similar rule in reveal.js */ ul.task-list li input[type="checkbox"] {
ul.task-list[class]{list-style: none;} font-size: inherit;
ul.task-list li input[type="checkbox"] { width: 0.8em;
font-size: inherit; margin: 0 0.8em 0.2em -1.6em;
width: 0.8em; vertical-align: middle;
margin: 0 0.8em 0.2em -1.6em; }
vertical-align: middle; </style>
} <link rel="stylesheet" href="styles/style.css">
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Latex Endeavors</h1>
<header id="title-block-header"> <p class="subtitle">Some unintuitive quirks of Latex</p>
<h1 class="title">Latex Endeavors</h1> <p class="author">Never</p>
<p class="subtitle">Some unintuitive quirks of Latex</p> <p class="date">9.1.2026</p>
<p class="author">Never</p> </header>
<p class="date">2026-01-09</p> <section id="content">
</header> <nav id="TOC" role="doc-toc">
<nav id="TOC" role="doc-toc"> <ul>
<ul> <li><a href="#biblatex-and-biber" id="toc-biblatex-and-biber">BibLaTeX
<li><a href="#biblatex-and-biber" and Biber</a>
id="toc-biblatex-and-biber">BibLaTeX and Biber</a> <ul>
<ul> <li><a href="#biber-doesnt-run" id="toc-biber-doesnt-run">Biber doesnt
<li><a href="#biber-doesnt-run" run</a></li>
id="toc-biber-doesnt-run">Biber doesnt run</a></li> </ul></li>
</ul></li> </ul>
</ul> </nav>
</nav> <article>
<article> <h1 id="biblatex-and-biber">BibLaTeX and Biber</h1>
<h1 id="biblatex-and-biber">BibLaTeX and Biber</h1> <h2 id="biber-doesnt-run">Biber doesnt run</h2>
<h2 id="biber-doesnt-run">Biber doesnt run</h2> <p>Biber doenst run if the (fedora) package
<p>Biber doenst run if the (fedora) package <code>libxcrypt-compat</code> is missing. It will fail with the error
<code>libxcrypt-compat</code> is missing. It will fail with message</p>
the error message</p> <pre><code>biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</code></pre>
<pre><code>biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</code></pre> </article>
</article> </section>
</main> <footer id="page-footer">
<footer id="page-footer"> <!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<nav id="webring"> <p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" <a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
src="images/cups_left_dark.svg" width="30" height="30"></a> <a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" <a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
width="120" height="60"></a> </p>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" </footer>
src="images/cups_right_dark.svg" width="30" height="30"></a>
</nav>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

View file

@ -1,451 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" >
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" />
<meta name="dcterms.date" content="2025-07-25" />
<title>Testing pandoc markdown capabilities</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
/* CSS for syntax highlighting */
html { -webkit-text-size-adjust: 100%; }
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
background-color: #073642;
color: #586e75;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #586e75; padding-left: 4px; }
div.sourceCode
{ color: #839496; background-color: #002b36; }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #d33682; } /* Alert */
code span.an { color: #dc322f; } /* Annotation */
code span.at { color: #dc322f; } /* Attribute */
code span.bn { color: #2aa198; } /* BaseN */
code span.bu { color: #b58900; } /* BuiltIn */
code span.cf { color: #859900; } /* ControlFlow */
code span.ch { color: #2aa198; } /* Char */
code span.cn { color: #b58900; } /* Constant */
code span.co { color: #586e75; font-style: italic; } /* Comment */
code span.cv { color: #268bd2; } /* CommentVar */
code span.do { color: #586e75; font-style: italic; } /* Documentation */
code span.dt { color: #b58900; } /* DataType */
code span.dv { color: #2aa198; } /* DecVal */
code span.er { color: #dc322f; text-decoration: underline; } /* Error */
code span.ex { color: #b58900; } /* Extension */
code span.fl { color: #2aa198; } /* Float */
code span.fu { } /* Function */
code span.im { color: #cb4b16; } /* Import */
code span.in { color: #268bd2; } /* Information */
code span.kw { color: #93a1a1; font-weight: bold; } /* Keyword */
code span.op { } /* Operator */
code span.ot { } /* Other */
code span.pp { color: #cb4b16; } /* Preprocessor */
code span.re { color: #cb4b16; } /* RegionMarker */
code span.sc { color: #dc322f; } /* SpecialChar */
code span.ss { color: #b58900; } /* SpecialString */
code span.st { color: #2aa198; } /* String */
code span.va { color: #cb4b16; } /* Variable */
code span.vs { color: #dc322f; } /* VerbatimString */
code span.wa { color: #b58900; } /* Warning */
</style>
<link rel="stylesheet" href="styles/style.css">
</head>
<body>
<img id="shork" src="images/shork.png"></img>
<header id="page-header">
<a class="page-header-button" href="index.html">Home</a>
<a class="rss-button" href="atom.xml">Atom Feed</a>
</header>
<main id="page">
<header id="title-block-header">
<h1 class="title">Testing pandoc markdown capabilities</h1>
<p class="subtitle">Things I hope just work</p>
<p class="author">Never</p>
<p class="date">2025-07-25</p>
</header>
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#level-1-heading"
id="toc-level-1-heading">Level 1 Heading</a>
<ul>
<li><a href="#level-2-heading"
id="toc-level-2-heading">Level 2 Heading</a>
<ul>
<li><a href="#level-3-heading"
id="toc-level-3-heading">Level 3 Heading</a></li>
</ul></li>
</ul></li>
</ul>
</nav>
<article>
<h1 id="level-1-heading">Level 1 Heading</h1>
<p>A link to a Heading <a href="#level-4-heading">Level 4
Heading</a> followed by another paragraph.</p>
<ul>
<li><p>fruits</p>
<p>Everything is a fruit</p>
<ul>
<li>apples
<ul>
<li>macintosh</li>
<li>red delicious</li>
</ul></li>
<li>pears</li>
<li>peaches</li>
</ul></li>
<li><p>vegetables</p>
<ul>
<li>broccoli</li>
<li>chard</li>
</ul></li>
</ul>
<ol type="1">
<li>first</li>
<li>second</li>
<li>third
<ol type="i">
<li>subone</li>
<li>subtwo</li>
<li>subthree</li>
</ol></li>
</ol>
<ul class="task-list">
<li><label><input type="checkbox" />an unchecked task list
item</label></li>
<li><label><input type="checkbox" checked="" />checked
item</label></li>
</ul>
<p>Lorem <em>ipsum dolor</em> sit amet, consectetur
<em>adipi</em>scing elit. Integer nisl enim, condimentum
<del>vitae lacus vel</del>, semper efficitur est. Cras
pretium porta luctus. <strong>Nulla iaculis</strong> nisi at
quam varius, et con<strong>sequat</strong> lorem blandit. Ut
tincidunt leo sit amet velit lobortis, et blandit metus
mollis. Nam H<sub>2</sub>O tristique ex a quam aliquet, eget
2<sup>10</sup> vehicula sapien <code>rhoncus</code>. Aliquam
<code
class="sourceCode c"><span class="cf">return</span> <span class="dv">0</span><span class="op">;</span></code>
sodales pretium auctor. <span class="smallcaps">Aliquam
convallis</span> sodales <mark>elementum</mark>.</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode numberSource c numberLines"><code class="sourceCode c"><span id="cb1-1"><a href="#cb1-1"></a><span class="pp">#include </span><span class="im">&lt;stdio.h&gt;</span></span>
<span id="cb1-2"><a href="#cb1-2"></a></span>
<span id="cb1-3"><a href="#cb1-3"></a><span class="co">// </span><span class="al">TODO</span><span class="co">: A funny comment</span></span>
<span id="cb1-4"><a href="#cb1-4"></a><span class="dt">int</span> main<span class="op">()</span> <span class="op">{</span></span>
<span id="cb1-5"><a href="#cb1-5"></a> <span class="dt">char</span> greetings<span class="op">[]</span> <span class="op">=</span> <span class="op">{</span><span class="ch">&#39;H&#39;</span><span class="op">,</span> <span class="ch">&#39;e&#39;</span><span class="op">,</span> <span class="ch">&#39;l&#39;</span><span class="op">,</span> <span class="ch">&#39;l&#39;</span><span class="op">,</span> <span class="ch">&#39;o&#39;</span><span class="op">,</span> <span class="ch">&#39; &#39;</span><span class="op">,</span> <span class="ch">&#39;W&#39;</span><span class="op">,</span> <span class="ch">&#39;o&#39;</span><span class="op">,</span> <span class="ch">&#39;r&#39;</span><span class="op">,</span> <span class="ch">&#39;l&#39;</span><span class="op">,</span> <span class="ch">&#39;d&#39;</span><span class="op">,</span> <span class="ch">&#39;!&#39;</span><span class="op">,</span> <span class="ch">&#39;</span><span class="sc">\0</span><span class="ch">&#39;</span><span class="op">};</span></span>
<span id="cb1-6"><a href="#cb1-6"></a> <span class="dt">char</span> greetings2<span class="op">[]</span> <span class="op">=</span> <span class="st">&quot;Hello World!&quot;</span><span class="op">;</span></span>
<span id="cb1-7"><a href="#cb1-7"></a></span>
<span id="cb1-8"><a href="#cb1-8"></a> printf<span class="op">(</span><span class="st">&quot;</span><span class="sc">%zu\n</span><span class="st">&quot;</span><span class="op">,</span> <span class="kw">sizeof</span><span class="op">(</span>greetings<span class="op">));</span></span>
<span id="cb1-9"><a href="#cb1-9"></a> printf<span class="op">(</span><span class="st">&quot;</span><span class="sc">%zu\n</span><span class="st">&quot;</span><span class="op">,</span> <span class="kw">sizeof</span><span class="op">(</span>greetings2<span class="op">));</span></span>
<span id="cb1-10"><a href="#cb1-10"></a></span>
<span id="cb1-11"><a href="#cb1-11"></a> <span class="cf">return</span> <span class="dv">0</span><span class="op">;</span></span>
<span id="cb1-12"><a href="#cb1-12"></a><span class="op">}</span></span></code></pre></div>
<p>Aenean eros lacus, volutpat at molestie vitae, pretium eu
diam. Quisque sit
<math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mn>1</mn><mo>+</mo><mn>2</mn><mo>+</mo><mn>3</mn><mo>+</mo><mi></mi><mo>+</mo><mi>n</mi></mrow><annotation encoding="application/x-tex">1 + 2 + 3 + \cdots + n</annotation></semantics></math>
amet nisl ut dolor congue sodales.</p>
<p><math display="block" xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><munderover><mo></mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mi>i</mi><mo>=</mo><mfrac><mrow><mi>n</mi><mo stretchy="false" form="prefix">(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo stretchy="false" form="postfix">)</mo></mrow><mn>2</mn></mfrac></mrow><annotation encoding="application/x-tex">
\sum_{i=1}^{n} i = \frac{n (n + 1)}{2}
</annotation></semantics></math></p>
<h2 id="level-2-heading">Level 2 Heading</h2>
<blockquote>
<p>This is a block quote with two lines and a</p>
<ol type="1">
<li>List item</li>
<li>Another list item</li>
</ol>
<blockquote>
<p>And a nested block quote</p>
</blockquote>
<p>Yeah</p>
</blockquote>
<dl>
<dt>Term 1</dt>
<dd>
<p>Definition 1</p>
</dd>
<dt>Term 2 with <em>inline markup</em></dt>
<dd>
<p>Definition 2</p>
<pre><code>{ some code, part of Definition 2 }</code></pre>
<p>Third paragraph of definition 2.</p>
</dd>
<dt>Term 1</dt>
<dd>
Definition 1
</dd>
<dt>Term 2</dt>
<dd>
Definition 2a
</dd>
<dd>
Definition 2b
</dd>
</dl>
<h3 id="level-3-heading">Level 3 Heading</h3>
<p>A little poem</p>
<div class="line-block">The limerick packs laughs
anatomical<br />
In space that is quite economical.<br />
   But the good ones Ive seen<br />
   So seldom are clean<br />
And the clean ones so seldom are comical</div>
<hr />
<ol class="example" type="1">
<li>My first example will be numbered (1).</li>
<li>My second example will be numbered (2).</li>
</ol>
<p>Explanation of examples.</p>
<ol start="3" class="example" type="1">
<li>My third example will be numbered (3).</li>
</ol>
<p>As (2) illustrates, …</p>
<hr />
<h4 id="level-4-heading">Level 4 Heading</h4>
<table>
<caption>Demonstration of simple table syntax.</caption>
<thead>
<tr>
<th style="text-align: right;">Right</th>
<th style="text-align: left;">Left</th>
<th style="text-align: center;">Center</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">12</td>
<td style="text-align: left;">12</td>
<td style="text-align: center;">12</td>
<td>12</td>
</tr>
<tr>
<td style="text-align: right;">123</td>
<td style="text-align: left;">123</td>
<td style="text-align: center;">123</td>
<td>123</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">1</td>
<td style="text-align: center;">1</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>Following is a multiline table</p>
<table style="width:86%;">
<caption>Heres the caption. It, too, may span multiple
lines.</caption>
<colgroup>
<col style="width: 16%" />
<col style="width: 11%" />
<col style="width: 22%" />
<col style="width: 36%" />
</colgroup>
<thead>
<tr>
<th style="text-align: center;">Centered Header</th>
<th>Default Aligned</th>
<th style="text-align: right;">Right Aligned</th>
<th style="text-align: left;">Left Aligned</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">First</td>
<td>row</td>
<td style="text-align: right;">12.0</td>
<td style="text-align: left;">Example of a row that spans
multiple lines.</td>
</tr>
<tr>
<td style="text-align: center;">Second</td>
<td>row</td>
<td style="text-align: right;">5.0</td>
<td style="text-align: left;">Heres another one. Note the
blank line between rows.</td>
</tr>
</tbody>
</table>
<p>Then we have a Grid table</p>
<table style="width:64%;">
<caption>Grid table</caption>
<colgroup>
<col style="width: 30%" />
<col style="width: 11%" />
<col style="width: 11%" />
<col style="width: 11%" />
</colgroup>
<thead>
<tr>
<th rowspan="2" style="text-align: left;">Location</th>
<th colspan="3" style="text-align: right;">Temperature
1961-1990 in degree Celsius</th>
</tr>
<tr>
<th style="text-align: right;">min</th>
<th style="text-align: right;">mean</th>
<th style="text-align: right;">max</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">Antarctica</td>
<td style="text-align: right;">-89.2</td>
<td style="text-align: right;">N/A</td>
<td style="text-align: right;">19.8</td>
</tr>
<tr>
<td style="text-align: left;">Earth</td>
<td style="text-align: right;">-89.2</td>
<td style="text-align: right;">14</td>
<td style="text-align: right;">56.7</td>
</tr>
</tbody>
</table>
<p>An a Pipe table</p>
<table>
<caption>Demonstration of pipe table syntax.</caption>
<thead>
<tr>
<th style="text-align: right;">Right</th>
<th style="text-align: left;">Left</th>
<th>Default</th>
<th style="text-align: center;">Center</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right;">12</td>
<td style="text-align: left;">12</td>
<td>12</td>
<td style="text-align: center;">12</td>
</tr>
<tr>
<td style="text-align: right;">123</td>
<td style="text-align: left;">123</td>
<td>123</td>
<td style="text-align: center;">123</td>
</tr>
<tr>
<td style="text-align: right;">1</td>
<td style="text-align: left;">1</td>
<td>1</td>
<td style="text-align: center;">1</td>
</tr>
</tbody>
</table>
<h5 id="level-5-heading">Level 5 Heading</h5>
<p><a href="https://google.com"
class="uri">https://google.com</a></p>
<p><a href="mailto:sam@green.eggs.ham"
class="email">sam@green.eggs.ham</a></p>
<p>Link to <a href="index.html"
title="My title, optional">my label 1</a> and <a href=".">my
label 2</a> and <a href="https://fsf.org"
title="The Free Software Foundation">my label 3</a> and <a
href="index.html#articles"
title="A title in single quotes">my label 4</a></p>
<p>This is an <a href="/url">inline link</a>, and heres <a
href="https://fsf.org"
title="click here for a good time!">one with a title</a> and
<a href="mailto:sam@green.eggs.ham">Write me!</a></p>
<figure>
<img src="images/shork.png" title="the shork"
style="width:20.0%" alt="The wonderful shork" />
<figcaption aria-hidden="true">The wonderful
shork</figcaption>
</figure>
<p>Here is a footnote reference,<a href="#fn1"
class="footnote-ref" id="fnref1"
role="doc-noteref"><sup>1</sup></a> and another.<a
href="#fn2" class="footnote-ref" id="fnref2"
role="doc-noteref"><sup>2</sup></a></p>
<p>This paragraph wont be part of the note, because it
isnt indented.</p>
<h6 id="level-6-heading">Level 6 Heading</h6>
<div class="Warning">
<p>This is a warning.</p>
<div class="Danger">
<p>This is a warning within a warning.</p>
</div>
</div>
<section id="footnotes"
class="footnotes footnotes-end-of-document"
role="doc-endnotes">
<hr />
<ol>
<li id="fn1"><p>Here is the footnote.<a href="#fnref1"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
<li id="fn2"><p>Heres one with multiple blocks.</p>
<p>Subsequent paragraphs are indented to show that they
belong to the previous footnote.</p>
<pre><code>{ some.code }</code></pre>
<p>The whole paragraph can be indented, or just the first
line. In this way, multi-paragraph footnotes work like
multi-paragraph list items.<a href="#fnref2"
class="footnote-back" role="doc-backlink">↩︎</a></p></li>
</ol>
</section>
</article>
</main>
<footer id="page-footer">
<nav id="webring">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous"
src="images/cups_left_dark.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg"
width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next"
src="images/cups_right_dark.svg" width="30" height="30"></a>
</nav>
</footer>
</body>
<script src="scripts/shork.js"></script>
</html>

View file

@ -1,147 +1,134 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" /> <meta name="author" content="Never" />
<meta name="dcterms.date" content="2025-07-25" /> <title>Random linux utilities</title>
<title>Random linux utilities</title> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <style>
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> code{white-space: pre-wrap;}
<style> span.smallcaps{font-variant: small-caps;}
code{white-space: pre-wrap;} div.columns{display: flex; gap: min(4vw, 1.5em);}
span.smallcaps{font-variant: small-caps;} div.column{flex: auto; overflow-x: auto;}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.column{flex: auto; overflow-x: auto;} /* The extra [class] is a hack that increases specificity enough to
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} override a similar rule in reveal.js */
/* The extra [class] is a hack that increases specificity enough to ul.task-list[class]{list-style: none;}
override a similar rule in reveal.js */ ul.task-list li input[type="checkbox"] {
ul.task-list[class]{list-style: none;} font-size: inherit;
ul.task-list li input[type="checkbox"] { width: 0.8em;
font-size: inherit; margin: 0 0.8em 0.2em -1.6em;
width: 0.8em; vertical-align: middle;
margin: 0 0.8em 0.2em -1.6em; }
vertical-align: middle; /* CSS for syntax highlighting */
} html { -webkit-text-size-adjust: 100%; }
/* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; }
html { -webkit-text-size-adjust: 100%; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span:empty { height: 1.2em; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } .sourceCode { overflow: visible; }
pre > code.sourceCode > span:empty { height: 1.2em; } code.sourceCode > span { color: inherit; text-decoration: inherit; }
.sourceCode { overflow: visible; } div.sourceCode { margin: 1em 0; }
code.sourceCode > span { color: inherit; text-decoration: inherit; } pre.sourceCode { margin: 0; }
div.sourceCode { margin: 1em 0; } @media screen {
pre.sourceCode { margin: 0; } div.sourceCode { overflow: auto; }
@media screen { }
div.sourceCode { overflow: auto; } @media print {
} pre > code.sourceCode { white-space: pre-wrap; }
@media print { pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
pre > code.sourceCode { white-space: pre-wrap; } }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } pre.numberSource code
} { counter-reset: source-line 0; }
pre.numberSource code pre.numberSource code > span
{ counter-reset: source-line 0; } { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span pre.numberSource code > span > a:first-child::before
{ position: relative; left: -4em; counter-increment: source-line; } { content: counter(source-line);
pre.numberSource code > span > a:first-child::before position: relative; left: -1em; text-align: right; vertical-align: baseline;
{ content: counter(source-line); border: none; display: inline-block;
position: relative; left: -1em; text-align: right; vertical-align: baseline; -webkit-touch-callout: none; -webkit-user-select: none;
border: none; display: inline-block; -khtml-user-select: none; -moz-user-select: none;
-webkit-touch-callout: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;
-khtml-user-select: none; -moz-user-select: none; padding: 0 4px; width: 4em;
-ms-user-select: none; user-select: none; }
padding: 0 4px; width: 4em; pre.numberSource { margin-left: 3em; padding-left: 4px; }
background-color: #073642; div.sourceCode
color: #586e75; { color: #cccccc; background-color: #303030; }
} @media screen {
pre.numberSource { margin-left: 3em; border-left: 1px solid #586e75; padding-left: 4px; } pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
div.sourceCode }
{ color: #839496; background-color: #002b36; } code span.al { color: #ffcfaf; } /* Alert */
@media screen { code span.an { color: #7f9f7f; font-weight: bold; } /* Annotation */
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } code span.at { } /* Attribute */
} code span.bn { color: #dca3a3; } /* BaseN */
code span.al { color: #d33682; } /* Alert */ code span.bu { } /* BuiltIn */
code span.an { color: #dc322f; } /* Annotation */ code span.cf { color: #f0dfaf; } /* ControlFlow */
code span.at { color: #dc322f; } /* Attribute */ code span.ch { color: #dca3a3; } /* Char */
code span.bn { color: #2aa198; } /* BaseN */ code span.cn { color: #dca3a3; font-weight: bold; } /* Constant */
code span.bu { color: #b58900; } /* BuiltIn */ code span.co { color: #7f9f7f; } /* Comment */
code span.cf { color: #859900; } /* ControlFlow */ code span.cv { color: #7f9f7f; font-weight: bold; } /* CommentVar */
code span.ch { color: #2aa198; } /* Char */ code span.do { color: #7f9f7f; } /* Documentation */
code span.cn { color: #b58900; } /* Constant */ code span.dt { color: #dfdfbf; } /* DataType */
code span.co { color: #586e75; font-style: italic; } /* Comment */ code span.dv { color: #dcdccc; } /* DecVal */
code span.cv { color: #268bd2; } /* CommentVar */ code span.er { color: #c3bf9f; } /* Error */
code span.do { color: #586e75; font-style: italic; } /* Documentation */ code span.ex { } /* Extension */
code span.dt { color: #b58900; } /* DataType */ code span.fl { color: #c0bed1; } /* Float */
code span.dv { color: #2aa198; } /* DecVal */ code span.fu { color: #efef8f; } /* Function */
code span.er { color: #dc322f; text-decoration: underline; } /* Error */ code span.im { } /* Import */
code span.ex { color: #b58900; } /* Extension */ code span.in { color: #7f9f7f; font-weight: bold; } /* Information */
code span.fl { color: #2aa198; } /* Float */ code span.kw { color: #f0dfaf; } /* Keyword */
code span.fu { } /* Function */ code span.op { color: #f0efd0; } /* Operator */
code span.im { color: #cb4b16; } /* Import */ code span.ot { color: #efef8f; } /* Other */
code span.in { color: #268bd2; } /* Information */ code span.pp { color: #ffcfaf; font-weight: bold; } /* Preprocessor */
code span.kw { color: #93a1a1; font-weight: bold; } /* Keyword */ code span.sc { color: #dca3a3; } /* SpecialChar */
code span.op { } /* Operator */ code span.ss { color: #cc9393; } /* SpecialString */
code span.ot { } /* Other */ code span.st { color: #cc9393; } /* String */
code span.pp { color: #cb4b16; } /* Preprocessor */ code span.va { } /* Variable */
code span.re { color: #cb4b16; } /* RegionMarker */ code span.vs { color: #cc9393; } /* VerbatimString */
code span.sc { color: #dc322f; } /* SpecialChar */ code span.wa { color: #7f9f7f; font-weight: bold; } /* Warning */
code span.ss { color: #b58900; } /* SpecialString */ </style>
code span.st { color: #2aa198; } /* String */ <link rel="stylesheet" href="styles/style.css">
code span.va { color: #cb4b16; } /* Variable */
code span.vs { color: #dc322f; } /* VerbatimString */
code span.wa { color: #b58900; } /* Warning */
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Random linux utilities</h1>
<header id="title-block-header"> <p class="subtitle">Neat things I picked up along the way</p>
<h1 class="title">Random linux utilities</h1> <p class="author">Never</p>
<p class="subtitle">Neat things I picked up along the <p class="date">25.7.2025</p>
way</p> </header>
<p class="author">Never</p> <section id="content">
<p class="date">2025-07-25</p> <nav id="TOC" role="doc-toc">
</header> <ul>
<nav id="TOC" role="doc-toc"> <li><a href="#merge-pdfs" id="toc-merge-pdfs">Merge pdfs</a>
<ul> <ul>
<li><a href="#merge-pdfs" id="toc-merge-pdfs">Merge pdfs</a> <li><a href="#using-ghostscript" id="toc-using-ghostscript">Using
<ul> Ghostscript</a></li>
<li><a href="#using-ghostscript" </ul></li>
id="toc-using-ghostscript">Using Ghostscript</a></li> </ul>
</ul></li> </nav>
</ul> <article>
</nav> <h1 id="merge-pdfs">Merge pdfs</h1>
<article> <h2 id="using-ghostscript">Using Ghostscript</h2>
<h1 id="merge-pdfs">Merge pdfs</h1> <p>Ghostscript has a feature to merge multiple pdf files into one.
<h2 id="using-ghostscript">Using Ghostscript</h2> Although ImageMagick also has this feature, I prefer this one, as it
<p>Ghostscript has a feature to merge multiple pdf files doesnt rasterize and scales down the pdf files.</p>
into one. Although ImageMagick also has this feature, I <div class="sourceCode" id="cb1"><pre
prefer this one, as it doesnt rasterize and scales down the class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">gs</span> <span class="at">-dNOPAUSE</span> <span class="at">-sDEVICE</span><span class="op">=</span>pdfwrite <span class="dt">\</span></span>
pdf files.</p>
<div class="sourceCode" id="cb1"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">gs</span> <span class="at">-dNOPAUSE</span> <span class="at">-sDEVICE</span><span class="op">=</span>pdfwrite <span class="dt">\</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> <span class="at">-sOUTPUTFILE</span><span class="op">=</span>output.pdf <span class="dt">\</span></span> <span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> <span class="at">-sOUTPUTFILE</span><span class="op">=</span>output.pdf <span class="dt">\</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="at">-dBATCH</span> 1.pdf 2.pdf</span></code></pre></div> <span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="at">-dBATCH</span> 1.pdf 2.pdf</span></code></pre></div>
</article> </article>
</main> </section>
<footer id="page-footer"> <footer id="page-footer">
<nav id="webring"> <!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" <p class="cups-light">
src="images/cups_left_dark.svg" width="30" height="30"></a> <a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" <a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
width="120" height="60"></a> <a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" </p>
src="images/cups_right_dark.svg" width="30" height="30"></a> </footer>
</nav>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

View file

@ -1,160 +1,148 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="" > <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="pandoc" /> <meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" /> <meta name="author" content="Never" />
<meta name="dcterms.date" content="2026-01-12" /> <title>Using rsync on Android to syncronise my Music library</title>
<title>Using rsync on Android to syncronise my Music library</title> <link rel="icon" type="image/x-icon" href="images/favicon.png">
<link rel="icon" type="image/x-icon" href="images/favicon.png"> <style>
<link rel="alternate" type="application/atom+xml" title="nevereverever.de" href="https://nevereverever.de/eh/eh/eh/eh-eh/atom.xml"> code{white-space: pre-wrap;}
<style> span.smallcaps{font-variant: small-caps;}
code{white-space: pre-wrap;} div.columns{display: flex; gap: min(4vw, 1.5em);}
span.smallcaps{font-variant: small-caps;} div.column{flex: auto; overflow-x: auto;}
div.columns{display: flex; gap: min(4vw, 1.5em);} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
div.column{flex: auto; overflow-x: auto;} /* The extra [class] is a hack that increases specificity enough to
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} override a similar rule in reveal.js */
/* The extra [class] is a hack that increases specificity enough to ul.task-list[class]{list-style: none;}
override a similar rule in reveal.js */ ul.task-list li input[type="checkbox"] {
ul.task-list[class]{list-style: none;} font-size: inherit;
ul.task-list li input[type="checkbox"] { width: 0.8em;
font-size: inherit; margin: 0 0.8em 0.2em -1.6em;
width: 0.8em; vertical-align: middle;
margin: 0 0.8em 0.2em -1.6em; }
vertical-align: middle; /* CSS for syntax highlighting */
} html { -webkit-text-size-adjust: 100%; }
/* CSS for syntax highlighting */ pre > code.sourceCode { white-space: pre; position: relative; }
html { -webkit-text-size-adjust: 100%; } pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode { white-space: pre; position: relative; } pre > code.sourceCode > span:empty { height: 1.2em; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; } .sourceCode { overflow: visible; }
pre > code.sourceCode > span:empty { height: 1.2em; } code.sourceCode > span { color: inherit; text-decoration: inherit; }
.sourceCode { overflow: visible; } div.sourceCode { margin: 1em 0; }
code.sourceCode > span { color: inherit; text-decoration: inherit; } pre.sourceCode { margin: 0; }
div.sourceCode { margin: 1em 0; } @media screen {
pre.sourceCode { margin: 0; } div.sourceCode { overflow: auto; }
@media screen { }
div.sourceCode { overflow: auto; } @media print {
} pre > code.sourceCode { white-space: pre-wrap; }
@media print { pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
pre > code.sourceCode { white-space: pre-wrap; } }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; } pre.numberSource code
} { counter-reset: source-line 0; }
pre.numberSource code pre.numberSource code > span
{ counter-reset: source-line 0; } { position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span pre.numberSource code > span > a:first-child::before
{ position: relative; left: -4em; counter-increment: source-line; } { content: counter(source-line);
pre.numberSource code > span > a:first-child::before position: relative; left: -1em; text-align: right; vertical-align: baseline;
{ content: counter(source-line); border: none; display: inline-block;
position: relative; left: -1em; text-align: right; vertical-align: baseline; -webkit-touch-callout: none; -webkit-user-select: none;
border: none; display: inline-block; -khtml-user-select: none; -moz-user-select: none;
-webkit-touch-callout: none; -webkit-user-select: none; -ms-user-select: none; user-select: none;
-khtml-user-select: none; -moz-user-select: none; padding: 0 4px; width: 4em;
-ms-user-select: none; user-select: none; }
padding: 0 4px; width: 4em; pre.numberSource { margin-left: 3em; padding-left: 4px; }
background-color: #073642; div.sourceCode
color: #586e75; { color: #cccccc; background-color: #303030; }
} @media screen {
pre.numberSource { margin-left: 3em; border-left: 1px solid #586e75; padding-left: 4px; } pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
div.sourceCode }
{ color: #839496; background-color: #002b36; } code span.al { color: #ffcfaf; } /* Alert */
@media screen { code span.an { color: #7f9f7f; font-weight: bold; } /* Annotation */
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; } code span.at { } /* Attribute */
} code span.bn { color: #dca3a3; } /* BaseN */
code span.al { color: #d33682; } /* Alert */ code span.bu { } /* BuiltIn */
code span.an { color: #dc322f; } /* Annotation */ code span.cf { color: #f0dfaf; } /* ControlFlow */
code span.at { color: #dc322f; } /* Attribute */ code span.ch { color: #dca3a3; } /* Char */
code span.bn { color: #2aa198; } /* BaseN */ code span.cn { color: #dca3a3; font-weight: bold; } /* Constant */
code span.bu { color: #b58900; } /* BuiltIn */ code span.co { color: #7f9f7f; } /* Comment */
code span.cf { color: #859900; } /* ControlFlow */ code span.cv { color: #7f9f7f; font-weight: bold; } /* CommentVar */
code span.ch { color: #2aa198; } /* Char */ code span.do { color: #7f9f7f; } /* Documentation */
code span.cn { color: #b58900; } /* Constant */ code span.dt { color: #dfdfbf; } /* DataType */
code span.co { color: #586e75; font-style: italic; } /* Comment */ code span.dv { color: #dcdccc; } /* DecVal */
code span.cv { color: #268bd2; } /* CommentVar */ code span.er { color: #c3bf9f; } /* Error */
code span.do { color: #586e75; font-style: italic; } /* Documentation */ code span.ex { } /* Extension */
code span.dt { color: #b58900; } /* DataType */ code span.fl { color: #c0bed1; } /* Float */
code span.dv { color: #2aa198; } /* DecVal */ code span.fu { color: #efef8f; } /* Function */
code span.er { color: #dc322f; text-decoration: underline; } /* Error */ code span.im { } /* Import */
code span.ex { color: #b58900; } /* Extension */ code span.in { color: #7f9f7f; font-weight: bold; } /* Information */
code span.fl { color: #2aa198; } /* Float */ code span.kw { color: #f0dfaf; } /* Keyword */
code span.fu { } /* Function */ code span.op { color: #f0efd0; } /* Operator */
code span.im { color: #cb4b16; } /* Import */ code span.ot { color: #efef8f; } /* Other */
code span.in { color: #268bd2; } /* Information */ code span.pp { color: #ffcfaf; font-weight: bold; } /* Preprocessor */
code span.kw { color: #93a1a1; font-weight: bold; } /* Keyword */ code span.sc { color: #dca3a3; } /* SpecialChar */
code span.op { } /* Operator */ code span.ss { color: #cc9393; } /* SpecialString */
code span.ot { } /* Other */ code span.st { color: #cc9393; } /* String */
code span.pp { color: #cb4b16; } /* Preprocessor */ code span.va { } /* Variable */
code span.re { color: #cb4b16; } /* RegionMarker */ code span.vs { color: #cc9393; } /* VerbatimString */
code span.sc { color: #dc322f; } /* SpecialChar */ code span.wa { color: #7f9f7f; font-weight: bold; } /* Warning */
code span.ss { color: #b58900; } /* SpecialString */ </style>
code span.st { color: #2aa198; } /* String */ <link rel="stylesheet" href="styles/style.css">
code span.va { color: #cb4b16; } /* Variable */
code span.vs { color: #dc322f; } /* VerbatimString */
code span.wa { color: #b58900; } /* Warning */
</style>
<link rel="stylesheet" href="styles/style.css">
</head> </head>
<body> <body>
<img id="shork" src="images/shork.png"></img> <canvas id="tv-screen"></canvas>
<header id="page-header"> <header id="page-header">
<a class="page-header-button" href="index.html">Home</a> <ul><li><a href="index.html">Home</a></li></ul>
<a class="rss-button" href="atom.xml">Atom Feed</a> </header>
</header> <header id="title-block-header">
<main id="page"> <h1 class="title">Using rsync on Android to syncronise my Music
<header id="title-block-header"> library</h1>
<h1 class="title">Using rsync on Android to syncronise my <p class="author">Never</p>
Music library</h1> <p class="date">12.01.2026</p>
<p class="author">Never</p> </header>
<p class="date">2026-01-12</p> <section id="content">
</header> <nav id="TOC" role="doc-toc">
<nav id="TOC" role="doc-toc"> <ul>
<ul> <li><a href="#setup-termux" id="toc-setup-termux">Setup Termux</a></li>
<li><a href="#setup-termux" id="toc-setup-termux">Setup <li><a href="#establishing-an-ssh-connection"
Termux</a></li> id="toc-establishing-an-ssh-connection">Establishing an ssh
<li><a href="#establishing-an-ssh-connection" connection</a>
id="toc-establishing-an-ssh-connection">Establishing an ssh <ul>
connection</a> <li><a href="#configuring-android"
<ul> id="toc-configuring-android">Configuring Android</a></li>
<li><a href="#configuring-android" <li><a href="#connecting-to-android-via-ssh"
id="toc-configuring-android">Configuring Android</a></li> id="toc-connecting-to-android-via-ssh">Connecting to Android via
<li><a href="#connecting-to-android-via-ssh" ssh</a></li>
id="toc-connecting-to-android-via-ssh">Connecting to Android </ul></li>
via ssh</a></li> <li><a href="#syncronising-files-with-rsync"
</ul></li> id="toc-syncronising-files-with-rsync">Syncronising files with rsync</a>
<li><a href="#syncronising-files-with-rsync" <ul>
id="toc-syncronising-files-with-rsync">Syncronising files <li><a href="#refreshing-the-android-mediastore"
with rsync</a></li> id="toc-refreshing-the-android-mediastore">Refreshing the Android
</ul> MediaStore</a></li>
</nav> </ul></li>
<article> </ul>
<h1 id="setup-termux">Setup Termux</h1> </nav>
<p>Install Termux using F-Droid.</p> <article>
<p>Update software repos.</p> <h1 id="setup-termux">Setup Termux</h1>
<div class="sourceCode" id="cb1"><pre <p>Install Termux using F-Droid.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> update</span></code></pre></div> <p>Update software repos.</p>
<p>Grant file access permissions using.</p> <div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> update</span></code></pre></div>
<div class="sourceCode" id="cb2"><pre <p>Grant file access permissions using.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">termux-setup-storage</span></span></code></pre></div> <div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">termux-setup-storage</span></span></code></pre></div>
<h1 id="establishing-an-ssh-connection">Establishing an ssh <h1 id="establishing-an-ssh-connection">Establishing an ssh
connection</h1> connection</h1>
<p>If network (such as eduroam) is blocking ssh trafic <p>If network (such as eduroam) is blocking ssh trafic between machines,
between machines, open a Wi-Fi Hotspot on your Linux machine open a Wi-Fi Hotspot on your Linux machine and connect the Android
and connect the Android device to it before using device to it before using <code>rsync</code> or <code>ssh</code>.</p>
<code>rsync</code> or <code>ssh</code>.</p> <h2 id="configuring-android">Configuring Android</h2>
<h2 id="configuring-android">Configuring Android</h2> <p>Install the openssh server on Termux.</p>
<p>Install the openssh server on Termux.</p> <div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install openssh</span></code></pre></div>
<div class="sourceCode" id="cb3"><pre <p>Start the ssh server daemon.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install openssh</span></code></pre></div> <div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">sshd</span></span></code></pre></div>
<p>Start the ssh server daemon.</p> <p>Get the ip address of the Android machine (in the Hotspot).</p>
<div class="sourceCode" id="cb4"><pre <div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">ifconfig</span></span></code></pre></div>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="ex">sshd</span></span></code></pre></div> <pre><code>Warning: cannot open /proc/net/dev (Permission denied). Limited output.
<p>Get the ip address of the Android machine (in the
Hotspot).</p>
<div class="sourceCode" id="cb5"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="ex">ifconfig</span></span></code></pre></div>
<pre><code>Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt; mtu 65536 lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt; mtu 65536
inet 127.0.0.1 netmask 255.0.0.0 inet 127.0.0.1 netmask 255.0.0.0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
@ -166,49 +154,62 @@ rmnet0: flags=4305&lt;UP,POINTOPOINT,RUNNING,NOARP,MULTICAST&gt; mtu 1280
wlan0: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt; mtu 1500 wlan0: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt; mtu 1500
inet 10.42.0.200 netmask 255.255.255.0 broadcast 10.42.0.210 inet 10.42.0.200 netmask 255.255.255.0 broadcast 10.42.0.210
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)</code></pre> unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)</code></pre>
<p>In this case 10.42.0.200.</p> <p>In this case 10.42.0.200.</p>
<p>The ssh server should now be running and listening on <p>The ssh server should now be running and listening on port 8022. You
port 8022. You can check by running</p> can check by running</p>
<div class="sourceCode" id="cb7"><pre <div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">nmap</span> <span class="at">-Pn</span> <span class="op">&lt;</span>ip_address<span class="op">&gt;</span></span></code></pre></div>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="fu">nmap</span> <span class="at">-Pn</span> <span class="op">&lt;</span>ip_address<span class="op">&gt;</span></span></code></pre></div> <p>For me <code>&lt;ip_address&gt;</code> whould be 10.42.0.200.</p>
<p>For me <code>&lt;ip_address&gt;</code> whould be <p>Get the username.</p>
10.42.0.200.</p> <div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">whoami</span></span></code></pre></div>
<p>Get the username.</p> <pre><code>u0_a700</code></pre>
<div class="sourceCode" id="cb8"><pre <p>Set a password for this user.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">whoami</span></span></code></pre></div> <div class="sourceCode" id="cb10"><pre
<pre><code>u0_a700</code></pre> class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">passwd</span></span></code></pre></div>
<p>Set a password for this user.</p> <h2 id="connecting-to-android-via-ssh">Connecting to Android via
<div class="sourceCode" id="cb10"><pre ssh</h2>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="fu">passwd</span></span></code></pre></div> <p>Make sure you have an ssh key pair on the Linux system. If not
<h2 id="connecting-to-android-via-ssh">Connecting to Android generate one using <code>ssh-keygen</code>.</p>
via ssh</h2> <p>Now connect to Android by <code>ssh</code>.</p>
<p>Make sure you have an ssh key pair on the Linux system. <div class="sourceCode" id="cb11"><pre
If not generate one using <code>ssh-keygen</code>.</p> class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">ssh</span> <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span> -p 8022</span></code></pre></div>
<p>Now connect to Android by <code>ssh</code>.</p> <h1 id="syncronising-files-with-rsync">Syncronising files with
<div class="sourceCode" id="cb11"><pre rsync</h1>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="fu">ssh</span> <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span> -p 8022</span></code></pre></div> <p>Install <code>rsync</code> on Termux and Linux. Make sure to keep
<h1 id="syncronising-files-with-rsync">Syncronising files your own openssl config.</p>
with rsync</h1> <div class="sourceCode" id="cb12"><pre
<p>Install <code>rsync</code> on Termux and Linux. Make sure class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install rsync</span></code></pre></div>
to keep your own openssl config.</p> <p>Now on your Linux machine, syncronise your Music library with
<div class="sourceCode" id="cb12"><pre rsync.</p>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a><span class="ex">pkg</span> install rsync</span></code></pre></div> <div class="sourceCode" id="cb13"><pre
<p>Now on your Linux machine, syncronise your Music library class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rsync</span> <span class="at">-av</span> <span class="at">-e</span> <span class="st">&quot;ssh -p 8022&quot;</span> ~/Music <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span>:/data/data/com.termux/files/home/storage/music</span></code></pre></div>
with rsync.</p> <h2 id="refreshing-the-android-mediastore">Refreshing the Android
<div class="sourceCode" id="cb13"><pre MediaStore</h2>
class="sourceCode sh"><code class="sourceCode bash"><span id="cb13-1"><a href="#cb13-1" aria-hidden="true" tabindex="-1"></a><span class="fu">rsync</span> <span class="at">-av</span> <span class="at">-e</span> <span class="st">&quot;ssh -p 8022&quot;</span> ~/Music <span class="op">&lt;</span>username<span class="op">&gt;</span>@<span class="op">&lt;</span>ip_address<span class="op">&gt;</span>:/data/data/com.termux/files/home/storage/music</span></code></pre></div> <p>Android uses a Database to store files. In order to play your music,
</article> this database needs to be refreshed. This can be achieved by a reboot or
</main> by using adb to manually refresh it.</p>
<footer id="page-footer"> <div class="sourceCode" id="cb14"><pre
<nav id="webring"> class="sourceCode sh"><code class="sourceCode bash"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true" tabindex="-1"></a><span class="fu">sudo</span> dnf install adb</span></code></pre></div>
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" <p>Connect the Android device via USB and see if it is listed.</p>
src="images/cups_left_dark.svg" width="30" height="30"></a> <div class="sourceCode" id="cb15"><pre
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo_dark.svg" class="sourceCode sh"><code class="sourceCode bash"><span id="cb15-1"><a href="#cb15-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> devices</span></code></pre></div>
width="120" height="60"></a> <p>If it is, restart adb in TCP mode with port 5555</p>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" <div class="sourceCode" id="cb16"><pre
src="images/cups_right_dark.svg" width="30" height="30"></a> class="sourceCode sh"><code class="sourceCode bash"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> tcpip 5555</span></code></pre></div>
</nav> <p>Connect to the device using its <ip_address>.</p>
</footer> <div class="sourceCode" id="cb17"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> connect <span class="op">&lt;</span>ip_address<span class="op">&gt;</span></span></code></pre></div>
<p>Refresh MediaStore.</p>
<div class="sourceCode" id="cb18"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb18-1"><a href="#cb18-1" aria-hidden="true" tabindex="-1"></a><span class="ex">adb</span> shell am broadcast <span class="at">-a</span> android.intent.action.MEDIA_SCANNER_SCAN <span class="at">-d</span> file:///data/data/com.termux/files/home/storage/music/</span></code></pre></div>
</article>
</section>
<footer id="page-footer">
<!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30"></a>
</p>
</footer>
</body> </body>
<script src="scripts/shork.js"></script>
</html> </html>

View file

@ -1,102 +0,0 @@
let shork_image = document.getElementById("shork");
let zoomies = 4;
let turnies = 0.2;
let shork = {x: 4, y: 8};
let rotation = 0;
let shork_init = transform(shork, -rotation);
shork_image.style.transform = `matrix(${shork_init.a}, ${shork_init.b}, ${shork_init.c}, ${shork_init.d}, ${shork_init.x}, ${shork_init.y})`;
let mouse = {x: 0, y: 0};
onmousemove = function(e){
mouse.x = e.pageX;
mouse.y = e.pageY;
}
let direction = 0;
let movement = 0;
let target = 0;
function move() {
direction = vector(shork, mouse);
if (norm(direction) >= 4) {
movement = scalar(angletovec(rotation), zoomies * norm(direction)/128);
shork = add(shork, movement);
target = angle(direction);
rotation = interpolate(rotation, target, turnies) + Math.sin(norm(movement))/8;
}
let trans = transform(shork, -rotation);
shork_image.style.transform = `matrix(${trans.a}, ${trans.b}, ${trans.c}, ${trans.d}, ${trans.x}, ${trans.y})`;
setTimeout(move, 30);
}
shork_image.addEventListener("click", function(e) {move()}, {once: true});
function vector(a, b) {
return {
x: b.x - a.x,
y: b.y - a.y
};
}
function angle(v) {
return Math.atan2(v.y, v.x);
}
function angletovec(a) {
return {x: Math.cos(a), y: Math.sin(a)};
}
function norm(v) {
return Math.sqrt(Math.pow(v.x, 2) + Math.pow(v.y, 2));
}
function unit(v) {
let length = norm(v);
if (length == 0) return {x: 0, y: 0};
return {x: v.x / length, y: v.y / length};
}
function scalar(v, a) {
return {x: v.x * a, y: v.y * a};
}
function add(v, u) {
return {x: v.x + u.x, y: v.y + u.y};
}
function round(v) {
return {x: Math.round(v.x), y: Math.round(v.y)};
}
function clamp(a, min, max) {
if (a < min) return min;
if (a > max) return max;
return a;
}
function interpolate(a, b, c) {
let d = Math.abs(a - b)
if (d > Math.abs(a - b - 2 * Math.PI)) a = a - 2 * Math.PI;
if (d > Math.abs(a - b + 2 * Math.PI)) a = a + 2 * Math.PI;
if (a < b) a = clamp(a + c, a, b);
if (a > b) a = clamp(a - c, b, a);
a += 3 * Math.PI;
a = a % (2 * Math.PI);
a -= Math.PI;
return a;
}
function transform(v, a) {
return {a: Math.cos(a), b: -Math.sin(a), c: Math.sin(a), d: Math.cos(a), x: v.x, y: v.y};
}

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1619.0757"
height="1552.4"
viewBox="0 0 1619.0757 1552.4"
version="1.1"
id="svg8"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8" />
<path
fill-rule="evenodd"
fill="#ee82ee"
fill-opacity="1"
d="m 1592.9148,1678.6922 c -144.8203,64.6914 -389.8359,52.168 -569.3164,-93.1797 -179.48429,-145.3516 -293.43359,-423.5312 -74.39059,-529.8203 219.04299,-106.293 771.08199,-40.6992 674.21489,130.5781 -96.8672,171.2813 -842.64459,448.2461 -1185.58988,366.6328 -342.949214,-81.6093 -283.07031,-521.7929 26.38281,-620.7929 309.45708,-99.0039 868.49217,143.1796 1143.73047,400.2304 275.2383,257.0469 266.6836,528.9649 255.8945,531.086 -10.789,2.1172 -23.8086,-265.5625 -52.6367,-328.4493 -28.8281,-62.8867 -73.4648,79.0196 -218.2891,143.7149 z m 0,0"
id="path2" />
<path
fill-rule="evenodd"
fill="#a01ff0"
fill-opacity="1"
d="m 160.20001,128.2 48,-528 208,1168 655.99999,-464 -1231.99999,272 -272,-112 z m 0,0"
id="path3" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 832.20001,128.2 -688,688 672,624"
id="path4"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1168.2,112.2 -687.99999,688 671.99999,624"
id="path5"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1344.2,112.2 -687.99999,688 671.99999,624"
id="path6"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1504.2,112.2 -687.99999,688 671.99999,624"
id="path7"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1008.2,112.2 -687.99999,688 672,624"
id="path8"
style="stroke-width:40;stroke-dasharray:none" />
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1619.0757"
height="1552.4"
viewBox="0 0 1619.0757 1552.4"
version="1.1"
id="svg8"
sodipodi:docname="arrow_left.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.25766555"
inkscape:cx="454.07701"
inkscape:cy="923.67802"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<defs
id="defs8" />
<path
fill-rule="evenodd"
fill="#ee82ee"
fill-opacity="1"
d="m 1592.9148,1678.6922 c -144.8203,64.6914 -389.8359,52.168 -569.3164,-93.1797 -179.48429,-145.3516 -293.43359,-423.5312 -74.39059,-529.8203 219.04299,-106.293 771.08199,-40.6992 674.21489,130.5781 -96.8672,171.2813 -842.64459,448.2461 -1185.58988,366.6328 -342.949214,-81.6093 -283.07031,-521.7929 26.38281,-620.7929 309.45708,-99.0039 868.49217,143.1796 1143.73047,400.2304 275.2383,257.0469 266.6836,528.9649 255.8945,531.086 -10.789,2.1172 -23.8086,-265.5625 -52.6367,-328.4493 -28.8281,-62.8867 -73.4648,79.0196 -218.2891,143.7149 z m 0,0"
id="path2" />
<path
fill-rule="evenodd"
fill="#a01ff0"
fill-opacity="1"
d="m 160.20001,128.2 48,-528 208,1168 655.99999,-464 -1231.99999,272 -272,-112 z m 0,0"
id="path3" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 832.20001,128.2 -688,688 672,624"
id="path4"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1168.2,112.2 -687.99999,688 671.99999,624"
id="path5"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1344.2,112.2 -687.99999,688 671.99999,624"
id="path6"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1504.2,112.2 -687.99999,688 671.99999,624"
id="path7"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1008.2,112.2 -687.99999,688 672,624"
id="path8"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="4144.0171"
height="2112.3999"
viewBox="0 0 4144.0171 2112.3999"
version="1.1"
id="svg10"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4">
<g
id="g4">
<g
id="glyph-0-0">
<path
d="m 969.45312,-1150.1563 c 0,-30.4843 -1.5625,-32.1718 -10.9375,-32.1718 -6.23437,0 -7.79687,1.6875 -18.73437,22.0156 l -68.6875,142.2813 c -76.48438,-105.0157 -170.15625,-166.0001 -290.35938,-166.0001 -266.95312,0 -508.92187,255.7813 -508.92187,604.7188 0,352.32813 241.96875,606.421875 510.48437,606.421875 238.84375,0 387.15625,-228.687495 387.15625,-423.484375 0,-16.9375 0,-23.70312 -14.04687,-23.70312 -12.5,0 -12.5,5.07812 -14.0625,20.3125 C 928.85937,-162.60937 772.75,-16.9375 604.15625,-16.9375 c -159.23438,0 -413.70313,-121.96875 -413.70313,-562.375 0,-442.1094 259.14063,-560.6719 410.57813,-560.6719 176.40625,0 304.40625,166.00003 334.07812,401.45315 3.125,20.32813 3.125,23.70313 17.17188,23.70313 17.17187,0 17.17187,-3.375 17.17187,-33.875 z m 0,0"
id="path1" />
</g>
<g
id="glyph-0-1">
<path
d="m 843,-387.90625 c 0,226.98438 -135.8125,370.96875 -284.125,370.96875 -79.60938,0 -151.42188,-45.734375 -195.14063,-116.875 -49.95312,-81.3125 -56.20312,-186.32812 -56.20312,-245.625 v -657.2188 c 0,-76.2343 17.17187,-76.2343 124.89062,-76.2343 v -44.0313 c -45.26562,3.375 -128,3.375 -176.40625,3.375 -48.39062,0 -131.12499,0 -176.406245,-3.375 v 44.0313 c 107.718745,0 124.890625,0 124.890625,76.2343 v 648.75005 c 0,243.92188 170.17187,415.015625 351.25,415.015625 202.95312,0 320.03125,-225.296875 320.03125,-391.296875 v -643.6719 c 0,-94.8594 79.625,-105.0312 124.89065,-105.0312 v -44.0313 c -35.90628,3.375 -101.46878,3.375 -140.50003,3.375 -39.03125,0 -106.15625,0 -142.0625,-3.375 v 44.0313 C 843,-1112.8906 843,-1033.2656 843,-990.92187 Z m 0,0"
id="path2" />
</g>
<g
id="glyph-0-2">
<path
d="M 309.09375,-543.73437 H 558.875 c 201.39062,0 348.125,-142.29688 348.125,-303.20313 0,-160.9219 -143.625,-309.9844 -348.125,-309.9844 H 81.171875 v 44.0313 c 107.718745,0 124.890625,0 124.890625,76.2343 v 916.39067 c 0,76.218755 -17.17188,76.218755 -124.890625,76.218755 V 0 C 126.45313,-3.390625 209.1875,-3.390625 257.57812,-3.390625 c 48.40625,0 131.14063,0 176.40625,3.390625 v -44.046875 c -107.71875,0 -124.89062,0 -124.89062,-76.218755 z m -3.10938,-35.57813 v -467.5156 c 0,-57.5938 3.10938,-66.0625 65.5625,-66.0625 h 157.67188 c 201.375,0 259.14062,125.35935 259.14062,265.9531 0,154.14063 -68.6875,267.625 -259.14062,267.625 z m 0,0"
id="path3" />
</g>
<g
id="glyph-0-3">
<path
d="m 683.76562,-1150.1563 c 0,-30.4843 -1.5625,-32.1718 -10.92187,-32.1718 -9.375,0 -12.5,6.7656 -18.73438,22.0156 l -46.84375,111.7969 c -59.3125,-93.1719 -149.85937,-135.5157 -248.20312,-135.5157 -159.23438,0 -287.25,137.2032 -287.25,309.98443 0,52.51562 10.921875,127.04687 64,198.1875 57.76562,77.92187 112.40625,91.46875 237.29687,127.03125 46.82813,13.5625 124.89063,35.57812 140.5,42.35937 88.98438,40.65625 135.8125,142.28125 135.8125,237.14063 0,121.95312 -79.60937,252.39062 -215.4375,252.39062 -167.03125,0 -323.14062,-101.64063 -334.07812,-338.78125 -1.5625,-27.09375 -3.125,-28.79687 -14.046875,-28.79687 -12.484375,0 -14.046875,1.70312 -14.046875,35.57812 V -6.78125 c 0,30.5 1.5625,32.1875 10.921875,32.1875 10.9375,0 14.046875,-8.46875 35.906255,-60.984375 1.5625,-5.078125 1.5625,-8.46875 31.21874,-72.828125 78.0625,111.796875 209.20313,135.515625 284.125,135.515625 170.17188,0 290.375,-154.156255 290.375,-333.703125 0,-88.07812 -29.67187,-155.84375 -46.84375,-186.32812 -65.5625,-108.40625 -135.8125,-128.73438 -210.75,-149.0625 -10.92187,-5.07813 -14.04687,-5.07813 -101.46875,-28.79688 C 281,-694.5 245.09375,-706.35937 206.0625,-752.09375 162.35937,-804.59375 146.75,-858.79687 146.75,-913 c 0,-110.1094 81.17187,-230.375 213.85937,-230.375 165.48438,0 268.51563,127.0469 291.9375,338.78125 4.6875,30.48438 6.23438,32.17188 17.17188,32.17188 14.04687,0 14.04687,-5.07813 14.04687,-33.875 z m 0,0"
id="path4" />
</g>
</g>
</defs>
<path
fill-rule="evenodd"
fill="#00ff00"
fill-opacity="1"
stroke-width="0.4"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 3196.4305,272.19995 c 128,-80 400,-80 618.668,120 218.664,200 384,600 18.664,856.00005 -365.332,256 -1261.332,368 -1280,437.332 -18.664,69.3359 840,96 1037.336,-58.6641 197.332,-154.6679 -266.668,-490.6679 -184,-552 82.664,-61.3359 712,152 736,189.3321 24,37.332 -557.336,-101.3321 -856,-242.668 -298.668,-141.33205 -314.668,-285.33205 -298.668,-344.00005 16,-58.664 64,-32 80,-98.664 16,-66.668 0,-226.668 128,-306.668 z m 0,0"
id="path5" />
<path
fill-rule="evenodd"
fill="#ffd700"
fill-opacity="1"
stroke-width="0.4"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 1916.4305,896.19995 80,-512 816,96 -688,1312.00005 400,-1616.00005 1088,1104.00005 -1824,-848.00005 1504,-208 -1040,880.00005 -848,1008 224,-2112.00004951 1168,1616.00004951 896,-816.00005 -1776,208.00005 z m 0,0"
id="path6" />
<path
fill-rule="evenodd"
fill="#ff0000"
fill-opacity="1"
stroke-width="0.4"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 9.762574,277.53195 c 45.33594,154.668 247.999996,346.668 594.667966,258.668 346.66797,-88 837.33196,-456 1013.33196,-312 176,144 37.336,800.00005 -306.664,1090.66795 -343.99999,290.6641 -893.33593,216 -794.66796,-88 98.66797,-303.99998 845.33196,-837.33595 1250.66796,-834.66795 405.332,2.668 469.332,541.33203 445.332,821.33205 -24,280 -136,301.3359 -488,37.3359 -352,-263.99998 -943.99996,-813.33595 -1295.99996,-1029.33595 -351.999996,-215.9999995 -463.999996,-98.664 -418.667966,56 z m 0,0"
id="path7" />
<g
fill="#000000"
fill-opacity="1"
id="g10"
transform="translate(-815.56946,-616.80005)">
<use
xlink:href="#glyph-0-0"
x="1073.5159"
y="2043.7217"
id="use7" />
<use
xlink:href="#glyph-0-1"
x="2114.7791"
y="2043.7217"
id="use8" />
<use
xlink:href="#glyph-0-2"
x="3196.6311"
y="2043.7217"
id="use9" />
<use
xlink:href="#glyph-0-3"
x="4177.0107"
y="2043.7217"
id="use10" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.6 KiB

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="3108.012817" height="1584.299927" viewBox="0 0 3108.012817 1584.299927">
<defs>
<clipPath id="clip-0">
<path clip-rule="nonzero" d="M 1914 166 L 3108.011719 166 L 3108.011719 1306 L 1914 1306 Z M 1914 166 "/>
</clipPath>
<clipPath id="clip-1">
<path clip-rule="nonzero" d="M 1053 0 L 2770 0 L 2770 1584.300781 L 1053 1584.300781 Z M 1053 0 "/>
</clipPath>
<clipPath id="clip-2">
<path clip-rule="nonzero" d="M 247 182 L 3065 182 L 3065 1091 L 247 1091 Z M 247 182 "/>
</clipPath>
<clipPath id="clip-3">
<path clip-rule="nonzero" d="M 920.550781 207.574219 C 920.550781 184.710938 919.378906 183.445312 912.347656 183.445312 C 907.671875 183.445312 906.5 184.710938 898.296875 199.957031 L 846.78125 306.667969 C 789.417969 227.90625 719.164062 182.167969 629.011719 182.167969 C 428.796875 182.167969 247.320312 374.003906 247.320312 635.707031 C 247.320312 899.953125 428.796875 1090.523438 630.183594 1090.523438 C 809.316406 1090.523438 920.550781 919.007812 920.550781 772.910156 C 920.550781 760.207031 920.550781 755.132812 910.015625 755.132812 C 900.640625 755.132812 900.640625 758.941406 899.46875 770.367188 C 890.105469 948.234375 773.023438 1057.488281 646.578125 1057.488281 C 527.152344 1057.488281 336.300781 966.011719 336.300781 635.707031 C 336.300781 304.125 530.65625 215.203125 644.234375 215.203125 C 776.539062 215.203125 872.539062 339.703125 894.792969 516.292969 C 897.136719 531.539062 897.136719 534.070312 907.671875 534.070312 C 920.550781 534.070312 920.550781 531.539062 920.550781 508.664062 Z M 1606.65625 779.261719 C 1606.65625 949.5 1504.796875 1057.488281 1393.5625 1057.488281 C 1333.855469 1057.488281 1279.996094 1023.1875 1247.207031 969.832031 C 1209.742188 908.847656 1205.054688 830.085938 1205.054688 785.613281 L 1205.054688 292.699219 C 1205.054688 235.523438 1217.933594 235.523438 1298.722656 235.523438 L 1298.722656 202.5 C 1264.773438 205.03125 1202.722656 205.03125 1166.417969 205.03125 C 1130.125 205.03125 1068.074219 205.03125 1034.113281 202.5 L 1034.113281 235.523438 C 1114.902344 235.523438 1127.78125 235.523438 1127.78125 292.699219 L 1127.78125 779.261719 C 1127.78125 962.203125 1255.410156 1090.523438 1391.21875 1090.523438 C 1543.433594 1090.523438 1631.242188 921.550781 1631.242188 797.050781 L 1631.242188 314.296875 C 1631.242188 243.152344 1690.960938 235.523438 1724.910156 235.523438 L 1724.910156 202.5 C 1697.980469 205.03125 1648.808594 205.03125 1619.535156 205.03125 C 1590.261719 205.03125 1539.917969 205.03125 1512.988281 202.5 L 1512.988281 235.523438 C 1606.65625 235.523438 1606.65625 295.242188 1606.65625 327 Z M 2017.617188 662.390625 L 2204.953125 662.390625 C 2355.996094 662.390625 2466.046875 555.667969 2466.046875 434.988281 C 2466.046875 314.296875 2358.328125 202.5 2204.953125 202.5 L 1846.675781 202.5 L 1846.675781 235.523438 C 1927.464844 235.523438 1940.34375 235.523438 1940.34375 292.699219 L 1940.34375 979.992188 C 1940.34375 1037.15625 1927.464844 1037.15625 1846.675781 1037.15625 L 1846.675781 1070.191406 C 1880.636719 1067.648438 1942.6875 1067.648438 1978.980469 1067.648438 C 2015.285156 1067.648438 2077.335938 1067.648438 2111.285156 1070.191406 L 2111.285156 1037.15625 C 2030.496094 1037.15625 2017.617188 1037.15625 2017.617188 979.992188 Z M 2015.285156 635.707031 L 2015.285156 285.070312 C 2015.285156 241.875 2017.617188 235.523438 2064.457031 235.523438 L 2182.710938 235.523438 C 2333.742188 235.523438 2377.066406 329.542969 2377.066406 434.988281 C 2377.066406 550.59375 2325.550781 635.707031 2182.710938 635.707031 Z M 3033.90625 207.574219 C 3033.90625 184.710938 3032.734375 183.445312 3025.714844 183.445312 C 3018.683594 183.445312 3016.339844 188.519531 3011.664062 199.957031 L 2976.53125 283.804688 C 2932.046875 213.925781 2864.136719 182.167969 2790.378906 182.167969 C 2670.953125 182.167969 2574.941406 285.070312 2574.941406 414.65625 C 2574.941406 454.042969 2583.132812 509.941406 2622.941406 563.296875 C 2666.265625 621.738281 2707.246094 631.898438 2800.914062 658.570312 C 2836.035156 668.742188 2894.582031 685.253906 2906.289062 690.339844 C 2973.027344 720.832031 3008.148438 797.050781 3008.148438 868.195312 C 3008.148438 959.660156 2948.441406 1057.488281 2846.570312 1057.488281 C 2721.296875 1057.488281 2604.214844 981.257812 2596.011719 803.402344 C 2594.839844 783.082031 2593.667969 781.804688 2585.476562 781.804688 C 2576.113281 781.804688 2574.941406 783.082031 2574.941406 808.488281 L 2574.941406 1065.105469 C 2574.941406 1087.980469 2576.113281 1089.246094 2583.132812 1089.246094 C 2591.335938 1089.246094 2593.667969 1082.894531 2610.0625 1043.507812 C 2611.234375 1039.699219 2611.234375 1037.15625 2633.476562 988.886719 C 2692.023438 1072.734375 2790.378906 1090.523438 2846.570312 1090.523438 C 2974.199219 1090.523438 3064.351562 974.90625 3064.351562 840.246094 C 3064.351562 774.1875 3042.097656 723.363281 3029.21875 700.5 C 2980.046875 619.195312 2927.359375 603.949219 2871.15625 588.703125 C 2862.964844 584.894531 2860.621094 584.894531 2795.054688 567.105469 C 2731.832031 549.316406 2704.902344 540.421875 2675.628906 506.121094 C 2642.851562 466.746094 2631.144531 426.09375 2631.144531 385.441406 C 2631.144531 302.859375 2692.023438 212.660156 2791.539062 212.660156 C 2915.652344 212.660156 2992.925781 307.945312 3010.492188 466.746094 C 3014.007812 489.609375 3015.167969 490.875 3023.371094 490.875 C 3033.90625 490.875 3033.90625 487.066406 3033.90625 465.46875 Z M 3033.90625 207.574219 "/>
</clipPath>
</defs>
<path fill-rule="evenodd" fill="rgb(0%, 100%, 0%)" fill-opacity="1" d="M 2397.324219 204.148438 C 2493.324219 144.148438 2697.324219 144.148438 2861.324219 294.148438 C 3025.320312 444.148438 3149.324219 744.148438 2875.320312 936.148438 C 2601.324219 1128.148438 1929.324219 1212.148438 1915.320312 1264.148438 C 1901.324219 1316.152344 2545.320312 1336.148438 2693.324219 1220.152344 C 2841.324219 1104.148438 2493.324219 852.148438 2555.324219 806.152344 C 2617.320312 760.148438 3089.324219 920.152344 3107.324219 948.148438 C 3125.324219 976.148438 2689.320312 872.152344 2465.324219 766.148438 C 2241.324219 660.148438 2229.324219 552.148438 2241.324219 508.148438 C 2253.324219 464.152344 2289.324219 484.148438 2301.324219 434.152344 C 2313.324219 384.148438 2301.324219 264.148438 2397.324219 204.148438 Z M 2397.324219 204.148438 "/>
<g clip-path="url(#clip-0)">
<path fill="none" stroke-width="0.3" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 2397.324219 204.148438 C 2493.324219 144.148438 2697.324219 144.148438 2861.324219 294.148438 C 3025.320312 444.148438 3149.324219 744.148438 2875.320312 936.148438 C 2601.324219 1128.148438 1929.324219 1212.148438 1915.320312 1264.148438 C 1901.324219 1316.152344 2545.320312 1336.148438 2693.324219 1220.152344 C 2841.324219 1104.148438 2493.324219 852.148438 2555.324219 806.152344 C 2617.320312 760.148438 3089.324219 920.152344 3107.324219 948.148438 C 3125.324219 976.148438 2689.320312 872.152344 2465.324219 766.148438 C 2241.324219 660.148438 2229.324219 552.148438 2241.324219 508.148438 C 2253.324219 464.152344 2289.324219 484.148438 2301.324219 434.152344 C 2313.324219 384.148438 2301.324219 264.148438 2397.324219 204.148438 Z M 2397.324219 204.148438 "/>
</g>
<g clip-path="url(#clip-1)">
<path fill-rule="evenodd" fill="rgb(100%, 84.312439%, 0%)" fill-opacity="1" stroke-width="0.3" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 1437.324219 672.148438 L 1497.324219 288.148438 L 2109.324219 360.148438 L 1593.324219 1344.148438 L 1893.324219 132.148438 L 2709.324219 960.148438 L 1341.324219 324.148438 L 2469.324219 168.148438 L 1689.324219 828.148438 L 1053.324219 1584.148438 L 1221.324219 0.148438 L 2097.324219 1212.148438 L 2769.324219 600.148438 L 1437.324219 756.148438 Z M 1437.324219 672.148438 "/>
</g>
<path fill-rule="evenodd" fill="rgb(100%, 0%, 0%)" fill-opacity="1" stroke-width="0.3" stroke-linecap="butt" stroke-linejoin="round" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 7.320312 208.148438 C 41.324219 324.148438 193.320312 468.148438 453.324219 402.148438 C 713.324219 336.148438 1081.320312 60.148438 1213.320312 168.148438 C 1345.320312 276.148438 1241.324219 768.148438 983.324219 986.152344 C 725.324219 1204.148438 313.320312 1148.152344 387.324219 920.152344 C 461.324219 692.152344 1021.320312 292.148438 1325.324219 294.148438 C 1629.324219 296.152344 1677.324219 700.148438 1659.324219 910.148438 C 1641.324219 1120.148438 1557.324219 1136.152344 1293.324219 938.152344 C 1029.324219 740.152344 585.324219 328.148438 321.324219 166.148438 C 57.324219 4.148438 -26.675781 92.152344 7.320312 208.148438 Z M 7.320312 208.148438 "/>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 920.550781 207.574219 C 920.550781 184.710938 919.378906 183.445312 912.347656 183.445312 C 907.671875 183.445312 906.5 184.710938 898.296875 199.957031 L 846.78125 306.667969 C 789.417969 227.90625 719.164062 182.167969 629.011719 182.167969 C 428.796875 182.167969 247.320312 374.003906 247.320312 635.707031 C 247.320312 899.953125 428.796875 1090.523438 630.183594 1090.523438 C 809.316406 1090.523438 920.550781 919.007812 920.550781 772.910156 C 920.550781 760.207031 920.550781 755.132812 910.015625 755.132812 C 900.640625 755.132812 900.640625 758.941406 899.46875 770.367188 C 890.105469 948.234375 773.023438 1057.488281 646.578125 1057.488281 C 527.152344 1057.488281 336.300781 966.011719 336.300781 635.707031 C 336.300781 304.125 530.65625 215.203125 644.234375 215.203125 C 776.539062 215.203125 872.539062 339.703125 894.792969 516.292969 C 897.136719 531.539062 897.136719 534.070312 907.671875 534.070312 C 920.550781 534.070312 920.550781 531.539062 920.550781 508.664062 Z M 920.550781 207.574219 "/>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 1606.65625 779.261719 C 1606.65625 949.5 1504.796875 1057.488281 1393.5625 1057.488281 C 1333.855469 1057.488281 1279.996094 1023.1875 1247.207031 969.832031 C 1209.742188 908.847656 1205.054688 830.085938 1205.054688 785.613281 L 1205.054688 292.699219 C 1205.054688 235.523438 1217.933594 235.523438 1298.722656 235.523438 L 1298.722656 202.5 C 1264.773438 205.03125 1202.722656 205.03125 1166.417969 205.03125 C 1130.125 205.03125 1068.074219 205.03125 1034.113281 202.5 L 1034.113281 235.523438 C 1114.902344 235.523438 1127.78125 235.523438 1127.78125 292.699219 L 1127.78125 779.261719 C 1127.78125 962.203125 1255.410156 1090.523438 1391.21875 1090.523438 C 1543.433594 1090.523438 1631.242188 921.550781 1631.242188 797.050781 L 1631.242188 314.296875 C 1631.242188 243.152344 1690.960938 235.523438 1724.910156 235.523438 L 1724.910156 202.5 C 1697.980469 205.03125 1648.808594 205.03125 1619.535156 205.03125 C 1590.261719 205.03125 1539.917969 205.03125 1512.988281 202.5 L 1512.988281 235.523438 C 1606.65625 235.523438 1606.65625 295.242188 1606.65625 327 Z M 1606.65625 779.261719 "/>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 2017.617188 662.390625 L 2204.953125 662.390625 C 2355.996094 662.390625 2466.046875 555.667969 2466.046875 434.988281 C 2466.046875 314.296875 2358.328125 202.5 2204.953125 202.5 L 1846.675781 202.5 L 1846.675781 235.523438 C 1927.464844 235.523438 1940.34375 235.523438 1940.34375 292.699219 L 1940.34375 979.992188 C 1940.34375 1037.15625 1927.464844 1037.15625 1846.675781 1037.15625 L 1846.675781 1070.191406 C 1880.636719 1067.648438 1942.6875 1067.648438 1978.980469 1067.648438 C 2015.285156 1067.648438 2077.335938 1067.648438 2111.285156 1070.191406 L 2111.285156 1037.15625 C 2030.496094 1037.15625 2017.617188 1037.15625 2017.617188 979.992188 Z M 2015.285156 635.707031 L 2015.285156 285.070312 C 2015.285156 241.875 2017.617188 235.523438 2064.457031 235.523438 L 2182.710938 235.523438 C 2333.742188 235.523438 2377.066406 329.542969 2377.066406 434.988281 C 2377.066406 550.59375 2325.550781 635.707031 2182.710938 635.707031 Z M 2015.285156 635.707031 "/>
<path fill-rule="nonzero" fill="rgb(100%, 100%, 100%)" fill-opacity="1" d="M 3033.90625 207.574219 C 3033.90625 184.710938 3032.734375 183.445312 3025.714844 183.445312 C 3018.683594 183.445312 3016.339844 188.519531 3011.664062 199.957031 L 2976.53125 283.804688 C 2932.046875 213.925781 2864.136719 182.167969 2790.378906 182.167969 C 2670.953125 182.167969 2574.941406 285.070312 2574.941406 414.65625 C 2574.941406 454.042969 2583.132812 509.941406 2622.941406 563.296875 C 2666.265625 621.738281 2707.246094 631.898438 2800.914062 658.570312 C 2836.035156 668.742188 2894.582031 685.253906 2906.289062 690.339844 C 2973.027344 720.832031 3008.148438 797.050781 3008.148438 868.195312 C 3008.148438 959.660156 2948.441406 1057.488281 2846.570312 1057.488281 C 2721.296875 1057.488281 2604.214844 981.257812 2596.011719 803.402344 C 2594.839844 783.082031 2593.667969 781.804688 2585.476562 781.804688 C 2576.113281 781.804688 2574.941406 783.082031 2574.941406 808.488281 L 2574.941406 1065.105469 C 2574.941406 1087.980469 2576.113281 1089.246094 2583.132812 1089.246094 C 2591.335938 1089.246094 2593.667969 1082.894531 2610.0625 1043.507812 C 2611.234375 1039.699219 2611.234375 1037.15625 2633.476562 988.886719 C 2692.023438 1072.734375 2790.378906 1090.523438 2846.570312 1090.523438 C 2974.199219 1090.523438 3064.351562 974.90625 3064.351562 840.246094 C 3064.351562 774.1875 3042.097656 723.363281 3029.21875 700.5 C 2980.046875 619.195312 2927.359375 603.949219 2871.15625 588.703125 C 2862.964844 584.894531 2860.621094 584.894531 2795.054688 567.105469 C 2731.832031 549.316406 2704.902344 540.421875 2675.628906 506.121094 C 2642.851562 466.746094 2631.144531 426.09375 2631.144531 385.441406 C 2631.144531 302.859375 2692.023438 212.660156 2791.539062 212.660156 C 2915.652344 212.660156 2992.925781 307.945312 3010.492188 466.746094 C 3014.007812 489.609375 3015.167969 490.875 3023.371094 490.875 C 3033.90625 490.875 3033.90625 487.066406 3033.90625 465.46875 Z M 3033.90625 207.574219 "/>
<g clip-path="url(#clip-2)">
<g clip-path="url(#clip-3)">
<path fill-rule="nonzero" fill="rgb(0%, 0%, 0%)" fill-opacity="1" d="M 7.320312 208.148438 C 41.324219 324.148438 193.320312 468.148438 453.324219 402.148438 C 713.324219 336.148438 1081.320312 60.148438 1213.320312 168.148438 C 1345.320312 276.148438 1241.324219 768.148438 983.324219 986.152344 C 725.324219 1204.148438 313.320312 1148.152344 387.324219 920.152344 C 461.324219 692.152344 1021.320312 292.148438 1325.324219 294.148438 C 1629.324219 296.152344 1677.324219 700.148438 1659.324219 910.148438 C 1641.324219 1120.148438 1557.324219 1136.152344 1293.324219 938.152344 C 1029.324219 740.152344 585.324219 328.148438 321.324219 166.148438 C 57.324219 4.148438 -26.675781 92.152344 7.320312 208.148438 Z M 1437.324219 672.148438 L 1497.324219 288.148438 L 2109.324219 360.148438 L 1593.324219 1344.148438 L 1893.324219 132.148438 L 2709.324219 960.148438 L 1341.324219 324.148438 L 2469.324219 168.148438 L 1689.324219 828.148438 L 1053.324219 1584.148438 L 1221.324219 0.148438 L 2097.324219 1212.148438 L 2769.324219 600.148438 L 1437.324219 756.148438 Z M 2397.324219 204.148438 C 2493.324219 144.148438 2697.324219 144.148438 2861.324219 294.148438 C 3025.320312 444.148438 3149.324219 744.148438 2875.320312 936.148438 C 2601.324219 1128.148438 1929.324219 1212.148438 1915.320312 1264.148438 C 1901.324219 1316.152344 2545.320312 1336.148438 2693.324219 1220.152344 C 2841.324219 1104.148438 2493.324219 852.148438 2555.324219 806.152344 C 2617.320312 760.148438 3089.324219 920.152344 3107.324219 948.148438 C 3125.324219 976.148438 2689.320312 872.152344 2465.324219 766.148438 C 2241.324219 660.148438 2229.324219 552.148438 2241.324219 508.148438 C 2253.324219 464.152344 2289.324219 484.148438 2301.324219 434.152344 C 2313.324219 384.148438 2301.324219 264.148438 2397.324219 204.148438 Z M 2397.324219 204.148438 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1619.0758"
height="1552.4"
viewBox="0 0 1619.0758 1552.4"
version="1.1"
id="svg8"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8" />
<path
fill-rule="evenodd"
fill="#ee82ee"
fill-opacity="1"
d="m 26.160933,1678.6922 c 144.820317,64.6914 389.835937,52.168 569.316407,-93.1797 C 774.9617,1440.1609 888.9109,1161.9813 669.86796,1055.6922 450.825,949.3992 -101.21407,1014.993 -4.3468768,1186.2703 92.520313,1357.5516 838.2977,1634.5164 1181.243,1552.9031 c 342.9492,-81.6093 283.0703,-521.7929 -26.3828,-620.7929 -309.4571,-99.0039 -868.49224,143.1796 -1143.730517,400.2304 -275.238273,257.0469 -266.683593,528.9649 -255.894523,531.086 10.78906,2.1172 23.80859,-265.5625 52.63672,-328.4493 28.82812,-62.8867 73.46483,79.0196 218.289053,143.7149 z m 0,0"
id="path2" />
<path
fill-rule="evenodd"
fill="#a01ff0"
fill-opacity="1"
d="m 1458.8758,128.2 -48,-528 -208,1168 -656.00002,-464 1232.00002,272 272,-112 z m 0,0"
id="path3" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 786.8758,128.2 688,688 -672,624"
id="path4"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 450.87578,112.2 688.00002,688 -672.00002,624"
id="path5"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 274.87578,112.2 688.00002,688 -672.00002,624"
id="path6"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 114.87578,112.2 688.00002,688 -672.00002,624"
id="path7"
style="stroke-width:40;stroke-dasharray:none" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 610.87578,112.2 688.00002,688 -672.00002,624"
id="path8"
style="stroke-width:40;stroke-dasharray:none" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="1619.0758"
height="1552.4"
viewBox="0 0 1619.0758 1552.4"
version="1.1"
id="svg8"
sodipodi:docname="arrow_right.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="0.25766555"
inkscape:cx="374.51651"
inkscape:cy="1269.087"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8" />
<defs
id="defs8" />
<path
fill-rule="evenodd"
fill="#ee82ee"
fill-opacity="1"
d="m 26.160933,1678.6922 c 144.820317,64.6914 389.835937,52.168 569.316407,-93.1797 C 774.9617,1440.1609 888.9109,1161.9813 669.86796,1055.6922 450.825,949.3992 -101.21407,1014.993 -4.3468768,1186.2703 92.520313,1357.5516 838.2977,1634.5164 1181.243,1552.9031 c 342.9492,-81.6093 283.0703,-521.7929 -26.3828,-620.7929 -309.4571,-99.0039 -868.49224,143.1796 -1143.730517,400.2304 -275.238273,257.0469 -266.683593,528.9649 -255.894523,531.086 10.78906,2.1172 23.80859,-265.5625 52.63672,-328.4493 28.82812,-62.8867 73.46483,79.0196 218.289053,143.7149 z m 0,0"
id="path2" />
<path
fill-rule="evenodd"
fill="#a01ff0"
fill-opacity="1"
d="m 1458.8758,128.2 -48,-528 -208,1168 -656.00002,-464 1232.00002,272 272,-112 z m 0,0"
id="path3" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 786.8758,128.2 688,688 -672,624"
id="path4"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 450.87578,112.2 688.00002,688 -672.00002,624"
id="path5"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 274.87578,112.2 688.00002,688 -672.00002,624"
id="path6"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 114.87578,112.2 688.00002,688 -672.00002,624"
id="path7"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
<path
fill="none"
stroke-width="10"
stroke-linecap="butt"
stroke-linejoin="round"
stroke="#000000"
stroke-opacity="1"
stroke-miterlimit="10"
d="m 610.87578,112.2 688.00002,688 -672.00002,624"
id="path8"
style="stroke-width:40;stroke-dasharray:none;stroke:#ffffff;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before After
Before After

View file

@ -1,173 +1,114 @@
:root { :root {
--foreground: #586e75; --foreground: #1a1a1a;
--background: #fdf6e3; --background: #fdfdfdf0;
--html-border: #eee8d5; --border: #c9c9c9;
--html-background: #268bd2; --html-background: #e3e3e3;
--body-background: linear-gradient(to bottom, #2aa198, #268bd2); --blockquote-text: #606060;
--blockquote-text: #657b83; --blockquote-border: #e6e6e6;
--blockquote-border: #eee8d5; --button-border: #e3e3e3;
--button-primary: #fdf6e3; --button-background: #d0d0d0;
--button-secondary: #eee8d5;
--code-color: #657b83;
--code-background: #fdf6e3;
--code-line-number-color: #93a1a1;
--code-line-number-background: #eee8d5;
--code-comment-color: #93a1a1;
--code-keyword-color: #586e75;
} }
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
:root { :root {
--foreground: #93a1a1; --foreground: #fdfdfd;
--background: #002b36; --background: #1a1a1af0;
--html-border: #073642; --border: #4c4c4c;
--html-background: #6c71c4; --html-background: #303030;
--body-background: linear-gradient(to bottom, #268bd2, #6c71c4); --blockquote-text: #e6e6e6;
--blockquote-text: #839496; --blockquote-border: #606060;
--blockquote-border: #073642; --button-border: #4c4c4c;
--button-primary: #073642; --button-background: #404040;
--button-secondary: #002b36;
--code-color: #839496;
--code-background: #002b36;
--code-line-number-color: #586e75;
--code-line-number-background: #073642;
--code-comment-color: #586e75;
--code-keyword-color: #93a1a1;
} }
} }
pre.numberSource code > span > a:first-child::before {
background-color: var(--code-line-number-background);
color: var(--code-line-number-color);
}
pre.numberSource {
margin-left: 3em;
border-left: none;
padding-left: 4px;
}
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: none; }
}
div.sourceCode {
color: var(--code-color);
background-color: var(--code-background);
line-height: 80%;
}
code span.co { color: var(--code-comment-color); font-style: italic; } /* Comment */
code span.do { color: var(--code-comment-color); font-style: italic; } /* Documentation */
code span.kw { color: var(--code-keyword-color); font-weight: bold; } /* Keyword */
html { html {
color: var(--foreground); color: var(--foreground);
/*background: url("recursion.gif");*/
background: var(--html-background); background: var(--html-background);
background-repeat: repeat-y;
background-size: cover;
font-family: serif; font-family: serif;
font-size: 14pt; font-size: 14pt;
} }
body { body {
margin: 0; background-color: var(--background);
background: var(--body-background); border: solid 1px var(--border);
}
main {
max-width: 48em;
margin: 0 auto; margin: 0 auto;
max-width: 48em;
padding-left: 50pt; padding-left: 50pt;
padding-right: 50pt; padding-right: 50pt;
padding-top: 50pt; padding-top: 50pt;
padding-bottom: 50pt; padding-bottom: 50pt;
hyphens: auto; hyphens: auto;
overflow-wrap: break-word; overflow-wrap: break-word;
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font-kerning: normal; font-kerning: normal;
background-color: var(--background);
border-left: solid 3pt var(--html-border);
border-right: solid 3pt var(--html-border);
} }
#shork { #tv-screen {
position: absolute; position: fixed;
z-index: 1; top: 0;
left: -36px; left: 0;
top: -32px; z-index: -1;
width: 64px;
transform-origin: 50% 50%;
} }
#page-header { #page-header {
display: flex; display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between; justify-content: space-between;
max-width: 60em; text-align: left;
border: 4pt ridge var(--border);
margin: 0 auto;
padding: 4pt;
background: url("images/shark-top-small.png"); background: url("images/shark-top-small.png");
background-size: contain; background-size: contain;
border: solid 3pt var(--html-border); }
#page-header li {
list-style: none;
display: inline-block;
}
#page-header a:active {
border: 2pt inset var(--button-border)
} }
#page-header a { #page-header a {
color: var(--foreground); color: var(--foreground);
padding: 4pt;
text-decoration: none; text-decoration: none;
margin: 4pt;
padding: 4pt;
border: 2pt outset var(--button-border);
background-color: var(--button-background)
} }
.page-header-button { #page-header ul,
background: linear-gradient(to bottom, var(--button-primary) 0%, var(--button-secondary) 100%);
border: 1pt solid var(--blockquote-border);
border-radius: 4pt;
}
.page-header-button:active {
background: linear-gradient(to bottom, var(--button-secondary) 0%, var(--button-primary) 100%);
}
.rss-button {
color: #fdf6e3 !important;
background: linear-gradient(to bottom, #fb9d3a 0%, #d95c29 100%);
border: 1pt solid #f2994f;
border-radius: 4pt;
}
.rss-button:active {
background: linear-gradient(to bottom, #d95c29 0%, #fb9d3a 100%);
}
#articles ul { #articles ul {
padding-left: 0; padding-left: 0;
} }
#articles li { #articles li {
list-style: none; list-style: none;
display: block;
} }
.articles-header { .articles-header {
margin: 8pt 0 4pt 0;
text-align: left;
}
.articles-footer {
display: flex; display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between; justify-content: space-between;
margin-top: 4pt;
} }
.articles-title { .articles-title {
margin: 8pt 0 4pt 0;
font-size: 14pt; font-size: 14pt;
font-weight: bold; font-weight: bold;
} }
.articles-author { .articles-author {
font-style: italic; margin: 12pt 0 4pt 0;
} }
.articles-summary { .articles-summary {
@ -175,29 +116,42 @@ main {
} }
.articles-date { .articles-date {
margin: 0;
text-align: right; text-align: right;
} }
#page-footer { #page-footer {
display: flex; border: 4pt ridge var(--border);
justify-content: center;
max-width: 60em;
margin: 0 auto;
padding: 4pt;
background: url("images/shark-top-small.png"); background: url("images/shark-top-small.png");
background-size: contain; background-size: contain;
border: solid 3pt var(--html-border); display: flex;
justify-content: center;
} }
#page-footer nav { #page-footer p {
display: flex; display: flex;
flex-direction: row;
align-items: center; align-items: center;
} }
/*
#TOC {
padding: 24px;
}
section {
display: flex;
flex-direction: row;
}
article {
padding: 12px;
overflow: auto;
}
*/
@media (max-width: 600px) { @media (max-width: 600px) {
main { body {
font-size: 0.9em; font-size: 0.9em;
padding: 12pt; padding: 12pt;
} }
@ -232,14 +186,6 @@ main {
page-break-after: avoid; page-break-after: avoid;
} }
a {
color: black;
}
#page {
border: none;
}
#page-header, #page-header,
#page-footer { #page-footer {
display: none; display: none;
@ -338,20 +284,8 @@ hr {
margin: 1em 0; margin: 1em 0;
} }
figure {
margin: 1em 0;
width: 100%;
overflow-x: auto;
display: block;
text-align: center;
}
figcaption {
margin-top: 0.75em;
}
table { table {
margin: 1em auto; margin: 1em 0;
border-collapse: collapse; border-collapse: collapse;
width: 100%; width: 100%;
overflow-x: auto; overflow-x: auto;

View file

@ -1,102 +0,0 @@
let shork_image = document.getElementById("shork");
let zoomies = 4;
let turnies = 0.2;
let shork = {x: 4, y: 8};
let rotation = 0;
let shork_init = transform(shork, -rotation);
shork_image.style.transform = `matrix(${shork_init.a}, ${shork_init.b}, ${shork_init.c}, ${shork_init.d}, ${shork_init.x}, ${shork_init.y})`;
let mouse = {x: 0, y: 0};
onmousemove = function(e){
mouse.x = e.pageX;
mouse.y = e.pageY;
}
let direction = 0;
let movement = 0;
let target = 0;
function move() {
direction = vector(shork, mouse);
if (norm(direction) >= 4) {
movement = scalar(angletovec(rotation), zoomies * norm(direction)/128);
shork = add(shork, movement);
target = angle(direction);
rotation = interpolate(rotation, target, turnies) + Math.sin(norm(movement))/8;
}
let trans = transform(shork, -rotation);
shork_image.style.transform = `matrix(${trans.a}, ${trans.b}, ${trans.c}, ${trans.d}, ${trans.x}, ${trans.y})`;
setTimeout(move, 30);
}
shork_image.addEventListener("click", function(e) {move()}, {once: true});
function vector(a, b) {
return {
x: b.x - a.x,
y: b.y - a.y
};
}
function angle(v) {
return Math.atan2(v.y, v.x);
}
function angletovec(a) {
return {x: Math.cos(a), y: Math.sin(a)};
}
function norm(v) {
return Math.sqrt(Math.pow(v.x, 2) + Math.pow(v.y, 2));
}
function unit(v) {
let length = norm(v);
if (length == 0) return {x: 0, y: 0};
return {x: v.x / length, y: v.y / length};
}
function scalar(v, a) {
return {x: v.x * a, y: v.y * a};
}
function add(v, u) {
return {x: v.x + u.x, y: v.y + u.y};
}
function round(v) {
return {x: Math.round(v.x), y: Math.round(v.y)};
}
function clamp(a, min, max) {
if (a < min) return min;
if (a > max) return max;
return a;
}
function interpolate(a, b, c) {
let d = Math.abs(a - b)
if (d > Math.abs(a - b - 2 * Math.PI)) a = a - 2 * Math.PI;
if (d > Math.abs(a - b + 2 * Math.PI)) a = a + 2 * Math.PI;
if (a < b) a = clamp(a + c, a, b);
if (a > b) a = clamp(a - c, b, a);
a += 3 * Math.PI;
a = a % (2 * Math.PI);
a -= Math.PI;
return a;
}
function transform(v, a) {
return {a: Math.cos(a), b: -Math.sin(a), c: Math.sin(a), d: Math.cos(a), x: v.x, y: v.y};
}

View file

@ -2,41 +2,26 @@
"articles": [ "articles": [
{ {
"author": "Never", "author": "Never",
"date": "2026-06-22", "date": "9.1.2026",
"email": "n.gude@posteo.de",
"summary": "Inspiriert von der Küche der Kuhtreiber des Wilden Westens.",
"title": "Bohnen und Maisbrot",
"updated": "2026-06-22T20:47+02:00",
"filename": "beans-and-cornbread"
},
{
"author": "Never",
"date": "2026-01-12",
"email": "n.gude@posteo.de",
"summary": "As Spotify is getting enshittified by capitalism, keeping a music library is kind of essential. Here I use rsync to syncronise my library with my Android smartphone.",
"title": "Using rsync on Android to syncronise my Music library",
"updated": "2026-01-12T16:24+01:00",
"filename": "rsync-android"
},
{
"author": "Never",
"date": "2026-01-09",
"email": "n.gude@posteo.de",
"subtitle": "Some unintuitive quirks of Latex", "subtitle": "Some unintuitive quirks of Latex",
"summary": "Latex undoubtedly has some quirks. Some of them have a rather unintuitive solution. In this article I cover some quirks and solutions I have encountered.", "summary": "Latex undoubtedly has some quirks. Some of them have a rather unintuitive solution. In this article I cover some quirks and solutions I have encountered.",
"title": "Latex Endeavors", "title": "Latex Endeavors",
"updated": "2026-01-10T16:23+01:00", "filename": " latex-endeavors"
"filename": "latex-endeavors"
}, },
{ {
"author": "Never", "author": "Never",
"date": "2025-07-25", "date": "25.7.2025",
"email": "n.gude@posteo.de",
"subtitle": "Neat things I picked up along the way", "subtitle": "Neat things I picked up along the way",
"summary": "Tricks and tools I learned about, while tweaking my Linux sytem or trying to do productive things.", "summary": "Tricks and tools I learned about, while tweaking my Linux sytem or trying to do productive things.",
"title": "Random linux utilities", "title": "Random linux utilities",
"updated": "2025-07-25T16:24+01:00", "filename": " random-linux-utils"
"filename": "random-linux-utils" },
{
"author": "Never",
"date": "12.01.2026",
"summary": "As Spotify is getting enshittified by capitalism, keeping a music library is kind of essential. Here I use rsync to syncronise my library with my Android smartphone.",
"title": "Using rsync on Android to syncronise my Music library",
"filename": " rsync-android"
} }
] ]
} }

View file

@ -1,62 +0,0 @@
---
title: Bohnen und Maisbrot
author: Never
email: n.gude@posteo.de
date: 2026-06-22
updated: 2026-06-22T20:47+02:00
summary: Inspiriert von der Küche der Kuhtreiber des Wilden Westens.
---
# Bohnen
| Maße | Zutaten |
|-------------:|:--------|
| 2 | Zwiebeln |
| 2 | Knoblauchzehen |
| 1 | rote Chili (Peperoni/Chile de árbol[^arbol]) |
| | Kreuzkümmel |
| | Speckwürfel (Optional) |
| 1 l | Brühe (Gemüse/Huhn/Rind) |
| 1 Dose | Kidneybohnen |
| 1 Dose | Pintobohnen oder andere Bohnen |
| 1 | Chile Ancho[^ancho] oder geräuchertes Paprikapulver |
| | Petersilienstängel |
| | Limettensaft |
| | Salz
[^arbol]: [Chile de árbol](https://en.wikipedia.org/wiki/Chile_de_%C3%A1rbol); Eine kleine, scharfe, rote Chili. Meist getrocknet zu finden.
[^ancho]: [Chile Ancho](https://en.wikipedia.org/wiki/Poblano); Eine große getrocknete Chili mit rauchigem Geschmack.
## Zubereitung
1. Zwiebeln, Knoblauch, rote Chili, Kreuzkümmel und Speckwürfel anbraten.
2. Mit Brühe ablöschen und die Bohnen, Ancho Chili und Petersilienstängel hinzufügen.
Köcheln und etwas reduzieren lassen.
3. Mit Salz und Limettensaft abschmecken.
# Maisbrot
| Maße | Zutaten |
|-------------:|:--------|
| 1 Tasse | Mehl |
| 1 Tasse | Maismehl |
| 4 TL | Backpulver |
| | Salz |
| 1/4 Tasse | brauner Zucker |
| 1 | Ei |
| 1/3 Tasse | flüssige Butter |
| 1 - 2 Tassen | Milch oder Buttermilch |
| 1/3 Tasse | flüssige Butter |
| | Speckwürfel (Optional) |
| | Gehackte grüne Chilis (Optional) |
## Zubereitung
1. Trockene Zutaten mischen.
2. Ei und Butter unterrühren.
3. Schrittweise die Milch hinzugeben, bis eine zähflüssige Masse
entstanden ist.

View file

@ -2,9 +2,7 @@
title: Latex Endeavors title: Latex Endeavors
subtitle: Some unintuitive quirks of Latex subtitle: Some unintuitive quirks of Latex
author: Never author: Never
email: n.gude@posteo.de date: 9.1.2026
date: 2026-01-09
updated: 2026-01-10T16:23+01:00
summary: Latex undoubtedly has some quirks. Some of them have a rather unintuitive solution. summary: Latex undoubtedly has some quirks. Some of them have a rather unintuitive solution.
In this article I cover some quirks and solutions I have encountered. In this article I cover some quirks and solutions I have encountered.
--- ---

View file

@ -0,0 +1,18 @@
Latex Endeavors
Some unintuitive quirks of Latex
Never
9.1.2026
────────────────────
BIBLATEX AND BIBER
Biber doesnt run
Biber doenst run if the (fedora) package  libxcrypt-compat  is missing.
It will fail with the error message
biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
]8;;\

View file

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" />
<title>Latex Endeavors</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
</style>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<canvas id="tv-screen"></canvas>
<header id="page-header">
<ul>
<li><a href="index.html">Home</a></li><li><a href="about.html">About</a></li>
</ul>
<!--
<ul>
<li>
<span id="dark-mode">
<input id="dark-mode-toggle" type="checkbox"><label for="dark-mode-toggle">Dark mode</label>
</span>
</li>
</ul>
-->
</header>
<header id="title-block-header">
<h1 class="title">Latex Endeavors</h1>
<p class="subtitle">Some unintuitive quirks of Latex</p>
<p class="author">Never</p>
<p class="date">9.1.2026</p>
</header>
<section id="content">
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#biblatex-and-biber" id="toc-biblatex-and-biber">BibLaTeX
and Biber</a>
<ul>
<li><a href="#biber-doesnt-run" id="toc-biber-doesnt-run">Biber doesnt
run</a></li>
</ul></li>
</ul>
</nav>
<article>
<h1 id="biblatex-and-biber">BibLaTeX and Biber</h1>
<h2 id="biber-doesnt-run">Biber doesnt run</h2>
<p>Biber doenst run if the (fedora) package
<code>libxcrypt-compat</code> is missing. It will fail with the error
message</p>
<pre><code>biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</code></pre>
</article>
</section>
<footer id="page-footer">
<!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30/"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60/"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30/"></a>
</p>
</footer>
</body>
</html>

View file

@ -2,9 +2,7 @@
title: Random linux utilities title: Random linux utilities
subtitle: Neat things I picked up along the way subtitle: Neat things I picked up along the way
author: Never author: Never
email: n.gude@posteo.de date: 25.7.2025
date: 2025-07-25
updated: 2025-07-25T16:24+01:00
summary: Tricks and tools I learned about, while tweaking my Linux sytem or trying to do productive things. summary: Tricks and tools I learned about, while tweaking my Linux sytem or trying to do productive things.
--- ---

View file

@ -0,0 +1,18 @@
Latex Endeavors
Some unintuitive quirks of Latex
Never
9.1.2026
────────────────────
BIBLATEX AND BIBER
Biber doesnt run
Biber doenst run if the (fedora) package  libxcrypt-compat  is missing.
It will fail with the error message
biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory
]8;;\

View file

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Never" />
<title>Latex Endeavors</title>
<link rel="icon" type="image/x-icon" href="images/favicon.png">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
</style>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<canvas id="tv-screen"></canvas>
<header id="page-header">
<ul>
<li><a href="index.html">Home</a></li><li><a href="about.html">About</a></li>
</ul>
<!--
<ul>
<li>
<span id="dark-mode">
<input id="dark-mode-toggle" type="checkbox"><label for="dark-mode-toggle">Dark mode</label>
</span>
</li>
</ul>
-->
</header>
<header id="title-block-header">
<h1 class="title">Latex Endeavors</h1>
<p class="subtitle">Some unintuitive quirks of Latex</p>
<p class="author">Never</p>
<p class="date">9.1.2026</p>
</header>
<section id="content">
<nav id="TOC" role="doc-toc">
<ul>
<li><a href="#biblatex-and-biber" id="toc-biblatex-and-biber">BibLaTeX
and Biber</a>
<ul>
<li><a href="#biber-doesnt-run" id="toc-biber-doesnt-run">Biber doesnt
run</a></li>
</ul></li>
</ul>
</nav>
<article>
<h1 id="biblatex-and-biber">BibLaTeX and Biber</h1>
<h2 id="biber-doesnt-run">Biber doesnt run</h2>
<p>Biber doenst run if the (fedora) package
<code>libxcrypt-compat</code> is missing. It will fail with the error
message</p>
<pre><code>biber: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory</code></pre>
</article>
</section>
<footer id="page-footer">
<!-- <embed type="text/html" src="https://cups.teabucket.eu/embed?from=never" style="width:320px; height: 120px; scale: 0.66;"> -->
<p class="cups-light">
<a href="https://cups.teabucket.eu/prev?from=never" target="_parent"><img alt="Previous" src="images/cups_left.svg" width="30" height="30/"></a>
<a href="https://cups.teabucket.eu/" target="_parent"><img alt="CUPS" src="images/cups_logo.svg" width="120" height="60/"></a>
<a href="https://cups.teabucket.eu/next?from=never" target="_parent"><img alt="Next" src="images/cups_right.svg" width="30" height="30/"></a>
</p>
</footer>
</body>
</html>

View file

@ -1,9 +1,7 @@
--- ---
title: Using rsync on Android to syncronise my Music library title: Using rsync on Android to syncronise my Music library
author: Never author: Never
email: n.gude@posteo.de date: 12.01.2026
date: 2026-01-12
updated: 2026-01-12T16:24+01:00
summary: As Spotify is getting enshittified by capitalism, keeping a music library summary: As Spotify is getting enshittified by capitalism, keeping a music library
is kind of essential. Here I use rsync to syncronise my library with my Android smartphone. is kind of essential. Here I use rsync to syncronise my library with my Android smartphone.
--- ---
@ -99,3 +97,31 @@ Now on your Linux machine, syncronise your Music library with rsync.
rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music rsync -av -e "ssh -p 8022" ~/Music <username>@<ip_address>:/data/data/com.termux/files/home/storage/music
``` ```
## Refreshing the Android MediaStore
Android uses a Database to store files. In order to play your music, this database
needs to be refreshed. This can be achieved by a reboot or by using adb to manually
refresh it.
```sh
sudo dnf install adb
```
Connect the Android device via USB and see if it is listed.
```sh
adb devices
```
If it is, restart adb in TCP mode with port 5555
```sh
adb tcpip 5555
```
Connect to the device using its <ip_address>.
```sh
adb connect <ip_address>
```
Refresh MediaStore.
```sh
adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN -d file:///data/data/com.termux/files/home/storage/music/
```

View file

@ -1,8 +0,0 @@
---
title: nevereverever.de
link: https://nevereverever.de/eh/eh/eh/eh-eh
subtitle: Here I post random stuff.
author: Never
date: 2026-03-10
id: nevereverever.de
---

View file

@ -1,15 +1,4 @@
--- ---
title: Home title: Home
--- ---
Hello World
Hello! I am Never and this is my little place on the internet where I post the
stuff that I am currently nerding out about.
This Website itself is one of those projects, that I like to tweak and tinker
with. Maybe I'll write an article about its build system. It is also viewable
via `curl`. Just run
```sh
curl nevereverever.de
```
There also is an Atom Feed to stay updated about my doings.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before After
Before After

Binary file not shown.

View file

@ -1,173 +1,114 @@
:root { :root {
--foreground: #586e75; --foreground: #1a1a1a;
--background: #fdf6e3; --background: #fdfdfdf0;
--html-border: #eee8d5; --border: #c9c9c9;
--html-background: #268bd2; --html-background: #e3e3e3;
--body-background: linear-gradient(to bottom, #2aa198, #268bd2); --blockquote-text: #606060;
--blockquote-text: #657b83; --blockquote-border: #e6e6e6;
--blockquote-border: #eee8d5; --button-border: #e3e3e3;
--button-primary: #fdf6e3; --button-background: #d0d0d0;
--button-secondary: #eee8d5;
--code-color: #657b83;
--code-background: #fdf6e3;
--code-line-number-color: #93a1a1;
--code-line-number-background: #eee8d5;
--code-comment-color: #93a1a1;
--code-keyword-color: #586e75;
} }
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
:root { :root {
--foreground: #93a1a1; --foreground: #fdfdfd;
--background: #002b36; --background: #1a1a1af0;
--html-border: #073642; --border: #4c4c4c;
--html-background: #6c71c4; --html-background: #303030;
--body-background: linear-gradient(to bottom, #268bd2, #6c71c4); --blockquote-text: #e6e6e6;
--blockquote-text: #839496; --blockquote-border: #606060;
--blockquote-border: #073642; --button-border: #4c4c4c;
--button-primary: #073642; --button-background: #404040;
--button-secondary: #002b36;
--code-color: #839496;
--code-background: #002b36;
--code-line-number-color: #586e75;
--code-line-number-background: #073642;
--code-comment-color: #586e75;
--code-keyword-color: #93a1a1;
} }
} }
pre.numberSource code > span > a:first-child::before {
background-color: var(--code-line-number-background);
color: var(--code-line-number-color);
}
pre.numberSource {
margin-left: 3em;
border-left: none;
padding-left: 4px;
}
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: none; }
}
div.sourceCode {
color: var(--code-color);
background-color: var(--code-background);
line-height: 80%;
}
code span.co { color: var(--code-comment-color); font-style: italic; } /* Comment */
code span.do { color: var(--code-comment-color); font-style: italic; } /* Documentation */
code span.kw { color: var(--code-keyword-color); font-weight: bold; } /* Keyword */
html { html {
color: var(--foreground); color: var(--foreground);
/*background: url("recursion.gif");*/
background: var(--html-background); background: var(--html-background);
background-repeat: repeat-y;
background-size: cover;
font-family: serif; font-family: serif;
font-size: 14pt; font-size: 14pt;
} }
body { body {
margin: 0; background-color: var(--background);
background: var(--body-background); border: solid 1px var(--border);
}
main {
max-width: 48em;
margin: 0 auto; margin: 0 auto;
max-width: 48em;
padding-left: 50pt; padding-left: 50pt;
padding-right: 50pt; padding-right: 50pt;
padding-top: 50pt; padding-top: 50pt;
padding-bottom: 50pt; padding-bottom: 50pt;
hyphens: auto; hyphens: auto;
overflow-wrap: break-word; overflow-wrap: break-word;
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font-kerning: normal; font-kerning: normal;
background-color: var(--background);
border-left: solid 3pt var(--html-border);
border-right: solid 3pt var(--html-border);
} }
#shork { #tv-screen {
position: absolute; position: fixed;
z-index: 1; top: 0;
left: -36px; left: 0;
top: -32px; z-index: -1;
width: 64px;
transform-origin: 50% 50%;
} }
#page-header { #page-header {
display: flex; display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between; justify-content: space-between;
max-width: 60em; text-align: left;
border: 4pt ridge var(--border);
margin: 0 auto;
padding: 4pt;
background: url("images/shark-top-small.png"); background: url("images/shark-top-small.png");
background-size: contain; background-size: contain;
border: solid 3pt var(--html-border); }
#page-header li {
list-style: none;
display: inline-block;
}
#page-header a:active {
border: 2pt inset var(--button-border)
} }
#page-header a { #page-header a {
color: var(--foreground); color: var(--foreground);
padding: 4pt;
text-decoration: none; text-decoration: none;
margin: 4pt;
padding: 4pt;
border: 2pt outset var(--button-border);
background-color: var(--button-background)
} }
.page-header-button { #page-header ul,
background: linear-gradient(to bottom, var(--button-primary) 0%, var(--button-secondary) 100%);
border: 1pt solid var(--blockquote-border);
border-radius: 4pt;
}
.page-header-button:active {
background: linear-gradient(to bottom, var(--button-secondary) 0%, var(--button-primary) 100%);
}
.rss-button {
color: #fdf6e3 !important;
background: linear-gradient(to bottom, #fb9d3a 0%, #d95c29 100%);
border: 1pt solid #f2994f;
border-radius: 4pt;
}
.rss-button:active {
background: linear-gradient(to bottom, #d95c29 0%, #fb9d3a 100%);
}
#articles ul { #articles ul {
padding-left: 0; padding-left: 0;
} }
#articles li { #articles li {
list-style: none; list-style: none;
display: block;
} }
.articles-header { .articles-header {
margin: 8pt 0 4pt 0;
text-align: left;
}
.articles-footer {
display: flex; display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between; justify-content: space-between;
margin-top: 4pt;
} }
.articles-title { .articles-title {
margin: 8pt 0 4pt 0;
font-size: 14pt; font-size: 14pt;
font-weight: bold; font-weight: bold;
} }
.articles-author { .articles-author {
font-style: italic; margin: 12pt 0 4pt 0;
} }
.articles-summary { .articles-summary {
@ -175,29 +116,42 @@ main {
} }
.articles-date { .articles-date {
margin: 0;
text-align: right; text-align: right;
} }
#page-footer { #page-footer {
display: flex; border: 4pt ridge var(--border);
justify-content: center;
max-width: 60em;
margin: 0 auto;
padding: 4pt;
background: url("images/shark-top-small.png"); background: url("images/shark-top-small.png");
background-size: contain; background-size: contain;
border: solid 3pt var(--html-border); display: flex;
justify-content: center;
} }
#page-footer nav { #page-footer p {
display: flex; display: flex;
flex-direction: row;
align-items: center; align-items: center;
} }
/*
#TOC {
padding: 24px;
}
section {
display: flex;
flex-direction: row;
}
article {
padding: 12px;
overflow: auto;
}
*/
@media (max-width: 600px) { @media (max-width: 600px) {
main { body {
font-size: 0.9em; font-size: 0.9em;
padding: 12pt; padding: 12pt;
} }
@ -232,14 +186,6 @@ main {
page-break-after: avoid; page-break-after: avoid;
} }
a {
color: black;
}
#page {
border: none;
}
#page-header, #page-header,
#page-footer { #page-footer {
display: none; display: none;
@ -338,20 +284,8 @@ hr {
margin: 1em 0; margin: 1em 0;
} }
figure {
margin: 1em 0;
width: 100%;
overflow-x: auto;
display: block;
text-align: center;
}
figcaption {
margin-top: 0.75em;
}
table { table {
margin: 1em auto; margin: 1em 0;
border-collapse: collapse; border-collapse: collapse;
width: 100%; width: 100%;
overflow-x: auto; overflow-x: auto;