This commit is contained in:
root 2025-03-07 04:15:42 +01:00
parent 19e2a6f510
commit 4452abb3e0
37 changed files with 0 additions and 7319 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 715 B

View file

@ -1,152 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" >
<head>
<meta charset="UTF-8" />
<meta name="description" content="Well, get on this site and find out." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="base" content="https://rootsource.cc" />
<meta name="theme-color" content="purple" />
<title>404 - RootSourceCC</title>
<link rel="canonical" href="&#x2F;" />
<meta content="Zola" name="generator">
<link rel="icon" type="image/png" href="https://rootsource.cc/favicon.png?h=49b0131ec00d0056a576" />
<link rel="preload" href="https://rootsource.cc/fonts/geist.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/geist-mono.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/phosphor-bold.woff2" as="font" type="font/woff2" crossorigin><style type="text/css">
:root {
--accent-color: hsl(254.11766 44% 55%);
--accent-h: 254.11766;
--accent-s: 44%;
--accent-l: 55%;
}[data-theme="dark"] {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
}</style>
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/style.css?h=fd31cab16611d9654aa0" />
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/phosphor-bold.css?h=64fb8156a3a3f0de62c5" />
<script type="text/javascript" defer src="https://rootsource.cc/closable.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search_index.en.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/elasticlunr.min.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search.js"></script>
<meta property="og:site_name" content="RootSourceCC" />
<meta property="og:title" content="404 - RootSourceCC" />
<meta property="og:url" content="&#x2F;" />
<meta property="og:description" content="Well, get on this site and find out." />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="404 - RootSourceCC" />
<meta name="twitter:url" content="&#x2F;" />
<meta name="twitter:description" content="Well, get on this site and find out." />
</head>
<body >
<a id="skip-to-content" href="#main-content" tabindex="0">Skip to Main Content</a>
<div id="site-navbar" class="sidebar">
<a id="navbar-header" class="has-icon" href="#top"><img class="transparent no-hover" src="https:&#x2F;&#x2F;rootsource.cc&#x2F;SiteIcon.png" /><div>
<span>404</span>
<span>Back to Top</span>
</div>
</a>
<nav class="overshoot">
<ul><li>
<a
href="https:&#x2F;&#x2F;rootsource.cc&#x2F;">
<i class="ph-bold ph-house"></i>RootSourceCC</a>
</li>
<li>
<a href="https://rootsource.cc/Articles" class="
">
<i class="ph-bold ph-newspaper"></i>Articles</a>
</li>
<li>
<a href="https://rootsource.cc/hwinfo" class="
">
<i class="ph-bold ph-circuitry"></i>Hardware information</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;git.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-git-merge"></i>Alpsource</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;haj.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-fediverse-logo"></i>Hajiku&#x2F;Costkey</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;bin.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-lock-laminated"></i>Estellabin</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;status.rootsource.cc&#x2F;status&#x2F;status" rel="" class="external">
<i class="ph-bold ph-siren"></i>Status</a>
</li></ul>
</nav>
<div id="navbar-buttons">
<input class="visually-hidden" id="toggle-navbar" type="checkbox" name="toggle-navbar" autocomplete="off" />
<label for="toggle-navbar"><i class="ph-bold ph-sidebar"></i>Toggle Sidebar</label><button id="search">
<i class="ph-bold ph-magnifying-glass"></i>Search</button></div>
</div>
<main id="main-content" class="has-navbar"><div class="container">
<picture id="not-found">
<source srcset="https://rootsource.cc/404-static.gif" media="(prefers-reduced-motion: reduce)"></source>
<img class="pixels transparent no-hover drop-shadow" alt="404"src="https://rootsource.cc/404.gif">
</picture>
<h1>Page Not Found</h1>
<p>The requested page could not be found.</p>
<div class="buttons">
<a href="https:&#x2F;&#x2F;rootsource.cc&#x2F;">Go Home</a>
</div>
</div>
</main>
<footer id="site-footer">
<div class="container">
<div><p id="site-footer-copyright">raiz1.noho.st owns this website
</p>
<p>Powered by <a class="link external" href="https://www.getzola.org" rel="">Zola</a> and <a class="link external" href="https://ametrine.daudix.one" rel="">Ametrine</a>
</p><p id="site-footer-last-updated">March 06, 2025, 15:26 (CET)</p>
</div></div>
</footer>
<div id="search-modal">
<div id="search-modal-content">
<label for="search-input" class="visually-hidden">Search</label>
<div>
<input id="search-input" placeholder="Search for…" autocomplete="off" type="search">
<i class="ph-bold ph-keyboard" title="Press “&#x2F;” to Open Search Bar"></i>
</div>
<div id="search-results" class="overshoot"></div>
</div>
</div>
</body>
</html>

View file

@ -1,227 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" >
<head>
<meta charset="UTF-8" />
<meta name="description" content="Well, get on this site and find out." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="base" content="https://rootsource.cc" />
<meta name="theme-color" content="purple" />
<title>Transition from Duckquill to Ametrine - RootSourceCC</title>
<link rel="canonical" href="https://rootsource.cc/Articles/duckquill2ametrine/" />
<meta content="Zola" name="generator">
<link rel="icon" type="image/png" href="https://rootsource.cc/favicon.png?h=49b0131ec00d0056a576" />
<link rel="preload" href="https://rootsource.cc/fonts/geist.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/geist-mono.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/phosphor-bold.woff2" as="font" type="font/woff2" crossorigin><style type="text/css">
:root {
--accent-color: hsl(254.11766 44% 55%);
--accent-h: 254.11766;
--accent-s: 44%;
--accent-l: 55%;
}[data-theme="dark"] {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
}</style>
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/style.css?h=fd31cab16611d9654aa0" />
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/phosphor-bold.css?h=64fb8156a3a3f0de62c5" />
<script type="text/javascript" defer src="https://rootsource.cc/closable.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search_index.en.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/elasticlunr.min.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search.js"></script>
<meta property="og:site_name" content="RootSourceCC" />
<meta property="og:title" content="Transition from Duckquill to Ametrine - RootSourceCC" />
<meta property="og:url" content="https://rootsource.cc/Articles/duckquill2ametrine/" />
<meta property="og:description" content="In this guide, we will show you how to transition from Daudix&#x27;s Duckquill to its successor, Ametrine!" />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Transition from Duckquill to Ametrine - RootSourceCC" />
<meta name="twitter:url" content="https://rootsource.cc/Articles/duckquill2ametrine/" />
<meta name="twitter:description" content="In this guide, we will show you how to transition from Daudix&#x27;s Duckquill to its successor, Ametrine!" />
</head>
<body >
<a id="skip-to-content" href="#main-content" tabindex="0">Skip to Main Content</a>
<div id="site-navbar" class="sidebar">
<a id="navbar-header" class="has-icon" href="#top"><img class="transparent no-hover" src="https:&#x2F;&#x2F;rootsource.cc&#x2F;SiteIcon.png" /><div>
<span>Transition from Duckquill to Ametrine</span>
<span>Back to Top</span>
</div>
</a>
<nav class="overshoot">
<ul><li>
<a
href="https:&#x2F;&#x2F;rootsource.cc&#x2F;">
<i class="ph-bold ph-house"></i>RootSourceCC</a>
</li>
<li>
<a href="https://rootsource.cc/Articles" class="
">
<i class="ph-bold ph-newspaper"></i>Articles</a>
</li>
<li>
<a href="https://rootsource.cc/hwinfo" class="
">
<i class="ph-bold ph-circuitry"></i>Hardware information</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;git.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-git-merge"></i>Alpsource</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;haj.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-fediverse-logo"></i>Hajiku&#x2F;Costkey</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;bin.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-lock-laminated"></i>Estellabin</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;status.rootsource.cc&#x2F;status&#x2F;status" rel="" class="external">
<i class="ph-bold ph-siren"></i>Status</a>
</li></ul>
</nav>
<div id="navbar-buttons">
<input class="visually-hidden" id="toggle-navbar" type="checkbox" name="toggle-navbar" autocomplete="off" />
<label for="toggle-navbar"><i class="ph-bold ph-sidebar"></i>Toggle Sidebar</label><button id="search">
<i class="ph-bold ph-magnifying-glass"></i>Search</button></div>
</div>
<main id="main-content" class="has-navbar"><div class="container">
<article>
<h1 id="heading">Transition from Duckquill to Ametrine</h1><div class="article-details"><div class="item">
<i class="ph-bold ph-calendar"></i>
<time datetime="2025-03-04T00:00:00+00:00" pubdate>March 04, 2025</time>
</div><div class="item">
<i class="ph-bold ph-clock-countdown"></i>
<span>2 minutes</span>
</div>
</div>
<aside id="toc">
<strong class="title">Table of Contents</strong>
<div class="overshoot">
<ul><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#wip">WIP!</a></li><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#step-1-getting-ametrine">Step 1: Getting Ametrine</a><ul><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#don-t-clone-as-submodule">Don&#x27;t clone as submodule</a>
</li><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#clone-as-submodule-recommended">Clone as submodule (recommended!)</a>
</li></ul></li><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#step-2-applying-ametrine">Step 2: Applying Ametrine</a><ul><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#editing-the-file-manually">Editing the file manually</a>
</li><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#using-sed-like-a-pro-haxx0r">Using sed like a pro haxx0r</a>
</li></ul></li><li>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/#building-and-praying">Building and praying</a></li></ul>
</div>
</aside><h1 id="wip">WIP!</h1>
<p>(daudix will have less work writing this fr)</p>
<h1 id="step-1-getting-ametrine">Step 1: Getting Ametrine</h1>
<p>First, you're going to navigate to the themes folder of your Zola installation. Example:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">user@hostname:/#</span><span> cd /var/www/zola/themes/
</span><span style="color:#bf616a;">user@hostname:/var/www/zola/themes#
</span></code></pre>
<h2 id="don-t-clone-as-submodule">Don't clone as submodule</h2>
<p>If Git is installed, you're going to clone Ametrine into the themes directory:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">user@hostname:/var/www/zola/themes#</span><span> git clone https://codeberg.org/daudix/ametrine
</span><span style="color:#96b5b4;">cd</span><span> ametrine
</span></code></pre>
<h2 id="clone-as-submodule-recommended">Clone as submodule (recommended!)</h2>
<p>Or, if you use Submodules:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">user@hostname:/var/www/zola/themes#</span><span> git submodule init
</span><span style="color:#bf616a;">user@hostname:/var/www/zola/themes#</span><span> git submodule add https://codeberg.org/daudix/ametrine.git ametrine
</span></code></pre>
<h1 id="step-2-applying-ametrine">Step 2: Applying Ametrine</h1>
<p>Next step is to change the config to use Ametrine instead of Duckquill</p>
<p>For this, go back to the root directory of the Zola installation:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">user@hostname:/var/www/zola/themes#</span><span> cd ..
</span><span style="color:#bf616a;">user@hostname:/var/www/zola#</span><span> ls
</span><span style="color:#bf616a;">config.toml</span><span> content public static templates themes zola
</span><span style="color:#bf616a;">user@hostname:/var/www/zola#
</span></code></pre>
<h2 id="editing-the-file-manually">Editing the file manually</h2>
<p>Open the file in your favourite editor:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">user@hostname:/var/www/zola#</span><span> micro config.toml
</span></code></pre>
<p>Find the line that says</p>
<pre data-lang="toml" style="background-color:#2b303b;color:#c0c5ce;" class="language-toml "><code class="language-toml" data-lang="toml"><span style="color:#bf616a;">theme </span><span>= &quot;</span><span style="color:#a3be8c;">duckquill</span><span>&quot;
</span></code></pre>
<p>and replace it with</p>
<pre data-lang="toml" style="background-color:#2b303b;color:#c0c5ce;" class="language-toml "><code class="language-toml" data-lang="toml"><span style="color:#bf616a;">theme </span><span>= &quot;</span><span style="color:#a3be8c;">ametrine</span><span>&quot;
</span></code></pre>
<h2 id="using-sed-like-a-pro-haxx0r">Using <code>sed</code> like a pro haxx0r</h2>
<p>Feeling skid today? Use the following command to replace the line manually using sed:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">user@hostname:/var/www/zola#</span><span> sed</span><span style="color:#bf616a;"> -i </span><span>&#39;</span><span style="color:#a3be8c;">s/theme = \&quot;duckquill\&quot;/theme = \&quot;ametrine\&quot;/g</span><span>&#39; config.toml
</span></code></pre>
<h1 id="building-and-praying">Building and praying</h1>
<p>Well, time to build!</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">user@hostname:/var/www/zola#</span><span> ./zola build
</span><span style="color:#bf616a;">Building</span><span> site...
</span><span style="color:#bf616a;">Checking</span><span> all internal links with anchors.
</span><span>&gt; Successfully </span><span style="color:#bf616a;">checked</span><span> 0 internal link(s) </span><span style="color:#bf616a;">with</span><span> anchors.
</span><span style="color:#bf616a;">-</span><span>&gt; Creating 3 pages (0 orphan) </span><span style="color:#bf616a;">and</span><span> 1 sections
</span><span style="color:#bf616a;">Done</span><span> in 341ms.
</span></code></pre>
<ul>
<li>Note: The zola command may either only be available in the site's directory, or as a widely-available command, depending on your installation method of Zola.</li>
</ul>
<p>We have done it!</p>
<p>You have transitioned from Duckquill to Ametrine, and so did we, joining <a href="https://aeronook.tech">AeroNook (#1)</a> and <a href="https://mambuco.dev/">Mambuco (#2)</a> in the transition, making us the third!</p>
<p>Ametrine is still experimental, but we are happy to see it grow so fast! Thank you <a href="https://daudix.one">Daudix</a> for blessing us with this fr. Go check him out, he's a great and very talented person!</p>
<p>Thank you for reading!</p>
<p>Sincerely, RootsourceCC.</p>
</article><hr />
<nav id="post-nav"><a class="post-nav-item post-nav-prev" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;set-up-costmiku-ffsync&#x2F;">
<div class="nav-arrow">Previous</div>
<span class="post-title">Set up costmiku ffsync on Firefox</span>
</a></nav>
</div>
</main>
<footer id="site-footer">
<div class="container">
<div><p id="site-footer-copyright">raiz1.noho.st owns this website
</p>
<p>Powered by <a class="link external" href="https://www.getzola.org" rel="">Zola</a> and <a class="link external" href="https://ametrine.daudix.one" rel="">Ametrine</a>
</p><p id="site-footer-last-updated">March 06, 2025, 15:26 (CET)</p>
</div></div>
</footer>
<div id="search-modal">
<div id="search-modal-content">
<label for="search-input" class="visually-hidden">Search</label>
<div>
<input id="search-input" placeholder="Search for…" autocomplete="off" type="search">
<i class="ph-bold ph-keyboard" title="Press “&#x2F;” to Open Search Bar"></i>
</div>
<div id="search-results" class="overshoot"></div>
</div>
</div>
</body>
</html>

View file

@ -1,207 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" >
<head>
<meta charset="UTF-8" />
<meta name="description" content="Well, get on this site and find out." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="base" content="https://rootsource.cc" />
<meta name="theme-color" content="purple" />
<title>Articles - RootSourceCC</title>
<link rel="canonical" href="https://rootsource.cc/Articles/" />
<meta content="Zola" name="generator">
<link rel="icon" type="image/png" href="https://rootsource.cc/favicon.png?h=49b0131ec00d0056a576" />
<link rel="preload" href="https://rootsource.cc/fonts/geist.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/geist-mono.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/phosphor-bold.woff2" as="font" type="font/woff2" crossorigin><style type="text/css">
:root {
--accent-color: hsl(254.11766 44% 55%);
--accent-h: 254.11766;
--accent-s: 44%;
--accent-l: 55%;
}[data-theme="dark"] {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
}</style>
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/style.css?h=fd31cab16611d9654aa0" />
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/phosphor-bold.css?h=64fb8156a3a3f0de62c5" />
<script type="text/javascript" defer src="https://rootsource.cc/closable.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search_index.en.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/elasticlunr.min.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search.js"></script>
<meta property="og:site_name" content="RootSourceCC" />
<meta property="og:title" content="Articles - RootSourceCC" />
<meta property="og:url" content="https://rootsource.cc/Articles/" />
<meta property="og:description" content="Well, get on this site and find out." />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Articles - RootSourceCC" />
<meta name="twitter:url" content="https://rootsource.cc/Articles/" />
<meta name="twitter:description" content="Well, get on this site and find out." />
</head>
<body >
<a id="skip-to-content" href="#main-content" tabindex="0">Skip to Main Content</a>
<div id="site-navbar" class="sidebar">
<a id="navbar-header" class="has-icon" href="#top"><img class="transparent no-hover" src="https:&#x2F;&#x2F;rootsource.cc&#x2F;SiteIcon.png" /><div>
<span>Articles</span>
<span>Back to Top</span>
</div>
</a>
<nav class="overshoot">
<ul><li>
<a
href="https:&#x2F;&#x2F;rootsource.cc&#x2F;">
<i class="ph-bold ph-house"></i>RootSourceCC</a>
</li>
<li>
<a href="https://rootsource.cc/Articles" class="
active
">
<i class="ph-bold ph-newspaper"></i>Articles</a>
</li>
<li>
<a href="https://rootsource.cc/hwinfo" class="
">
<i class="ph-bold ph-circuitry"></i>Hardware information</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;git.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-git-merge"></i>Alpsource</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;haj.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-fediverse-logo"></i>Hajiku&#x2F;Costkey</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;bin.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-lock-laminated"></i>Estellabin</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;status.rootsource.cc&#x2F;status&#x2F;status" rel="" class="external">
<i class="ph-bold ph-siren"></i>Status</a>
</li></ul>
</nav>
<div id="navbar-buttons">
<input class="visually-hidden" id="toggle-navbar" type="checkbox" name="toggle-navbar" autocomplete="off" />
<label for="toggle-navbar"><i class="ph-bold ph-sidebar"></i>Toggle Sidebar</label><button id="search">
<i class="ph-bold ph-magnifying-glass"></i>Search</button></div>
</div>
<main id="main-content" class="has-navbar"><div class="container">
<h1>Articles</h1>
<p>
<small>
3 posts in total
</small>
</p>
<div class="article-list">
<article class="
">
<div>
<a href="https://rootsource.cc/Articles/duckquill2ametrine/">
<h3>Transition from Duckquill to Ametrine</h3>
</a><div class="description">
<p>In this guide, we will show you how to transition from Daudix's Duckquill to its successor, Ametrine!</p>
</div><div class="article-details"><div class="item">
<i class="ph-bold ph-calendar"></i>
<time datetime="2025-03-04T00:00:00+00:00" pubdate>March 04, 2025</time>
</div><div class="item">
<i class="ph-bold ph-clock-countdown"></i>
<span>2 minutes</span>
</div>
</div>
</div>
<a class="open-post" href="https://rootsource.cc/Articles/duckquill2ametrine/"><i class="ph-bold ph-caret-right"></i>
</a>
</article>
<article class="
">
<div>
<a href="https://rootsource.cc/Articles/set-up-costmiku-ffsync/">
<h3>Set up costmiku ffsync on Firefox</h3>
</a><div class="description">
<p>Shortest article demonstrating how to configure Firefox to synchronise to costmiku ffsync</p>
</div><div class="article-details"><div class="item">
<i class="ph-bold ph-calendar"></i>
<time datetime="2025-03-01T00:00:00+00:00" pubdate>March 01, 2025</time>
</div><div class="item">
<i class="ph-bold ph-clock-countdown"></i>
<span>2 minutes</span>
</div>
</div>
</div>
<a class="open-post" href="https://rootsource.cc/Articles/set-up-costmiku-ffsync/"><i class="ph-bold ph-caret-right"></i>
</a>
</article>
</div>
<nav id="paginator">
<span id="paginator-first" title="First">
<i class="ph-bold ph-caret-line-left"></i>
</span>
<span id="paginator-previous" title="Previous">
<i class="ph-bold ph-caret-left"></i>
</span><span id="paginator-counter">1/2</span><a id="paginator-next" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;page&#x2F;2&#x2F;" title="Next">
<i class="ph-bold ph-caret-right"></i>
</a><a id="paginator-last" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;page&#x2F;2&#x2F;" title="Last">
<i class="ph-bold ph-caret-line-right"></i>
</a>
</nav>
</div>
</main>
<footer id="site-footer">
<div class="container">
<div><p id="site-footer-copyright">raiz1.noho.st owns this website
</p>
<p>Powered by <a class="link external" href="https://www.getzola.org" rel="">Zola</a> and <a class="link external" href="https://ametrine.daudix.one" rel="">Ametrine</a>
</p><p id="site-footer-last-updated">March 06, 2025, 15:26 (CET)</p>
</div></div>
</footer>
<div id="search-modal">
<div id="search-modal-content">
<label for="search-input" class="visually-hidden">Search</label>
<div>
<input id="search-input" placeholder="Search for…" autocomplete="off" type="search">
<i class="ph-bold ph-keyboard" title="Press “&#x2F;” to Open Search Bar"></i>
</div>
<div id="search-results" class="overshoot"></div>
</div>
</div>
</body>
</html>

View file

@ -1,6 +0,0 @@
<!doctype html>
<meta charset="utf-8">
<link rel="canonical" href="https://rootsource.cc/Articles/">
<meta http-equiv="refresh" content="0; url=https://rootsource.cc/Articles/">
<title>Redirect</title>
<p><a href="https://rootsource.cc/Articles/">Click here</a> to be redirected.</p>

View file

@ -1,184 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" >
<head>
<meta charset="UTF-8" />
<meta name="description" content="Well, get on this site and find out." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="base" content="https://rootsource.cc" />
<meta name="theme-color" content="purple" />
<title>Articles - RootSourceCC</title>
<link rel="canonical" href="https://rootsource.cc/Articles/page/2/" />
<meta content="Zola" name="generator">
<link rel="icon" type="image/png" href="https://rootsource.cc/favicon.png?h=49b0131ec00d0056a576" />
<link rel="preload" href="https://rootsource.cc/fonts/geist.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/geist-mono.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/phosphor-bold.woff2" as="font" type="font/woff2" crossorigin><style type="text/css">
:root {
--accent-color: hsl(254.11766 44% 55%);
--accent-h: 254.11766;
--accent-s: 44%;
--accent-l: 55%;
}[data-theme="dark"] {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
}</style>
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/style.css?h=fd31cab16611d9654aa0" />
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/phosphor-bold.css?h=64fb8156a3a3f0de62c5" />
<script type="text/javascript" defer src="https://rootsource.cc/closable.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search_index.en.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/elasticlunr.min.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search.js"></script>
<meta property="og:site_name" content="RootSourceCC" />
<meta property="og:title" content="Articles - RootSourceCC" />
<meta property="og:url" content="https://rootsource.cc/Articles/page/2/" />
<meta property="og:description" content="Well, get on this site and find out." />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Articles - RootSourceCC" />
<meta name="twitter:url" content="https://rootsource.cc/Articles/page/2/" />
<meta name="twitter:description" content="Well, get on this site and find out." />
</head>
<body >
<a id="skip-to-content" href="#main-content" tabindex="0">Skip to Main Content</a>
<div id="site-navbar" class="sidebar">
<a id="navbar-header" class="has-icon" href="#top"><img class="transparent no-hover" src="https:&#x2F;&#x2F;rootsource.cc&#x2F;SiteIcon.png" /><div>
<span>Articles</span>
<span>Back to Top</span>
</div>
</a>
<nav class="overshoot">
<ul><li>
<a
href="https:&#x2F;&#x2F;rootsource.cc&#x2F;">
<i class="ph-bold ph-house"></i>RootSourceCC</a>
</li>
<li>
<a href="https://rootsource.cc/Articles" class="
">
<i class="ph-bold ph-newspaper"></i>Articles</a>
</li>
<li>
<a href="https://rootsource.cc/hwinfo" class="
">
<i class="ph-bold ph-circuitry"></i>Hardware information</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;git.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-git-merge"></i>Alpsource</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;haj.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-fediverse-logo"></i>Hajiku&#x2F;Costkey</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;bin.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-lock-laminated"></i>Estellabin</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;status.rootsource.cc&#x2F;status&#x2F;status" rel="" class="external">
<i class="ph-bold ph-siren"></i>Status</a>
</li></ul>
</nav>
<div id="navbar-buttons">
<input class="visually-hidden" id="toggle-navbar" type="checkbox" name="toggle-navbar" autocomplete="off" />
<label for="toggle-navbar"><i class="ph-bold ph-sidebar"></i>Toggle Sidebar</label><button id="search">
<i class="ph-bold ph-magnifying-glass"></i>Search</button></div>
</div>
<main id="main-content" class="has-navbar"><div class="container">
<h1>Articles</h1>
<p>
<small>
3 posts in total
</small>
</p>
<div class="article-list">
<article class="
">
<div>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/">
<h3>TylkoLinux install guide (Delirium).</h3>
</a><div class="description">
<p>This article will go over the installation guide for the distro</p>
</div><div class="article-details"><div class="item">
<i class="ph-bold ph-calendar"></i>
<time datetime="2025-01-30T00:00:00+00:00" pubdate>January 30, 2025</time>
</div><div class="item">
<i class="ph-bold ph-clock-countdown"></i>
<span>11 minutes</span>
</div>
</div>
</div>
<a class="open-post" href="https://rootsource.cc/Articles/tylkolinux-installation/"><i class="ph-bold ph-caret-right"></i>
</a>
</article>
</div>
<nav id="paginator"><a id="paginator-first" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;" title="First">
<i class="ph-bold ph-caret-line-left"></i>
</a>
<a id="paginator-previous" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;" title="Previous">
<i class="ph-bold ph-caret-left"></i>
</a>
<span id="paginator-counter">2/2</span><span id="paginator-next" title="Next">
<i class="ph-bold ph-caret-right"></i>
</span>
<span id="paginator-last" title="Last">
<i class="ph-bold ph-caret-line-right"></i>
</span></nav>
</div>
</main>
<footer id="site-footer">
<div class="container">
<div><p id="site-footer-copyright">raiz1.noho.st owns this website
</p>
<p>Powered by <a class="link external" href="https://www.getzola.org" rel="">Zola</a> and <a class="link external" href="https://ametrine.daudix.one" rel="">Ametrine</a>
</p><p id="site-footer-last-updated">March 06, 2025, 15:26 (CET)</p>
</div></div>
</footer>
<div id="search-modal">
<div id="search-modal-content">
<label for="search-input" class="visually-hidden">Search</label>
<div>
<input id="search-input" placeholder="Search for…" autocomplete="off" type="search">
<i class="ph-bold ph-keyboard" title="Press “&#x2F;” to Open Search Bar"></i>
</div>
<div id="search-results" class="overshoot"></div>
</div>
</div>
</body>
</html>

View file

@ -1,181 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" >
<head>
<meta charset="UTF-8" />
<meta name="description" content="Well, get on this site and find out." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="base" content="https://rootsource.cc" />
<meta name="theme-color" content="purple" />
<title>Set up costmiku ffsync on Firefox - RootSourceCC</title>
<link rel="canonical" href="https://rootsource.cc/Articles/set-up-costmiku-ffsync/" />
<meta content="Zola" name="generator">
<link rel="icon" type="image/png" href="https://rootsource.cc/favicon.png?h=49b0131ec00d0056a576" />
<link rel="preload" href="https://rootsource.cc/fonts/geist.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/geist-mono.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/phosphor-bold.woff2" as="font" type="font/woff2" crossorigin><style type="text/css">
:root {
--accent-color: hsl(254.11766 44% 55%);
--accent-h: 254.11766;
--accent-s: 44%;
--accent-l: 55%;
}[data-theme="dark"] {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
}</style>
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/style.css?h=fd31cab16611d9654aa0" />
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/phosphor-bold.css?h=64fb8156a3a3f0de62c5" />
<script type="text/javascript" defer src="https://rootsource.cc/closable.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search_index.en.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/elasticlunr.min.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search.js"></script>
<meta property="og:site_name" content="RootSourceCC" />
<meta property="og:title" content="Set up costmiku ffsync on Firefox - RootSourceCC" />
<meta property="og:url" content="https://rootsource.cc/Articles/set-up-costmiku-ffsync/" />
<meta property="og:description" content="Shortest article demonstrating how to configure Firefox to synchronise to costmiku ffsync" />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Set up costmiku ffsync on Firefox - RootSourceCC" />
<meta name="twitter:url" content="https://rootsource.cc/Articles/set-up-costmiku-ffsync/" />
<meta name="twitter:description" content="Shortest article demonstrating how to configure Firefox to synchronise to costmiku ffsync" />
</head>
<body >
<a id="skip-to-content" href="#main-content" tabindex="0">Skip to Main Content</a>
<div id="site-navbar" class="sidebar">
<a id="navbar-header" class="has-icon" href="#top"><img class="transparent no-hover" src="https:&#x2F;&#x2F;rootsource.cc&#x2F;SiteIcon.png" /><div>
<span>Set up costmiku ffsync on Firefox</span>
<span>Back to Top</span>
</div>
</a>
<nav class="overshoot">
<ul><li>
<a
href="https:&#x2F;&#x2F;rootsource.cc&#x2F;">
<i class="ph-bold ph-house"></i>RootSourceCC</a>
</li>
<li>
<a href="https://rootsource.cc/Articles" class="
">
<i class="ph-bold ph-newspaper"></i>Articles</a>
</li>
<li>
<a href="https://rootsource.cc/hwinfo" class="
">
<i class="ph-bold ph-circuitry"></i>Hardware information</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;git.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-git-merge"></i>Alpsource</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;haj.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-fediverse-logo"></i>Hajiku&#x2F;Costkey</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;bin.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-lock-laminated"></i>Estellabin</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;status.rootsource.cc&#x2F;status&#x2F;status" rel="" class="external">
<i class="ph-bold ph-siren"></i>Status</a>
</li></ul>
</nav>
<div id="navbar-buttons">
<input class="visually-hidden" id="toggle-navbar" type="checkbox" name="toggle-navbar" autocomplete="off" />
<label for="toggle-navbar"><i class="ph-bold ph-sidebar"></i>Toggle Sidebar</label><button id="search">
<i class="ph-bold ph-magnifying-glass"></i>Search</button></div>
</div>
<main id="main-content" class="has-navbar"><div class="container">
<article>
<h1 id="heading">Set up costmiku ffsync on Firefox</h1><div class="article-details"><div class="item">
<i class="ph-bold ph-calendar"></i>
<time datetime="2025-03-01T00:00:00+00:00" pubdate>March 01, 2025</time>
</div><div class="item">
<i class="ph-bold ph-clock-countdown"></i>
<span>2 minutes</span>
</div>
</div>
<p>This has not been written by the RootsourceCC team, but still describes it accurately.</p>
<p>Create a Mozilla account</p>
<p>Go to <a href="https://accounts.firefox.com">https://accounts.firefox.com</a> and follow the "Sign up" steps to create an account.</p>
<p><strong>Configure Firefox Desktop</strong></p>
<p>Please open <code>about:config</code> in your Firefox and point <code>identity.sync.tokenserver.uri</code> to <code>https://ffsync.costmiku.space/1.0/sync/1.5</code>.</p>
<p><strong>Configure Firefox based browsers on Android</strong></p>
<p>These steps have to be followed in a strict order. Failing to do it would probably lead to issues. This should also work in Firefox based browsers like Mull (tested) and others.</p>
<ul>
<li>Open Firefox Browser -&gt; Settings -&gt; About Firefox -&gt; tap 5 times in Firefox logo.</li>
<li>Go back to Settings -&gt; Account -&gt; you should see a new option <code>Sync Debug</code>, tap on it.</li>
<li>Select <code>Custom Sync server</code> and write there your endpoint. It should be https://ffsync.costmiku.space/1.0/sync/1.5.</li>
<li>Exit Firefox completely, reopen and then follow the steps of "Connect a device" to your Firefox account.</li>
<li>After a successful auth process the sync should start working.</li>
</ul>
<p>Configure Firefox on iOS</p>
<p>Not tested.</p>
<ul>
<li>Open Firefox Browser -&gt; Settings -&gt; About Firefox -&gt; tap on the field with Firefox and version number.</li>
<li>Go back to Settings -&gt; Account -&gt; you should see a new option <code>Advanced Sync Settings</code>, tap on it.</li>
<li>Toggle Use Custom Sync Token Server and write there your endpoint. It should be <code>https://ffsync.costmiku.space/</code>.</li>
<li>You might also need to toggle the switch for custom FxA login server and set it to <code>https://accounts.firefox.com</code></li>
<li>Exit Firefox completely, reopen and then follow the steps of "Connect a device" to your Firefox account.</li>
<li>After a successful auth process the sync should start working.</li>
</ul>
</article><hr />
<nav id="post-nav"><a class="post-nav-item post-nav-prev" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;tylkolinux-installation&#x2F;">
<div class="nav-arrow">Previous</div>
<span class="post-title">TylkoLinux install guide (Delirium).</span>
</a><a class="post-nav-item post-nav-next" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;duckquill2ametrine&#x2F;">
<div class="nav-arrow">Next</div>
<span class="post-title">Transition from Duckquill to Ametrine</span>
</a></nav>
</div>
</main>
<footer id="site-footer">
<div class="container">
<div><p id="site-footer-copyright">raiz1.noho.st owns this website
</p>
<p>Powered by <a class="link external" href="https://www.getzola.org" rel="">Zola</a> and <a class="link external" href="https://ametrine.daudix.one" rel="">Ametrine</a>
</p><p id="site-footer-last-updated">March 06, 2025, 15:26 (CET)</p>
</div></div>
</footer>
<div id="search-modal">
<div id="search-modal-content">
<label for="search-input" class="visually-hidden">Search</label>
<div>
<input id="search-input" placeholder="Search for…" autocomplete="off" type="search">
<i class="ph-bold ph-keyboard" title="Press “&#x2F;” to Open Search Bar"></i>
</div>
<div id="search-results" class="overshoot"></div>
</div>
</div>
</body>
</html>

View file

@ -1,557 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" >
<head>
<meta charset="UTF-8" />
<meta name="description" content="Well, get on this site and find out." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="base" content="https://rootsource.cc" />
<meta name="theme-color" content="purple" />
<title>TylkoLinux install guide (Delirium). - RootSourceCC</title>
<link rel="canonical" href="https://rootsource.cc/Articles/tylkolinux-installation/" />
<meta content="Zola" name="generator">
<link rel="icon" type="image/png" href="https://rootsource.cc/favicon.png?h=49b0131ec00d0056a576" />
<link rel="preload" href="https://rootsource.cc/fonts/geist.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/geist-mono.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/phosphor-bold.woff2" as="font" type="font/woff2" crossorigin><style type="text/css">
:root {
--accent-color: hsl(254.11766 44% 55%);
--accent-h: 254.11766;
--accent-s: 44%;
--accent-l: 55%;
}[data-theme="dark"] {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
}</style>
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/style.css?h=fd31cab16611d9654aa0" />
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/phosphor-bold.css?h=64fb8156a3a3f0de62c5" />
<script type="text/javascript" defer src="https://rootsource.cc/closable.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search_index.en.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/elasticlunr.min.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search.js"></script>
<meta property="og:site_name" content="RootSourceCC" />
<meta property="og:title" content="TylkoLinux install guide (Delirium). - RootSourceCC" />
<meta property="og:url" content="https://rootsource.cc/Articles/tylkolinux-installation/" />
<meta property="og:description" content="This article will go over the installation guide for the distro" />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="TylkoLinux install guide (Delirium). - RootSourceCC" />
<meta name="twitter:url" content="https://rootsource.cc/Articles/tylkolinux-installation/" />
<meta name="twitter:description" content="This article will go over the installation guide for the distro" />
</head>
<body >
<a id="skip-to-content" href="#main-content" tabindex="0">Skip to Main Content</a>
<div id="site-navbar" class="sidebar">
<a id="navbar-header" class="has-icon" href="#top"><img class="transparent no-hover" src="https:&#x2F;&#x2F;rootsource.cc&#x2F;SiteIcon.png" /><div>
<span>TylkoLinux install guide (Delirium).</span>
<span>Back to Top</span>
</div>
</a>
<nav class="overshoot">
<ul><li>
<a
href="https:&#x2F;&#x2F;rootsource.cc&#x2F;">
<i class="ph-bold ph-house"></i>RootSourceCC</a>
</li>
<li>
<a href="https://rootsource.cc/Articles" class="
">
<i class="ph-bold ph-newspaper"></i>Articles</a>
</li>
<li>
<a href="https://rootsource.cc/hwinfo" class="
">
<i class="ph-bold ph-circuitry"></i>Hardware information</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;git.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-git-merge"></i>Alpsource</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;haj.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-fediverse-logo"></i>Hajiku&#x2F;Costkey</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;bin.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-lock-laminated"></i>Estellabin</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;status.rootsource.cc&#x2F;status&#x2F;status" rel="" class="external">
<i class="ph-bold ph-siren"></i>Status</a>
</li></ul>
</nav>
<div id="navbar-buttons">
<input class="visually-hidden" id="toggle-navbar" type="checkbox" name="toggle-navbar" autocomplete="off" />
<label for="toggle-navbar"><i class="ph-bold ph-sidebar"></i>Toggle Sidebar</label><button id="search">
<i class="ph-bold ph-magnifying-glass"></i>Search</button></div>
</div>
<main id="main-content" class="has-navbar"><div class="container">
<article>
<h1 id="heading">TylkoLinux install guide (Delirium).</h1><div class="article-details"><div class="item">
<i class="ph-bold ph-calendar"></i>
<time datetime="2025-01-30T00:00:00+00:00" pubdate>January 30, 2025</time>
</div><div class="item">
<i class="ph-bold ph-clock-countdown"></i>
<span>11 minutes</span>
</div>
</div>
<aside id="toc">
<strong class="title">Table of Contents</strong>
<div class="overshoot">
<ul><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#update-as-of-now-don-t-proceed-with-the-guide-yet-the-script-is-still-in-its-testing-phase-and-i-m-halfway-done-successfully-testing-it-p">Update as of now: DON&#x27;T PROCEED WITH THE GUIDE YET. The script is still in its testing phase, and I&#x27;m halfway done successfully testing it :p</a><ul><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s1-cloning-the-repository">S1: Cloning the repository</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s2-run-the-compatibility-checker">S2: Run the compatibility checker</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s3-partitioning-the-target-device">S3: Partitioning the target device</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s4-setting-the-lfs-variable">S4: Setting the $LFS variable</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s5-mounting-the-partitions">S5: Mounting the partitions</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s6-start-the-core-installation-tool">S6: Start the core installation tool</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s7-enter-lfs-user">S7: Enter lfs user</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s8-actually-building-the-system-itself">S8: Actually building the system itself</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s9-setting-up-the-system">S9: Setting up the system</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s10-making-it-boot">S10: Making it boot</a>
</li><li>
<a href="https://rootsource.cc/Articles/tylkolinux-installation/#s11-the-end-tm">S11: The End:tm:</a>
</li></ul></li></ul>
</div>
</aside><p>Requires the branch for <code>TylkoLinux 25.2 Delirium x86_64</code></p>
<p>As you may have read in the description, this article serves as a guide to install (build) TylkoLinux on your machine.
<blockquote class="important">
<p class="alert-title">
<i class="ph-bold ph-warning-diamond"></i>Important</p>
<p>Prerequisites:</p>
<ul>
<li>x86_64 machine</li>
<li>At least 32GB of storage</li>
<li>CPU with at least four cores</li>
<li>8GB RAM</li>
<li>A linux system running on the host system</li>
<li>INTERNET ACCESS!!! (also required for other install scripts in EIC)</li>
</ul>
</blockquote>
</p>
<h1 id="update-as-of-now-don-t-proceed-with-the-guide-yet-the-script-is-still-in-its-testing-phase-and-i-m-halfway-done-successfully-testing-it-p">Update as of now: DON'T PROCEED WITH THE GUIDE YET. The script is still in its testing phase, and I'm halfway done successfully testing it :p</h1>
<h2 id="s1-cloning-the-repository">S1: Cloning the repository</h2>
<p>The repository is available on GitHub. You can clone into it by running the following (if you have Git installed):</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> clone https://github.com/kevadesu/TylkoLinux
</span></code></pre>
<p>Proceed to change directory into it.</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#96b5b4;">cd</span><span> ./TylkoLinux/
</span></code></pre>
<p>And switch branch into the version.</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">git</span><span> checkout delirium
</span></code></pre>
<h2 id="s2-run-the-compatibility-checker">S2: Run the compatibility checker</h2>
<p>Run the compatibility check by running the script that is inside of the repository:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">chmod</span><span> +x ./version-check.sh &amp;&amp; </span><span style="color:#bf616a;">./version-check.sh
</span></code></pre>
<p>Make sure everything is successful. If not, update your packages.</p>
<h2 id="s3-partitioning-the-target-device">S3: Partitioning the target device</h2>
<p>Now that we have the installer ready, let's not run it just yet!
First, we need to <strong>partition the drive we want to install it to.</strong>
Now, of course, there are a lot of guides on how to do that online and depending on what setup you might want to achieve.</p>
<p>What IS clear though, is that you need a boot partition and a root partition, those are the bare minimum.</p>
<p>Obviously, I won't be able to write an ENTIRE guide on how to partiton your drive. If you don't know how to do that in the first place, then you shouldn't use TylkoLinux.</p>
<h2 id="s4-setting-the-lfs-variable">S4: Setting the $LFS variable</h2>
<p>Set the $LFS variable to point to /mnt/lfs. Of course, if you desire, you may also make it point to a different destination.</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#b48ead;">export </span><span style="color:#bf616a;">LFS</span><span>=</span><span style="color:#a3be8c;">/mnt/lfs
</span></code></pre>
<blockquote class="caution">
<p class="alert-title">
<i class="ph-bold ph-warning-octagon"></i>Caution</p>
<p>Make sure that the $LFS variable always points to the correct destination.
It is recommended to always mount the target root partition under /mnt/lfs and set your variable to that.
Failure to do so may lead you to absolutely fuck up your system.</p>
</blockquote>
<blockquote class="tip">
<p class="alert-title">
<i class="ph-bold ph-lightbulb"></i>Tip</p>
<p>From the LFS handbook:
One way to ensure that the LFS variable is always set is to edit the .bash_profile file in both your personal home directory and in /root/.bash_profile and enter the export command above. In addition, the shell specified in the /etc/passwd file for all users that need the LFS variable must be bash to ensure that the /root/.bash_profile file is incorporated as a part of the login process.</p>
<p>Another consideration is the method that is used to log into the host system. If logging in through a graphical display manager, the user's .bash_profile is not normally used when a virtual terminal is started. In this case, add the export command to the .bashrc file for the user and root. In addition, some distributions use an "if" test, and do not run the remaining .bashrc instructions for a non-interactive bash invocation. Be sure to place the export command ahead of the test for non-interactive use.</p>
</blockquote>
<h2 id="s5-mounting-the-partitions">S5: Mounting the partitions</h2>
<p>Create the mount point and mount the filesystem using the following commands:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">mkdir -pv </span><span>$</span><span style="color:#bf616a;">LFS
</span><span style="color:#bf616a;">mount -v -t</span><span> ext4 /dev/&lt;foo&gt; $</span><span style="color:#bf616a;">LFS
</span><span style="color:#65737e;"># Replace &lt;foo&gt; with the partition name.
</span></code></pre>
<p>If using multiple partitions for TylkoLinux (for example, one for the root and one for the home partition), mount them as followed:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">mkdir -pv </span><span>$</span><span style="color:#bf616a;">LFS
</span><span style="color:#bf616a;">mount -v -t</span><span> ext4 /dev/&lt;xxx&gt; $</span><span style="color:#bf616a;">LFS
</span><span style="color:#bf616a;">mkdir -v </span><span>$</span><span style="color:#bf616a;">LFS</span><span>/home
</span><span style="color:#bf616a;">mount -v -t</span><span> ext4 /dev/&lt;yyy&gt; $</span><span style="color:#bf616a;">LFS</span><span>/home
</span><span style="color:#65737e;"># Replace &lt;foo&gt; and &lt;bar&gt; with the appropriate partition names.
</span></code></pre>
<blockquote class="caution">
<p class="alert-title">
<i class="ph-bold ph-warning-octagon"></i>Caution</p>
<p>The instructions above assume that you are not rebooting your computer during the build. (imagine)
To automatically remount the partition on boot, modify /etc/fstab by adding this line:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">/dev/</span><span>&lt;foo&gt; /mnt/lfs ext4 defaults 1 1
</span></code></pre>
<p>If you use additional (optional) partitions, add them as well.</p>
</blockquote>
<p>If also using swap, mount with the swapon command:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">/sbin/swapon -v</span><span> /dev/&lt;owo&gt;
</span><span style="color:#65737e;"># Replace &lt;owo&gt; with the name of the swap partition.
</span></code></pre>
<h3 id="s5-1-move-bash-bashrc-out-of-the-way">S5.1: Move bash.bashrc out of the way</h3>
<p>Several commercial distributions add an undocumented instantiation of /etc/bash.bashrc to the initialization of bash. This file has the potential to modify the lfs user's environment in ways that can affect the building of critical TylkoLinux (LFS) packages. To make sure the lfs user's environment is clean, check for the presence of /etc/bash.bashrc and, if present, move it out of the way. As the root user, run:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#96b5b4;">[ </span><span>! </span><span style="color:#bf616a;">-e</span><span> /etc/bash.bashrc </span><span style="color:#96b5b4;">] </span><span>|| </span><span style="color:#bf616a;">mv -v</span><span> /etc/bash.bashrc /etc/bash.bashrc.NOUSE
</span></code></pre>
<h2 id="s6-start-the-core-installation-tool">S6: Start the core installation tool</h2>
<p>To start the installer, make sure you're in the same directory as the git repo we cloned, running as the <code>root</code> user, then type the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">./Einrichter-CLI.sh
</span></code></pre>
<p>If this command fails, make sure it has the permissions to be executed by running the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">chmod</span><span> +x ./*.sh
</span></code></pre>
<h3 id="s6-1-download-packages">S6.1: Download packages</h3>
<p>When in the script, you should see the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">[i]</span><span> The colour variables have been set.
</span><span style="color:#bf616a;">Einrichter</span><span> - TylkoLinux Installer Shell $</span><span style="color:#bf616a;">EINRICHTER_VER
</span><span style="color:#bf616a;">The</span><span> script is located at $</span><span style="color:#bf616a;">SCRIPT_DIR
</span><span style="color:#bf616a;">Run</span><span> einrichter.help for commands
</span><span style="color:#bf616a;">einrichter</span><span>&gt;
</span></code></pre>
<p>To download packages and patches to the directory, type in the following function:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter</span><span>&gt; einrichter.installer.pkgs
</span></code></pre>
<p>This action will proceed to download the packages and patches to $LFS/sources, and also the checksums.
Watch out, here's the next step:</p>
<p>Extract the packages and rename them to the appropriate directory names</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter</span><span>&gt; einrichter.xr
</span></code></pre>
<p>IMPORTANT!! Run this too, to prepare for the installation of Linux, and more.</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter</span><span>&gt; einrichter.add.fs
</span></code></pre>
<h3 id="s6-2-creating-a-limited-directory-layout">S6.2: Creating a limited directory layout</h3>
<p>Run the following command:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter</span><span>&gt; einrichter.installer.DirLayout
</span></code></pre>
<h2 id="s7-enter-lfs-user">S7: Enter lfs user</h2>
<p>Enter the LFS environment to build the cross toolchain and temporary tools by entering the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter</span><span>&gt; einrichter.installer.SafeUser
</span></code></pre>
<h3 id="s7-1-going-through-pending-steps">S7.1: Going through pending steps</h3>
<p>You are about to build a cross toolchain and temporary tools. You're going to see the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">Einrichter</span><span> is designed to work as an install script where you can resume where you left off. Do NOT skip anything if you have not ran the step yet.
</span><span style="color:#bf616a;">Pending</span><span> step: Setting up environment. Run, skip or quit?
</span></code></pre>
<p>Either type R to run, S to skip or Q to quit.
Do the same for the other remaining quesitons:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">Pending</span><span> step: Setting up toolchain. Run, skip or quit? R
</span><span style="color:#bf616a;">Pending</span><span> step: Installing cross toolchain and packages. Run, skip or quit? R
</span></code></pre>
<p>And eventually...</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">Done!
</span><span style="color:#bf616a;">[i]</span><span> Completed!
</span><span style="color:#bf616a;">[i]</span><span> Finished section installer.SafeUser
</span><span style="color:#bf616a;">einrichter</span><span>&gt;
</span></code></pre>
<p>Before you know it, you're done!
Now HERE begins the real work (insert lqtroll emoji)</p>
<h2 id="s8-actually-building-the-system-itself">S8: Actually building the system itself</h2>
<blockquote class="tip">
<p class="alert-title">
<i class="ph-bold ph-lightbulb"></i>Tip</p>
<p>Before proceeding with the build,
One way to ensure that the LFS variable is always set is to edit the .bash_profile file in both your personal home directory and in /root/.bash_profile and enter the export command above. In addition, the shell specified in the /etc/passwd file for all users that need the LFS variable must be bash to ensure that the /root/.bash_profile file is incorporated as a part of the login process.</p>
<p>Another consideration is the method that is used to log into the host system. If logging in through a graphical display manager, the user's .bash_profile is not normally used when a virtual terminal is started. In this case, add the export command to the .bashrc file for the user and root. In addition, some distributions use an "if" test, and do not run the remaining .bashrc instructions for a non-interactive bash invocation. Be sure to place the export command ahead of the test for non-interactive use.</p>
</blockquote>
<p>Now that you finished that section, enter the chroot environment like this:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter</span><span>&gt; einrichter.installer.chroot
</span></code></pre>
<p>This command changes ownership of the commands under $LFS from the user <code>lfs</code> to <code>root</code>
It also mounts the virtual kernel file systems.
Then, it chroots you into the bash shell. Continue the installer by running the following command inside of the chroot:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">$</span><span> /Einrichter-in-chroot.sh
</span></code></pre>
<p>This boots you into the eic shell.
Run the following commands:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.dirs.create </span><span style="color:#65737e;"># Creates necessary directories
</span><span>einrichter/eic&gt; eic.essentials.create </span><span style="color:#65737e;"># Creates necessary tools
</span><span>einrichter/eic&gt; eic.essentials.install </span><span style="color:#65737e;"># Installs the tools
</span><span>einrichter/eic&gt; eic.essentials.verify </span><span style="color:#65737e;"># Verifies that the packages are installed
</span><span>einrichter/eic&gt; eic.clean </span><span style="color:#65737e;"># Clean up the environment
</span></code></pre>
<p>If after running eic.essentials.verify, the packages have not been installed, try to troubleshoot the actual package that failed to install and try again.</p>
<p>Or...re-extract package and reinstall</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.bugfix.RrX
</span><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.essentials.install
</span></code></pre>
<p>BEFORE BUILDING THE ACTUAL SYSTEM!!!!
Run this command. It applies the RrX bugfix that removes and re-extracts affected packages.</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.bugfix.RrX
</span></code></pre>
<p>Build the system by running the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.system.build
</span></code></pre>
<p>GCC, due to its nature of taking so long to build, gets its own function:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.system.build.gcc
</span></code></pre>
<p>Continue building as if nothing happened</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.system.build.continue
</span></code></pre>
<h3 id="s8-1-strip-system-optional">S8.1: Strip system (optional)</h3>
<p>Done after so long? If you don't plan on doing any debugging on the system software/aren't that much of a programmer, you can remove debugging symbols and unnecessary symbol table entries from binaries and libraries.
This frees up about 2GB(?) on the system.
To do so, run the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.strip
</span></code></pre>
<h3 id="s8-2-cleaning-up">S8.2: Cleaning up</h3>
<p>Finally, after all of that, clean up extra leftovers and the tester account by running this command:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.system.build.clean
</span></code></pre>
<h2 id="s9-setting-up-the-system">S9: Setting up the system</h2>
<p>You are now in the stage where you set up your system and actually make an attempt at making your system bootable!</p>
<h3 id="s9-1-networking">S9.1: Networking</h3>
<p>(This section only applies if a network card is to be configured.)</p>
<h4 id="s9-1-1-network-device-naming">S9.1.1: Network Device Naming</h4>
<p><blockquote class="tip">
<p class="alert-title">
<i class="ph-bold ph-lightbulb"></i>Tip</p>
<p>Modified from the LFS handbook: The interface names depend on the implementation and configuration of the udev daemon running on the system. The udev daemon for TylkoLinux (well, LFS) (systemd-udevd) will not run unless the TylkoLinux/LFS system is booted. So it's unreliable to determine the interface names being used in the TylkoLinux system by running those commands on the host distro, even though you are in the chroot environment.</p>
</blockquote>
Udev normally assigns network card interface names based on physical system characteristics such as enp2s1. If you are not sure what your interface name is, you can always run <code>ip link</code> after you have booted your system.
For most systems, there is only one network interface for each type of connection. For example, the classic interface name for a wired connection is eth0. A wireless connection will usually have the name wifi0 or wlan0.</p>
<p>If you'd like to use classic/customised network names, run the following function and enter the demanded information:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.network.devicenaming
</span><span style="color:#bf616a;">[i]</span><span> Enter MAC address of desired device: SN:UG:N0:0K:FR
</span><span style="color:#bf616a;">[i]</span><span> Enter the desired name of your interface: nasaethernet1
</span><span style="color:#65737e;"># Those are examples, not things you should actually enter!! Replace those with the actual info
</span></code></pre>
<h4 id="s9-1-2-static-ip-configuration">S9.1.2: Static IP configuration</h4>
<p>This makes a basic config file for a Static IP setup</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.network.staticip
</span><span style="color:#bf616a;">[i]</span><span> Enter the name of the configured interface: nasaethernet1 </span><span style="color:#65737e;"># example
</span><span style="color:#bf616a;">[?]</span><span> Add DNS? If no, type N. If yes, type DNS address.
</span><span>&gt; Y </span><span style="color:#65737e;"># example
</span><span style="color:#b48ead;">[</span><span>?</span><span style="color:#b48ead;">] </span><span style="color:#bf616a;">Add</span><span> domain? If no, type N. If yes, type domain name.
</span><span>&gt; N </span><span style="color:#65737e;"># example
</span><span style="color:#b48ead;">[</span><span>i</span><span style="color:#b48ead;">] </span><span style="color:#bf616a;">Skipped</span><span> domain addition. </span><span style="color:#65737e;"># example
</span></code></pre>
<h4 id="s9-1-3-dhcp-configuration">S9.1.3: DHCP configuration</h4>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.network.dhcp
</span><span style="color:#bf616a;">[i]</span><span> Enter the name of the configured interface: itsthesamethingagain0 </span><span style="color:#65737e;"># example
</span></code></pre>
<h4 id="s9-1-4-etc-resolv-conf">S9.1.4: /etc/resolv.conf</h4>
<blockquote class="tip">
<p class="alert-title">
<i class="ph-bold ph-lightbulb"></i>Tip</p>
<p>From the LFS handbook: If using methods incompatible with systemd-resolved to configure your network interfaces (ex: ppp, etc.), or if using any type of local resolver (ex: bind, dnsmasq, unbound, etc.), or any other software that generates an /etc/resolv.conf (ex: a resolvconf program other than the one provided by systemd), the systemd-resolved service should not be used.</p>
<p>To switch settings about whether this should be allowed or not, run the command below ↓</p>
</blockquote>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.network.systemd.resolve &lt;on/off&gt;
</span><span style="color:#bf616a;">[i]</span><span> Disabling/Enabling systemd-resolved...
</span></code></pre>
<h5 id="s9-1-4-1-static-resolv-conf">S9.1.4.1: Static resolv.conf</h5>
<p>Want to create a static file? Here:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.network.staticresolver
</span><span style="color:#bf616a;">[?]</span><span> Add domain? If no, type N. If yes, type domain name.
</span><span>&gt; N </span><span style="color:#65737e;"># example
</span><span style="color:#b48ead;">[</span><span>?</span><span style="color:#b48ead;">] </span><span style="color:#bf616a;">Add</span><span> primary nameserver? If no, type N. If yes, type nameserver name.
</span><span>&gt; N
</span><span style="color:#bf616a;">[i]</span><span> Skipped primary nameserver addition.
</span><span style="color:#bf616a;">[?]</span><span> Add secondary nameserver? If no, type N. If yes, type nameserver name.
</span><span>&gt; </span><span style="color:#d08770;">1</span><span style="color:#bf616a;">.2.3.4 </span><span style="color:#65737e;"># example
</span></code></pre>
<h4 id="s9-1-5-hostname">S9.1.5: Hostname</h4>
<p>To configure the hostname, enter the following command:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.network.hostname &lt;hostname&gt;
</span><span style="color:#65737e;"># Replace &lt;hostname&gt; with the desired hostname
</span></code></pre>
<h4 id="s9-1-6-customising-the-etc-hosts-file">S9.1.6: Customising the /etc/hosts file</h4>
<p><del>Remind me to work on this section.</del> Call me lazy (please don't), but to get over this guide a tiny tiny bit faster, I recommend you to google (or otherwise look up) "how to set up etc hosts". Usually it's managed by systemd I think? (obv unless you disabled it)</p>
<h3 id="s9-2-system-time">S9.2: System time</h3>
<p>You can tell the system whether your hardware clock is set to local time or UTC.</p>
<p>Either run:</p>
<p>// When in chroot,</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.time.createAdj
</span></code></pre>
<p>// When in a booted system,</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.time.clarifyUTC
</span></code></pre>
<p>Either can be set back to nothing by either deleting /etc/adjtime</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; rm /etc/adjtime
</span></code></pre>
<p>or by using timedatectl</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">timedatectl</span><span> set-local-rtc 0
</span></code></pre>
<p>To interactively change the system time (when in a booted system ofc)
do:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.time.set
</span></code></pre>
<p>then respond to the questions.</p>
<p>To set the timezone on a running system, run the following:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.time.tz &lt;TZ&gt;
</span><span style="color:#65737e;"># replace &lt;TZ&gt; with the timezone
</span></code></pre>
<p>To get the list of timezones in the first place, do:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">timedatectl</span><span> list-timezones
</span></code></pre>
<p>In systemd 216 and up, the network time synchronisation service is enabled by default. <strong>If you want, disable/enable it like this:</strong></p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#65737e;"># In shell and EIC
</span><span style="color:#bf616a;">systemctl</span><span> disable systemd-timesyncd
</span><span style="color:#bf616a;">systemctl</span><span> enable systemd-timesyncd
</span><span style="color:#65737e;"># In EIC exclusively
</span><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.time.nts on
</span><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.time.nts off
</span></code></pre>
<h3 id="s9-3-configuring-the-linux-console">S9.3: Configuring the Linux console</h3>
<p>Write defaults:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.console.preset
</span></code></pre>
<p>Set keymap:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.console.keymap &lt;keymap&gt;
</span><span style="color:#65737e;"># Replace &lt;keymap&gt; with keymap code, e.g. de-latin1
</span></code></pre>
<h3 id="s9-4-localisation">S9.4: Localisation</h3>
<p>Run this and answer questions:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.locale.set
</span></code></pre>
<h3 id="s9-5-creating-files-under-etc">S9.5: Creating files under /etc/</h3>
<p>Run these to create the /etc/inputrc and /etc/shells files</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.create.inputrc
</span><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.create.shells
</span></code></pre>
<h3 id="s9-6-more-config">S9.6: More config...</h3>
<p>Disable screen clearing:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.systemd.disableScreenClearing &lt;yes/no&gt;
</span></code></pre>
<p>Limit core dump size to something (in the format of 5M, 5G etc):</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.config.systemd.limitCoreDumpSize &lt;(</span><span style="color:#bf616a;">Size</span><span>)(G/M/K)&gt;
</span></code></pre>
<p>To remove the limit:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">rm</span><span> /etc/systemd/coredump.conf.d/maxuse.conf
</span></code></pre>
<h2 id="s10-making-it-boot">S10: Making it boot</h2>
<h3 id="s10-1-making-an-etc-fstab">S10.1: Making an /etc/fstab</h3>
<p>Make a filesystem table like this:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">cat </span><span>&gt; /etc/fstab &lt;&lt; &quot;</span><span style="color:#b48ead;">EOF</span><span>&quot;
</span><span style="color:#a3be8c;"># Begin /etc/fstab
</span><span style="color:#a3be8c;">
</span><span style="color:#a3be8c;"># file system mount-point type options dump fsck
</span><span style="color:#a3be8c;"># order
</span><span style="color:#a3be8c;">
</span><span style="color:#a3be8c;">/dev/&lt;foo&gt; / &lt;owo&gt; defaults 1 1
</span><span style="color:#a3be8c;">/dev/&lt;bar&gt; swap swap pri=1 0 0
</span><span style="color:#a3be8c;">
</span><span style="color:#a3be8c;"># End /etc/fstab
</span><span style="color:#b48ead;">EOF
</span></code></pre>
<p>Replace <foo> and <bar> with the appropriate values, don't add the swap line if you didn't make a swap partition.</p>
<p>Replace <owo> with the filesystem type</p>
<p>For any additional configuration, check this page: https://www.linuxfromscratch.org/lfs/view/stable-systemd/chapter10/fstab.html</p>
<h3 id="s10-2-booting-linux">S10.2: BOOTING LINUX!!!!</h3>
<p>Don't get excited too yet, we need to verify something.</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#96b5b4;">cd</span><span> /sources/linux/
</span><span style="color:#bf616a;">ls -a </span><span>| </span><span style="color:#bf616a;">grep</span><span> .config
</span></code></pre>
<p>If you see the .config file, we can continue. If not, don't run this step, exit out of the Einrichter-in-chroot.sh script to go back to the Einrichter-CLI.sh script. After that, run:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter</span><span>&gt; einrichter.add.linuxConfig
</span></code></pre>
<p>Alright, we can continue. RUN THE FOLLOWING:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.linux.install
</span></code></pre>
<p>Later it will ask you this:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">[i]</span><span> Mount boot partition? &lt;Y/N&gt;:
</span></code></pre>
<p>Say yes if you want the kernel to be in the boot partition instead of the root one. Otherwise, <strong>no.</strong></p>
<h3 id="s10-3-bootloader-configuration">S10.3: Bootloader configuration</h3>
<p>Using UEFI bootloader? Check this:
https://www.linuxfromscratch.org/blfs/view/stable-systemd/postlfs/grub-setup.html#uefi-kernel
<a href="https://www.linuxfromscratch.org/lfs/view/stable-systemd/chapter10/grub.html">This page shows instructions on installing GRUB.</a>
Not needed of course, if you want to tweak your current GRUB to also detect other OSes, add this to your /etc/default/grub (on the host machine)
<code>GRUB_DISABLE_OS_PROBER=false</code>
Update the GRUB config with the respective command.</p>
<h3 id="s10-4-package-management">S10.4: Package management</h3>
<p>Need a package manager? Install RPM:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.rpm.install
</span></code></pre>
<p>To install tdnf, vmware's implementation of DNF, do:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.tdnf.install
</span></code></pre>
<p>If you want to add more packages to your system, including NetworkManager, run:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.plus
</span></code></pre>
<h2 id="s11-the-end-tm">S11: The End:tm:</h2>
<p>Well, you made it! Congrats on installing the basics of TylkoLinux... If you want, you can also mark your installation as a TylkoLinux one by running this:</p>
<pre data-lang="bash" style="background-color:#2b303b;color:#c0c5ce;" class="language-bash "><code class="language-bash" data-lang="bash"><span style="color:#bf616a;">einrichter/eic</span><span>&gt; eic.signoff
</span></code></pre>
<p>Hope you had as much fun following the guide as I did writing it!</p>
</article><hr />
<nav id="post-nav"><a class="post-nav-item post-nav-next" href="https:&#x2F;&#x2F;rootsource.cc&#x2F;Articles&#x2F;set-up-costmiku-ffsync&#x2F;">
<div class="nav-arrow">Next</div>
<span class="post-title">Set up costmiku ffsync on Firefox</span>
</a></nav>
</div>
</main>
<footer id="site-footer">
<div class="container">
<div><p id="site-footer-copyright">raiz1.noho.st owns this website
</p>
<p>Powered by <a class="link external" href="https://www.getzola.org" rel="">Zola</a> and <a class="link external" href="https://ametrine.daudix.one" rel="">Ametrine</a>
</p><p id="site-footer-last-updated">March 06, 2025, 15:26 (CET)</p>
</div></div>
</footer>
<div id="search-modal">
<div id="search-modal-content">
<label for="search-input" class="visually-hidden">Search</label>
<div>
<input id="search-input" placeholder="Search for…" autocomplete="off" type="search">
<i class="ph-bold ph-keyboard" title="Press “&#x2F;” to Open Search Bar"></i>
</div>
<div id="search-results" class="overshoot"></div>
</div>
</div>
</body>
</html>

View file

@ -1,18 +0,0 @@
+++
template = "index.html"
title = "Hello World!"
+++
Hi!
There is your great future static site build with Zola ^w^
Check [the docs](https://www.getzola.org/documentation/getting-started/overview/) to get started!
## Tips
- Your Zola is installed in `/var/www/zola`
- Your content should be in `/var/www/zola/content`
- Your config file is `/var/www/zola/config.toml` (see [config docs](https://www.getzola.org/documentation/getting-started/configuration/))
- [Choose a theme](https://www.getzola.org/themes/), install it in `/var/www/zola/themes`, then configure it in your `config.toml` file
- This website will be automatically updated each time you modify something inside the `content`, `static`, `templates` or `themes` folders or the `config.toml` file!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 KiB

View file

@ -1,9 +0,0 @@
const audioButtons = document.querySelectorAll(".audio");
audioButtons.forEach(button => {
button.addEventListener("click", event => playAudio(button.dataset.audio));
});
function playAudio(url) {
new Audio(url).play();
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

View file

@ -1,41 +0,0 @@
const closable = document.querySelectorAll("details.closable");
closable.forEach((detail) => {
detail.addEventListener("toggle", () => {
if (detail.open) setTargetDetail(detail);
});
});
function setTargetDetail(targetDetail) {
closable.forEach((detail) => {
if (detail !== targetDetail) {
detail.open = false;
}
});
}
document.addEventListener("click", function (event) {
const isClickInsideDetail = [...closable].some((detail) =>
detail.contains(event.target)
);
if (!isClickInsideDetail) {
closable.forEach((detail) => {
detail.open = false;
});
}
});
const toggleNavbar = document.getElementById("toggle-navbar");
const siteNavbar = document.getElementById("site-navbar");
const mainContent = document.getElementById("main-content");
toggleNavbar.addEventListener("change", () => {
if (toggleNavbar.checked) {
toggleSidebar.checked = false;
}
});
mainContent.addEventListener("click", () => {
if (toggleNavbar.checked) toggleNavbar.checked = false;
});

View file

@ -1,420 +0,0 @@
// Based on https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/
// Attachment, card, and spoiler code is from https://github.com/cassidyjames/cassidyjames.github.io/blob/99782788a7e3ba3cc52d6803010873abd1b02b9e/_includes/comments.html#L251-L296
let lazyAsyncImage = document.getElementById("lazy-async-image").textContent;
let relAttributes = document.getElementById("rel-attributes").textContent;
let dateLocale = document.getElementById("date-locale").textContent;
let host = document.getElementById("host").textContent;
let user = document.getElementById("user").textContent;
let id = document.getElementById("id").textContent;
let articleAuthorText = document.getElementById("article-author-text").textContent;
let loadingText = document.getElementById("loading-text").textContent;
let noCommentsText = document.getElementById("no-comments-text").textContent;
let reloadText = document.getElementById("reload-text").textContent;
let sensitiveText = document.getElementById("sensitive-text").textContent;
document.getElementById("load-comments").addEventListener("click", loadComments);
function escapeHtml(unsafe) {
return unsafe
.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/"/g, "&quot;")
.replace(/'/g, "&#x27;");
}
function emojify(input, emojis) {
let output = input;
emojis.forEach((emoji) => {
let picture = document.createElement("picture");
let source = document.createElement("source");
source.setAttribute("srcset", escapeHtml(emoji.url));
source.setAttribute("media", "(prefers-reduced-motion: no-preference)");
let img = document.createElement("img");
img.className = "emoji";
img.setAttribute("src", escapeHtml(emoji.static_url));
img.setAttribute("title", `:${emoji.shortcode}:`);
img.setAttribute("width", "24");
img.setAttribute("height", "24");
if (lazyAsyncImage == "true") {
img.setAttribute("decoding", "async");
img.setAttribute("loading", "lazy");
}
picture.appendChild(source);
picture.appendChild(img);
output = output.replace(`:${emoji.shortcode}:`, picture.outerHTML);
});
return output;
}
function loadComments() {
let commentsWrapper = document.getElementById("comments-wrapper");
commentsWrapper.innerHTML = "";
let loadCommentsButton = document.getElementById("load-comments");
loadCommentsButton.innerHTML = loadingText;
loadCommentsButton.disabled = true;
fetch(`https://${host}/api/v1/statuses/${id}/context`)
.then(function (response) {
return response.json();
})
.then(function (data) {
let descendants = data["descendants"];
if (
descendants &&
Array.isArray(descendants) &&
descendants.length > 0
) {
commentsWrapper.innerHTML = "";
descendants.forEach(function (status) {
console.log(descendants);
if (status.account.display_name.length > 0) {
status.account.display_name = escapeHtml(
status.account.display_name
);
status.account.display_name = emojify(
status.account.display_name,
status.account.emojis
);
} else {
status.account.display_name = status.account.username;
}
let instance = "";
if (status.account.acct.includes("@")) {
instance = status.account.acct.split("@")[1];
} else {
instance = host;
}
const isReply = status.in_reply_to_id !== id;
let op = false;
if (status.account.acct == user) {
op = true;
}
status.content = emojify(status.content, status.emojis);
let comment = document.createElement("article");
comment.id = `comment-${status.id}`;
comment.className = isReply ? "comment comment-reply" : "comment";
comment.setAttribute("itemprop", "comment");
comment.setAttribute("itemtype", "http://schema.org/Comment");
let avatarSource = document.createElement("source");
avatarSource.setAttribute(
"srcset",
escapeHtml(status.account.avatar)
);
avatarSource.setAttribute(
"media",
"(prefers-reduced-motion: no-preference)"
);
let avatarImg = document.createElement("img");
avatarImg.className = "avatar";
avatarImg.setAttribute(
"src",
escapeHtml(status.account.avatar_static)
);
avatarImg.setAttribute(
"alt",
`@${status.account.username}@${instance} avatar`
);
if (lazyAsyncImage == "true") {
avatarImg.setAttribute("decoding", "async");
avatarImg.setAttribute("loading", "lazy");
}
let avatarPicture = document.createElement("picture");
avatarPicture.appendChild(avatarSource);
avatarPicture.appendChild(avatarImg);
let avatar = document.createElement("a");
avatar.className = "avatar-link";
avatar.setAttribute("href", status.account.url);
avatar.setAttribute("rel", relAttributes);
avatar.appendChild(avatarPicture);
comment.appendChild(avatar);
let display = document.createElement("a");
display.className = "display";
display.setAttribute("href", status.account.url);
display.setAttribute("rel", relAttributes);
display.setAttribute("itemprop", "author");
display.setAttribute("itemtype", "http://schema.org/Person");
display.innerHTML = status.account.display_name;
let instanceBadge = document.createElement("span");
instanceBadge.className = "instance";
instanceBadge.textContent = `@${status.account.username}@${instance}`;
let permalink = document.createElement("a");
permalink.setAttribute("href", status.url);
permalink.setAttribute("itemprop", "url");
permalink.setAttribute("rel", relAttributes);
permalink.textContent = new Date(
status.created_at
).toLocaleString(dateLocale, {
dateStyle: "long",
timeStyle: "short",
});
let timestamp = document.createElement("time");
timestamp.setAttribute("datetime", status.created_at);
timestamp.classList.add("timestamp");
timestamp.appendChild(permalink);
permalink.classList.add("external");
let header = document.createElement("header");
header.appendChild(display);
header.appendChild(instanceBadge);
header.appendChild(timestamp);
comment.appendChild(header);
let main = document.createElement("main");
main.setAttribute("itemprop", "text");
if (status.sensitive == true || status.spoiler_text != "") {
let summary = document.createElement("summary");
if (status.spoiler_text == "") {
status.spoiler_text == sensitiveText;
}
summary.innerHTML = status.spoiler_text;
let spoiler = document.createElement("details");
spoiler.appendChild(summary);
spoiler.innerHTML += status.content;
main.appendChild(spoiler);
} else {
main.innerHTML = status.content;
}
comment.appendChild(main);
let attachments = status.media_attachments;
let SUPPORTED_MEDIA = ["image", "video", "gifv", "audio"];
let media = document.createElement("div");
media.className = "attachments";
if (
attachments &&
Array.isArray(attachments) &&
attachments.length > 0
) {
attachments.forEach((attachment) => {
if (SUPPORTED_MEDIA.includes(attachment.type)) {
let mediaElement;
switch (attachment.type) {
case "image":
mediaElement = document.createElement("img");
mediaElement.setAttribute("src", attachment.preview_url);
if (attachment.description != null) {
mediaElement.setAttribute("title", attachment.description);
}
if (lazyAsyncImage == "true") {
mediaElement.setAttribute("decoding", "async");
mediaElement.setAttribute("loading", "lazy");
}
if (status.sensitive == true) {
mediaElement.classList.add("spoiler");
}
media.appendChild(mediaElement);
break;
case "video":
mediaElement = document.createElement("video");
mediaElement.setAttribute("src", attachment.url);
mediaElement.setAttribute("controls", "");
if (attachment.description != null) {
mediaElement.setAttribute("title", attachment.description);
}
if (status.sensitive == true) {
mediaElement.classList.add("spoiler");
}
media.appendChild(mediaElement);
break;
case "gifv":
mediaElement = document.createElement("video");
mediaElement.setAttribute("src", attachment.url);
mediaElement.setAttribute("autoplay", "");
mediaElement.setAttribute("playsinline", "");
mediaElement.setAttribute("loop", "");
if (attachment.description != null) {
mediaElement.setAttribute("title", attachment.description);
}
if (status.sensitive == true) {
mediaElement.classList.add("spoiler");
}
media.appendChild(mediaElement);
break;
case "audio":
mediaElement = document.createElement("audio");
mediaElement.setAttribute("src", attachment.url);
mediaElement.setAttribute("controls", "");
if (attachment.description != null) {
mediaElement.setAttribute("title", attachment.description);
}
media.appendChild(mediaElement);
break;
}
let mediaLink = document.createElement("a");
mediaLink.setAttribute("href", attachment.url);
mediaLink.setAttribute("rel", relAttributes);
mediaLink.appendChild(mediaElement);
media.appendChild(mediaLink);
}
});
comment.appendChild(media);
}
let interactions = document.createElement("footer");
let boosts = document.createElement("a");
boosts.className = "boosts";
boosts.setAttribute("href", `${status.url}/reblogs`);
let boostsIcon = document.createElement("i");
boostsIcon.classList.add("ph-bold", "ph-repeat");
boosts.appendChild(boostsIcon);
boosts.insertAdjacentHTML('beforeend', ` ${status.reblogs_count}`);
interactions.appendChild(boosts);
let faves = document.createElement("a");
faves.className = "faves";
faves.setAttribute("href", `${status.url}/favourites`);
let favesIcon = document.createElement("i");
favesIcon.classList.add("ph-bold", "ph-star");
faves.appendChild(favesIcon);
faves.insertAdjacentHTML('beforeend', ` ${status.favourites_count}`);
interactions.appendChild(faves);
if (
status.reactions &&
Array.isArray(status.reactions) &&
status.reactions.length > 0
) {
let reactions = document.createElement("div");
reactions.classList.add("reactions", "overshoot-row");
status.reactions.forEach(reaction => {
let reactionElement = document.createElement("span");
reactionElement.className = "reaction";
if (reaction.url) {
// Custom emoji
let img = document.createElement("img");
img.className = "emoji";
img.setAttribute("src", escapeHtml(reaction.url));
img.setAttribute("title", `${reaction.name}`);
img.setAttribute("width", "24");
img.setAttribute("height", "24");
reactionElement.appendChild(img);
} else {
// Unicode emoji
let emoji = document.createElement("span");
emoji.textContent = reaction.name;
reactionElement.appendChild(emoji);
}
// Append the count
let count = document.createElement("span");
count.textContent = reaction.count;
reactionElement.appendChild(count);
reactions.appendChild(reactionElement);
});
interactions.appendChild(reactions);
}
comment.appendChild(interactions);
if (status.card != null) {
let cardFigure = document.createElement("figure");
if (status.card.image != null) {
let cardImg = document.createElement("img");
cardImg.setAttribute("src", status.card.image);
cardImg.classList.add("no-hover");
cardFigure.appendChild(cardImg);
}
let cardCaption = document.createElement("figcaption");
let cardTitle = document.createElement("strong");
cardTitle.innerHTML = status.card.title;
cardCaption.appendChild(cardTitle);
if (status.card.description != null && status.card.description.length > 0) {
let cardDescription = document.createElement("p");
cardDescription.innerHTML = status.card.description;
cardCaption.appendChild(cardDescription);
}
cardFigure.appendChild(cardCaption);
let card = document.createElement("a");
card.className = "card";
card.setAttribute("href", status.card.url);
card.setAttribute("rel", relAttributes);
card.appendChild(cardFigure);
comment.appendChild(card);
}
if (op === true) {
comment.classList.add("op");
instanceBadge.classList.add("op");
instanceBadge.setAttribute("title", articleAuthorText);
}
commentsWrapper.appendChild(comment);
});
}
else {
var statusText = document.createElement("p");
statusText.innerHTML = noCommentsText;
statusText.setAttribute("id", "comments-status");
commentsWrapper.appendChild(statusText);
}
loadCommentsButton.innerHTML = reloadText;
})
.catch(function (error) {
console.error('Error loading comments:', error);
})
.finally(function () {
loadCommentsButton.disabled = false;
});
}

View file

@ -1,66 +0,0 @@
// Based on https://www.roboleary.net/2022/01/13/copy-code-to-clipboard-blog.html
document.addEventListener("DOMContentLoaded", function () {
let blocks = document.querySelectorAll("pre[class^='language-']");
blocks.forEach((block) => {
if (navigator.clipboard) {
// Code block header title
let title = document.createElement("span");
let lang = block.getAttribute("data-lang");
title.innerHTML = lang;
// Copy button icon
let iconCopy = document.createElement("i");
iconCopy.classList.add("ph-bold", "ph-copy");
let iconCheck = document.createElement("i");
iconCheck.classList.add("ph-bold", "ph-check-square-offset");
// Copy button
let button = document.createElement("button");
let copyCodeText = document.getElementById("copy-code-text").textContent;
button.setAttribute("title", copyCodeText);
button.appendChild(iconCopy);
button.appendChild(iconCheck);
// Code block header
let header = document.createElement("div");
header.classList.add("header");
if (block.classList.contains("z-code")) {
header.classList.add("z-code");
}
header.appendChild(title);
header.appendChild(button);
// Container that holds header and the code block itself
let container = document.createElement("div");
container.classList.add("pre-container");
container.appendChild(header);
// Move code block into the container
block.parentNode.insertBefore(container, block);
container.appendChild(block);
button.addEventListener("click", async () => {
await copyCode(block, header, button);
});
}
});
async function copyCode(block, header, button) {
let code = block.querySelector("code");
let text = code.innerText;
await navigator.clipboard.writeText(text);
header.classList.add("active");
button.setAttribute("disabled", true);
header.addEventListener("animationend", () => {
header.classList.remove("active");
button.removeAttribute("disabled");
}, { once: true });
}
});

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

View file

@ -1,24 +0,0 @@
document.addEventListener("DOMContentLoaded", () => {
const floaties = document.getElementById("floaties");
if (!floaties) return;
let lastScrollY = 0;
const handleScroll = () => {
const currentScrollY = window.scrollY;
if (currentScrollY > lastScrollY) {
setTimeout(() => {
floaties.classList.add("hidden");
}, 300);
} else {
setTimeout(() => {
floaties.classList.remove("hidden");
}, 400);
}
lastScrollY = currentScrollY;
};
window.addEventListener("scroll", handleScroll);
});

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,162 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" >
<head>
<meta charset="UTF-8" />
<meta name="description" content="Well, get on this site and find out." />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="base" content="https://rootsource.cc" />
<meta name="theme-color" content="purple" />
<title>RootSourceCC</title>
<link rel="canonical" href="https://rootsource.cc/" />
<meta content="Zola" name="generator">
<link rel="icon" type="image/png" href="https://rootsource.cc/favicon.png?h=49b0131ec00d0056a576" />
<link rel="preload" href="https://rootsource.cc/fonts/geist.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/geist-mono.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://rootsource.cc/fonts/phosphor-bold.woff2" as="font" type="font/woff2" crossorigin><style type="text/css">
:root {
--accent-color: hsl(254.11766 44% 55%);
--accent-h: 254.11766;
--accent-s: 44%;
--accent-l: 55%;
}[data-theme="dark"] {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
--accent-color: hsl(249.88234 77% 78%);
--accent-h: 249.88234;
--accent-s: 77%;
--accent-l: 78%;
}
}</style>
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/style.css?h=fd31cab16611d9654aa0" />
<link type="text/css" rel="stylesheet" href="https://rootsource.cc/phosphor-bold.css?h=64fb8156a3a3f0de62c5" />
<script type="text/javascript" defer src="https://rootsource.cc/closable.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search_index.en.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/elasticlunr.min.js"></script>
<script type="text/javascript" defer src="https://rootsource.cc/search.js"></script>
<meta property="og:site_name" content="RootSourceCC" />
<meta property="og:title" content="RootSourceCC" />
<meta property="og:url" content="https://rootsource.cc/" />
<meta property="og:description" content="Well, get on this site and find out." />
<meta property="og:locale" content="en_US" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="RootSourceCC" />
<meta name="twitter:url" content="https://rootsource.cc/" />
<meta name="twitter:description" content="Well, get on this site and find out." />
</head>
<body >
<a id="skip-to-content" href="#main-content" tabindex="0">Skip to Main Content</a>
<div id="site-navbar" class="sidebar">
<a id="navbar-header" class="has-icon" href="#top"><img class="transparent no-hover" src="https:&#x2F;&#x2F;rootsource.cc&#x2F;SiteIcon.png" /><div>
<span>RootSourceCC</span>
<span>Back to Top</span>
</div>
</a>
<nav class="overshoot">
<ul><li>
<a
href="https:&#x2F;&#x2F;rootsource.cc&#x2F;"class="active">
<i class="ph-bold ph-house"></i>RootSourceCC</a>
</li>
<li>
<a href="https://rootsource.cc/Articles" class="
">
<i class="ph-bold ph-newspaper"></i>Articles</a>
</li>
<li>
<a href="https://rootsource.cc/hwinfo" class="
">
<i class="ph-bold ph-circuitry"></i>Hardware information</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;git.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-git-merge"></i>Alpsource</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;haj.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-fediverse-logo"></i>Hajiku&#x2F;Costkey</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;bin.rootsource.cc&#x2F;" rel="" class="external">
<i class="ph-bold ph-lock-laminated"></i>Estellabin</a>
</li>
<li>
<a href="https:&#x2F;&#x2F;status.rootsource.cc&#x2F;status&#x2F;status" rel="" class="external">
<i class="ph-bold ph-siren"></i>Status</a>
</li></ul>
</nav>
<div id="navbar-buttons">
<input class="visually-hidden" id="toggle-navbar" type="checkbox" name="toggle-navbar" autocomplete="off" />
<label for="toggle-navbar"><i class="ph-bold ph-sidebar"></i>Toggle Sidebar</label><button id="search">
<i class="ph-bold ph-magnifying-glass"></i>Search</button></div>
</div>
<main id="main-content" class="has-navbar"><div class="container">
<h1>Home - RootSourceCC</h1><div class="crt scanlines" aria-hidden="true">
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span> ~ ssh rootsource.cc
</span><span>user@rootsource.cc&#39;s password:
</span><span>Linux costmiku.space 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64
</span><span>
</span><span>The programs included with the Debian GNU/Linux system are free software;
</span><span>the exact distribution terms for each program are described in the
</span><span>individual files in /usr/share/doc/*/copyright.
</span><span>
</span><span>Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
</span><span>permitted by applicable law.
</span><span>You have no mail.
</span><span>Last login: Thu Mar 6 15:21:12 2025 from 2a02:1234:5678:9101:1121:3141:abc:def5
</span><span>user@costmiku:~$
</span></code></pre>
</div>
<p>Welcome to RootSourceCC! You could technically call this: "The child of Raíz1, Icycoide and Costmiku"</p>
<p>With the ownership by Raíz1, hosted on and also being in charge of Costmiku, and hosting Icycoide's stuff!</p>
<p>Proud to say, we are the <strong>third</strong> website to transition from Duckquill to Ametrine!</p>
<p>-<a href="https://raiz1.noho.st">Raíz1</a> - <a href="https://icycoide.github.io">Icycoide</a> 2025.</p>
</div>
</main>
<footer id="site-footer">
<div class="container">
<div><p id="site-footer-copyright">raiz1.noho.st owns this website
</p>
<p>Powered by <a class="link external" href="https://www.getzola.org" rel="">Zola</a> and <a class="link external" href="https://ametrine.daudix.one" rel="">Ametrine</a>
</p><p id="site-footer-last-updated">March 06, 2025, 15:26 (CET)</p>
</div></div>
</footer>
<div id="search-modal">
<div id="search-modal-content">
<label for="search-input" class="visually-hidden">Search</label>
<div>
<input id="search-input" placeholder="Search for…" autocomplete="off" type="search">
<i class="ph-bold ph-keyboard" title="Press “&#x2F;” to Open Search Bar"></i>
</div>
<div id="search-results" class="overshoot"></div>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

View file

@ -1,4 +0,0 @@
User-agent: *
Disallow:
Allow: /
Sitemap: https://rootsource.cc/sitemap.xml

View file

@ -1,236 +0,0 @@
// Based on https://github.com/cydave/zola-theme-papermod/blob/fab7cd04833f0c78264b433a4fb1f4b999ef0399/static/js/search.js
// Debounce function definition
function debounce(func, wait, immediate) {
var timeout;
return function () {
var context = this, args = arguments;
var later = function () {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
// Taken from mdbook
// The strategy is as follows:
// First, assign a value to each word in the document:
// Words that correspond to search terms (stemmer aware): 40
// Normal words: 2
// First word in a sentence: 8
// Then use a sliding window with a constant number of words and count the
// sum of the values of the words within the window. Then use the window that got the
// maximum sum. If there are multiple maximas, then get the last one.
// Enclose the terms in <b>.
function makeTeaser(body, terms) {
var TERM_WEIGHT = 40;
var NORMAL_WORD_WEIGHT = 2;
var FIRST_WORD_WEIGHT = 8;
var TEASER_MAX_WORDS = 30;
var stemmedTerms = terms.map(function (w) {
return elasticlunr.stemmer(w.toLowerCase());
});
var termFound = false;
var index = 0;
var weighted = []; // contains elements of ["word", weight, index_in_document]
// split in sentences, then words
var sentences = body.toLowerCase().split(". ");
for (var i in sentences) {
var words = sentences[i].split(" ");
var value = FIRST_WORD_WEIGHT;
for (var j in words) {
var word = words[j];
if (word.length > 0) {
for (var k in stemmedTerms) {
if (elasticlunr.stemmer(word).startsWith(stemmedTerms[k])) {
value = TERM_WEIGHT;
termFound = true;
}
}
weighted.push([word, value, index]);
value = NORMAL_WORD_WEIGHT;
}
index += word.length;
index += 1; // ' ' or '.' if last word in sentence
}
index += 1; // because we split at a two-char boundary '. '
}
if (weighted.length === 0) {
return body;
}
var windowWeights = [];
var windowSize = Math.min(weighted.length, TEASER_MAX_WORDS);
// We add a window with all the weights first
var curSum = 0;
for (var i = 0; i < windowSize; i++) {
curSum += weighted[i][1];
}
windowWeights.push(curSum);
for (var i = 0; i < weighted.length - windowSize; i++) {
curSum -= weighted[i][1];
curSum += weighted[i + windowSize][1];
windowWeights.push(curSum);
}
// If we didn't find the term, just pick the first window
var maxSumIndex = 0;
if (termFound) {
var maxFound = 0;
// backwards
for (var i = windowWeights.length - 1; i >= 0; i--) {
if (windowWeights[i] > maxFound) {
maxFound = windowWeights[i];
maxSumIndex = i;
}
}
}
var teaser = [];
var startIndex = weighted[maxSumIndex][2];
for (var i = maxSumIndex; i < maxSumIndex + windowSize; i++) {
var word = weighted[i];
if (startIndex < word[2]) {
// missing text from index to start of `word`
teaser.push(body.substring(startIndex, word[2]));
startIndex = word[2];
}
// add <strong> around search terms
if (word[1] === TERM_WEIGHT) {
teaser.push("<strong>");
}
startIndex = word[2] + word[0].length;
teaser.push(body.substring(word[2], startIndex));
if (word[1] === TERM_WEIGHT) {
teaser.push("</strong>");
}
}
teaser.push("…");
return teaser.join("");
}
function formatSearchResultItem(item, terms) {
// Adjust this to match your desired result item structure
return '<div class="item">'
+ `<a href="${item.ref}">${item.doc.title}</a>`
+ `<span>${makeTeaser(item.doc.body, terms)}</span>`
+ '</div>';
}
function initSearch() {
var searchModal = document.getElementById("search-modal"); // Full-screen modal
var searchModalContent = document.getElementById("search-modal-content"); // Actual modal box
var searchInput = document.getElementById("search-input"); // Search input
var searchResults = document.getElementById("search-results"); // Search results
var searchButton = document.getElementById("search"); // Search button
var MAX_ITEMS = 10;
var options = {
bool: "AND",
fields: {
title: { boost: 2 },
body: { boost: 1 },
}
};
var currentTerm = "";
var index;
var initIndex = async function () {
if (index === undefined) {
if (typeof window.searchIndex !== "undefined") {
index = elasticlunr.Index.load(window.searchIndex);
} else {
let response = await fetch(`/search_index.${document.documentElement.lang}.json`);
index = elasticlunr.Index.load(await response.json());
}
}
return index;
};
// Open search modal when clicking the search button
if (searchButton) {
searchButton.addEventListener("click", function () {
searchModal.classList.add("active");
searchModal.addEventListener("transitionend", function handler() {
searchInput.focus();
searchModal.removeEventListener("transitionend", handler);
}, { once: true });
});
}
// Open search modal on "/" key press
window.addEventListener("keydown", (event) => {
if (event.key === "/" && document.activeElement.tagName !== "INPUT" && document.activeElement.tagName !== "TEXTAREA") {
event.preventDefault();
searchModal.classList.add("active");
searchModal.addEventListener("transitionend", function handler() {
searchInput.focus();
searchModal.removeEventListener("transitionend", handler);
}, { once: true });
}
});
// Close search modal on Escape key
window.addEventListener("keydown", (event) => {
if (event.key === "Escape") {
searchModal.classList.remove("active");
}
});
// Close search modal when clicking outside search-modal-content
searchModal.addEventListener("click", function (e) {
if (!searchModalContent.contains(e.target)) {
searchModal.classList.remove("active");
}
});
// Prevent clicks inside modal content from closing it
searchModalContent.addEventListener("click", function (e) {
e.stopPropagation(); // Stops event from reaching searchModal click handler
});
// Search input event
searchInput.addEventListener("keyup", debounce(async function () {
var term = searchInput.value.trim();
if (term === currentTerm) return;
searchResults.style.display = term === "" ? "none" : "flex";
searchResults.innerHTML = ""; // Clear previous results
currentTerm = term;
if (term === "") return;
var results = (await initIndex()).search(term, options);
if (results.length === 0) {
searchResults.style.display = "none";
return;
}
// Insert formatted search result items
for (var i = 0; i < Math.min(results.length, MAX_ITEMS); i++) {
searchResults.innerHTML += formatSearchResultItem(results[i], term.split(" "));
}
}, 150));
}
if (document.readyState === "complete" ||
(document.readyState !== "loading" && !document.documentElement.doScroll)
) {
initSearch();
} else {
document.addEventListener("DOMContentLoaded", initSearch);
}

File diff suppressed because one or more lines are too long

View file

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://rootsource.cc/</loc>
</url>
<url>
<loc>https://rootsource.cc/Articles/</loc>
</url>
<url>
<loc>https://rootsource.cc/Articles/duckquill2ametrine/</loc>
<lastmod>2025-03-04</lastmod>
</url>
<url>
<loc>https://rootsource.cc/Articles/page/1/</loc>
</url>
<url>
<loc>https://rootsource.cc/Articles/page/2/</loc>
</url>
<url>
<loc>https://rootsource.cc/Articles/set-up-costmiku-ffsync/</loc>
<lastmod>2025-03-01</lastmod>
</url>
<url>
<loc>https://rootsource.cc/Articles/tylkolinux-installation/</loc>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://rootsource.cc/hwinfo/</loc>
</url>
</urlset>

File diff suppressed because one or more lines are too long

View file

@ -1,78 +0,0 @@
/*
* theme "Monokai Pro" generated by syntect
*/
.z-code {
color: #fcfcfa;
background-color: #2d2a2e;
}
.z-comment {
color: #727072;
}
.z-string {
color: #ffd866;
}
.z-constant.z-numeric {
color: #ab9df2;
}
.z-constant.z-language {
color: #ab9df2;
}
.z-constant.z-character, .z-constant.z-other {
color: #ab9df2;
}
.z-variable {
}
.z-keyword {
color: #ff6188;
}
.z-storage {
color: #ff6188;
}
.z-storage.z-type {
color: #78dce8;
font-style: italic;
}
.z-entity.z-name.z-class {
color: #a9dc76;
text-decoration: underline;
}
.z-entity.z-other.z-inherited-class {
color: #a9dc76;
text-decoration: underline;
font-style: italic;
}
.z-entity.z-name.z-function {
color: #a9dc76;
}
.z-variable.z-parameter {
color: #fc9867;
font-style: italic;
}
.z-entity.z-name.z-tag {
color: #ff6188;
}
.z-entity.z-other.z-attribute-name {
color: #a9dc76;
font-style: italic;
}
.z-support.z-function {
color: #78dce8;
}
.z-support.z-constant {
color: #78dce8;
}
.z-support.z-type, .z-support.z-class {
color: #fcfcfa;
}
.z-support.z-other.z-variable {
}
.z-invalid {
color: #fcfcfa;
background-color: #ff6188;
}
.z-invalid.z-deprecated {
color: #fcfcfa;
background-color: #ae81ff;
}

View file

@ -1,78 +0,0 @@
/*
* theme "Monokai Pro Light" generated by syntect
*/
.z-code {
color: #29242a;
background-color: #faf4f2;
}
.z-comment {
color: #918c8e;
}
.z-string {
color: #cc7a0a;
}
.z-constant.z-numeric {
color: #7058be;
}
.z-constant.z-language {
color: #7058be;
}
.z-constant.z-character, .z-constant.z-other {
color: #7058be;
}
.z-variable {
}
.z-keyword {
color: #e14775;
}
.z-storage {
color: #e14775;
}
.z-storage.z-type {
color: #1c8ca8;
font-style: italic;
}
.z-entity.z-name.z-class {
color: #269d69;
text-decoration: underline;
}
.z-entity.z-other.z-inherited-class {
color: #269d69;
text-decoration: underline;
font-style: italic;
}
.z-entity.z-name.z-function {
color: #269d69;
}
.z-variable.z-parameter {
color: #e16032;
font-style: italic;
}
.z-entity.z-name.z-tag {
color: #e14775;
}
.z-entity.z-other.z-attribute-name {
color: #269d69;
font-style: italic;
}
.z-support.z-function {
color: #1c8ca8;
}
.z-support.z-constant {
color: #1c8ca8;
}
.z-support.z-type, .z-support.z-class {
color: #29242a;
}
.z-support.z-other.z-variable {
}
.z-invalid {
color: #fcfcfa;
background-color: #ff6188;
}
.z-invalid.z-deprecated {
color: #fcfcfa;
background-color: #7058be;
}