<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Daesorin</title>
      <link>https://daesorin.xyz</link>
      <description>Notes on systems, shell, and whatever else is worth writing down.</description>
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://daesorin.xyz/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Sat, 18 Jul 2026 06:58:42 +0100</lastBuildDate>
      <item>
          <title>UFW</title>
          <pubDate>Sat, 18 Jul 2026 06:58:42 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/ufw/</link>
          <guid>https://daesorin.xyz/posts/ufw/</guid>
          <description xml:base="https://daesorin.xyz/posts/ufw/">&lt;h4 id=&quot;status-and-control&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#status-and-control&quot; aria-label=&quot;Anchor link for: status-and-control&quot;&gt;🔗&lt;&#x2F;a&gt;Status and Control&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Show status and active rules&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw status&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Show status with rule numbers&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw status numbered&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Show verbose status (defaults, logging)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw status verbose&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Enable firewall&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw enable&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Disable firewall&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw disable&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Reload rules without disabling&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw reload&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Reset to factory defaults (disables UFW)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw reset&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;allow-rules&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#allow-rules&quot; aria-label=&quot;Anchor link for: allow-rules&quot;&gt;🔗&lt;&#x2F;a&gt;Allow Rules&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow port (TCP + UDP)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow 53&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow port TCP only&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow 22&#x2F;tcp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow port UDP only&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow 53&#x2F;udp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow port range&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow 6000:6007&#x2F;tcp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow by service name&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow ssh&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow from any IP to any port&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow from any&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow from specific IP&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow from 192.168.1.10&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow from IP to specific port&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow from 192.168.1.10 to any port 22&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow from subnet&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow from 10.0.0.0&#x2F;8&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow from subnet to port&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow from 10.0.0.0&#x2F;8 to any port 443&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow to specific interface&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow in on eth0 to any port 80&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow to specific interface and IP&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow in on eth0 from 192.168.1.0&#x2F;24&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;deny-and-reject-rules&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#deny-and-reject-rules&quot; aria-label=&quot;Anchor link for: deny-and-reject-rules&quot;&gt;🔗&lt;&#x2F;a&gt;Deny and Reject Rules&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Deny port&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw deny 23&#x2F;tcp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Deny from IP&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw deny from 203.0.113.5&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Deny from subnet&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw deny from 203.0.113.0&#x2F;24&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Reject port (sends RST, not silent drop)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw reject 23&#x2F;tcp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Reject from IP&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw reject from 203.0.113.5&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;limit-rate-limiting&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#limit-rate-limiting&quot; aria-label=&quot;Anchor link for: limit-rate-limiting&quot;&gt;🔗&lt;&#x2F;a&gt;Limit (Rate Limiting)&lt;&#x2F;h4&gt;
&lt;p&gt;Limits connections to 6 per 30 seconds from a single IP. Useful for SSH brute-force mitigation.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Limit port&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw limit 22&#x2F;tcp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Limit by service name&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw limit ssh&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;delete-rules&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#delete-rules&quot; aria-label=&quot;Anchor link for: delete-rules&quot;&gt;🔗&lt;&#x2F;a&gt;Delete Rules&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete by rule number&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw delete 3&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete by rule specification&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw delete allow 80&#x2F;tcp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete deny rule&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw delete deny 23&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;To get rule numbers: &lt;code&gt;ufw status numbered&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;default-policies&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#default-policies&quot; aria-label=&quot;Anchor link for: default-policies&quot;&gt;🔗&lt;&#x2F;a&gt;Default Policies&lt;&#x2F;h4&gt;
&lt;p&gt;Set the default behaviour for traffic that matches no explicit rule.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Default deny incoming&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw default deny incoming&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Default allow outgoing&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw default allow outgoing&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Default deny outgoing&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw default deny outgoing&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Default deny forwarded&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw default deny routed&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Recommended baseline:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; default deny incoming&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; default allow outgoing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;application-profiles&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#application-profiles&quot; aria-label=&quot;Anchor link for: application-profiles&quot;&gt;🔗&lt;&#x2F;a&gt;Application Profiles&lt;&#x2F;h4&gt;
&lt;p&gt;UFW ships with named profiles for common services stored in &lt;code&gt;&#x2F;etc&#x2F;ufw&#x2F;applications.d&#x2F;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;List available profiles&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw app list&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Show profile details&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw app info Nginx&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Allow by profile&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw allow &#x27;Nginx Full&#x27;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Deny by profile&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw deny &#x27;Nginx Full&#x27;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Update profiles after package install&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw app update all&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;ipv6&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ipv6&quot; aria-label=&quot;Anchor link for: ipv6&quot;&gt;🔗&lt;&#x2F;a&gt;IPv6&lt;&#x2F;h4&gt;
&lt;p&gt;Ensure &lt;code&gt;IPV6=yes&lt;&#x2F;code&gt; is set in &lt;code&gt;&#x2F;etc&#x2F;default&#x2F;ufw&lt;&#x2F;code&gt; to apply rules to IPv6 as well. Rules apply to both stacks by default once enabled.&lt;&#x2F;p&gt;
&lt;p&gt;Allow on IPv6 only:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow in on eth0 from fe80::&#x2F;10 to any port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 22&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;logging&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#logging&quot; aria-label=&quot;Anchor link for: logging&quot;&gt;🔗&lt;&#x2F;a&gt;Logging&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Task&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Enable logging (low level)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw logging on&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Set log level&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw logging low&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;medium&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;high&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;full&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Disable logging&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ufw logging off&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Logs go to &lt;code&gt;&#x2F;var&#x2F;log&#x2F;ufw.log&lt;&#x2F;code&gt; and syslog. Format: &lt;code&gt;[UFW BLOCK]&lt;&#x2F;code&gt; or &lt;code&gt;[UFW ALLOW]&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;common-baselines&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#common-baselines&quot; aria-label=&quot;Anchor link for: common-baselines&quot;&gt;🔗&lt;&#x2F;a&gt;Common Baselines&lt;&#x2F;h4&gt;
&lt;p&gt;######### Server Baseline&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; default deny incoming&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; default allow outgoing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow 22&#x2F;tcp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; enable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;######### Web Server&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow 22&#x2F;tcp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow 80&#x2F;tcp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow 443&#x2F;tcp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;######### Allow LAN, Block WAN&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow from 192.168.0.0&#x2F;16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; deny from any&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;######### Restrict Outbound DNS to One Resolver&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; default deny outgoing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow out to&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 9.9.9.9&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 53&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow out to any port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 80&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow out to any port&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 443&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;inserting-rules-at-a-specific-position&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#inserting-rules-at-a-specific-position&quot; aria-label=&quot;Anchor link for: inserting-rules-at-a-specific-position&quot;&gt;🔗&lt;&#x2F;a&gt;Inserting Rules at a Specific Position&lt;&#x2F;h4&gt;
&lt;p&gt;Rules are matched in order. Insert before existing rules with:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ufw&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; insert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; allow from&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 10.0.0.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h4 id=&quot;flags-and-options&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#flags-and-options&quot; aria-label=&quot;Anchor link for: flags-and-options&quot;&gt;🔗&lt;&#x2F;a&gt;Flags and Options&lt;&#x2F;h4&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Flag&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;allow&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Permit matching traffic&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;deny&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Drop matching traffic silently&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;reject&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Drop and send RST to sender&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;limit&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Rate-limit (6 connections per 30s per IP)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;in&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Apply to incoming traffic&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;out&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Apply to outgoing traffic&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;on &amp;lt;iface&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Restrict rule to a network interface&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;from &amp;lt;ip&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Match source address&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;to &amp;lt;ip&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Match destination address&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;port &amp;lt;n&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Match destination port&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;proto tcp&#x2F;udp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Match protocol&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
</description>
      </item>
      <item>
          <title>Algorithmic panic and the aesthetics of using arch</title>
          <pubDate>Fri, 17 Jul 2026 21:17:41 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/algorithmic-panic-and-the-aesthetics-of-using-arch/</link>
          <guid>https://daesorin.xyz/posts/algorithmic-panic-and-the-aesthetics-of-using-arch/</guid>
          <description xml:base="https://daesorin.xyz/posts/algorithmic-panic-and-the-aesthetics-of-using-arch/">&lt;p&gt;Every time news drops about a vulnerability being found in the Linux kernel, tech YouTubers immediately descend into a manufactured hysteria. They begin pushing out videos plastered with titles like &quot;Linux is falling apart&quot;, &quot;Is this the end of Linux?&quot;, and &quot;Do not use Linux&quot;. It is incredibly annoying to witness this relentless cycle. These channels deliberately induce panic to drive engagement, abandoning any rational analysis of the actual software issues. This behaviour reflects an ecosystem that disproportionately rewards sensationalism over factual reporting, reducing nuanced technical discourse into a cheap commodity tailored solely for algorithm metrics and profit.&lt;&#x2F;p&gt;
&lt;p&gt;This trend was starkly evident during the AUR security issue last month. Content creators came out of the woodwork screaming at their audiences to avoid Arch entirely, and some even went ahead to uninstall it and swap to another distro just for the dramatic effect. The entire spectacle was absurd because the fundamental nature of the Arch User Repository was ignored for the sake of generating outrage. The AUR is explicitly community-driven and inherently comes with risks. When searching for a distribution, the foundational advice is always that the AUR is dangerous and one must read the shell scripts and documentation before installing.&lt;&#x2F;p&gt;
&lt;p&gt;Every Arch user knows the repository is supposed to be filled with buggy packages, making the performative crying from these creators entirely disingenuous. They exploit a known technical reality to feed the algorithmic machine. This panic they induce is simply a mechanism to maintain their viewership, sacrificing rational reporting for pure engagement. A simple reminder to check the PKGBUILD simply will not get the clicks, so they choose to sell with panic, leaving the rest of the community to deal with the exhausting noise.&lt;&#x2F;p&gt;
&lt;p&gt;The incident also highlighted a broader issue within the community, exposing how many purported Arch users were completely detached from the reality of their operating system. They treated it purely as an aesthetic status symbol. The superficiality was particularly prevalent on Twitter, where the &quot;I use Arch BTW&quot; crowd immediately began abandoning ship for NixOS at the first sign of trouble. One particularly ridiculous instance involved a user announcing their switch from Arch to Artix specifically to escape the AUR problem. The sheer stupidity of this decision prompted another user to ask the critical question of how this individual even managed to install Arch in the first place.&lt;&#x2F;p&gt;
&lt;p&gt;Artix is fundamentally an Arch Linux derivative. It utilises the exact same package management ecosystem, meaning the perceived AUR crisis applied equally there. Another commentator astutely noted that the original poster likely relied on ChatGPT to deploy their system. While that is almost certainly true, one has to wonder why their chosen artificial intelligence failed to inform them that Artix shares the same architectural roots. If an individual relies on automated prompts to build a machine, they should at least query those same tools before migrating to an identical environment out of sheer ignorance.&lt;&#x2F;p&gt;
&lt;p&gt;Ultimately, the panic surrounding the AUR exposed a massive demographic of Linux posers. These individuals flock to certain technologies simply because the people they deem cool are using them. They prioritise the aesthetic of a terminal-heavy workflow while lacking the fundamental technical competence required to maintain it. When a routine security warning generates an exodus to fundamentally identical platforms, it proves these users care solely about the performative aspect of using Arch. They reduce a robust, community-built tool into a hollow brand, perfectly mirroring the superficial, capitalist tech culture that these YouTubers constantly propagate.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Automating Self-Hosted Backups with Tar, Age, and Systemd</title>
          <pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/automating-self-hosted-backups/</link>
          <guid>https://daesorin.xyz/posts/automating-self-hosted-backups/</guid>
          <description xml:base="https://daesorin.xyz/posts/automating-self-hosted-backups/">&lt;p&gt;Running self-hosted infrastructure requires a reliable backup pipeline that executes silently in the background. Deploying monolithic backup suites often introduces complex state engines, high resource usage, and extra software dependencies. You can build a resilient, zero-knowledge disaster recovery workflow by piping standard Unix archiving tools directly into modern encryption and scheduling them with systemd. This approach ensures your archives remain cryptographically secure before they leave your server, keeping your workflow simple, modular, and easy to inspect.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-architecture&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-architecture&quot; aria-label=&quot;Anchor link for: the-architecture&quot;&gt;🔗&lt;&#x2F;a&gt;The Architecture&lt;&#x2F;h2&gt;
&lt;p&gt;The pipeline captures the three critical pillars of a self-hosted server: persistent service data (&lt;code&gt;&#x2F;srv&lt;&#x2F;code&gt;), reverse proxy routing (&lt;code&gt;&#x2F;etc&#x2F;caddy&#x2F;Caddyfile&lt;&#x2F;code&gt;), and container orchestration definitions (&lt;code&gt;&#x2F;etc&#x2F;containers&#x2F;systemd&lt;&#x2F;code&gt; for Podman Quadlets).&lt;&#x2F;p&gt;
&lt;p&gt;The workflow chains four specialized utilities together without writing unencrypted intermediate files to disk:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tar and Zstd:&lt;&#x2F;strong&gt; Bundles target directories into a single stream and compresses them with Zstandard for high-speed data reduction and low CPU overhead.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Age:&lt;&#x2F;strong&gt; Encrypts the compressed stream using X25519 asymmetric cryptography. Encrypting to a public key allows the automated script to run unattended without storing the decryption secret on the server.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Filen CLI:&lt;&#x2F;strong&gt; Synchronises the encrypted artifact to off-site cloud storage.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Systemd:&lt;&#x2F;strong&gt; Manages execution scheduling, network dependency checks, and failure logging through the system journal.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;asymmetric-keys-vs-the-passphrase-trap&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#asymmetric-keys-vs-the-passphrase-trap&quot; aria-label=&quot;Anchor link for: asymmetric-keys-vs-the-passphrase-trap&quot;&gt;🔗&lt;&#x2F;a&gt;Asymmetric Keys vs. The Passphrase Trap&lt;&#x2F;h2&gt;
&lt;p&gt;Automating server backups requires a strict separation between encryption and decryption capabilities. A production server responsible for generating backups should never possess the ability to read historical archives. Achieving this security boundary relies on asymmetric public-key cryptography, where encryption and decryption use entirely different keys.&lt;&#x2F;p&gt;
&lt;p&gt;Using symmetric passphrases for automated pipelines introduces significant security risks and operational roadblocks. An interactive passphrase prompt blocks unattended scripts from running. To bypass this prompt, an administrator must store the secret in plaintext inside an environment variable, a script file, or process memory. If an unauthorised actor gains access to the server, that stored passphrase compromises every historical backup archive created with it. Furthermore, passphrases introduce human error into disaster recovery; complex strings are easily forgotten over years of silent automation, rendering backups useless precisely when a restoration is required.&lt;&#x2F;p&gt;
&lt;p&gt;Asymmetric encryption separates these roles cleanly. You generate a key pair on your secure local workstation, deploy only the public key to the server to lock incoming data, and store the private decryption key offline. If the production environment is compromised, an attacker discovers only an unreadable ciphertext and a public key capable of encryption alone.&lt;&#x2F;p&gt;
&lt;p&gt;To create your cryptographic identity, install &lt;code&gt;age&lt;&#x2F;code&gt; on your local workstation and generate the key pair:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# GENERATE IDENTITY&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# creates a new key pair on your local workstation with restrictive permissions&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;age-keygen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ~&#x2F;.config&#x2F;age&#x2F;identity.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 600&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ~&#x2F;.config&#x2F;age&#x2F;identity.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This generates an identity file containing your private decryption key (&lt;code&gt;AGE-SECRET-KEY-1...&lt;&#x2F;code&gt;). Extract the public key string to embed inside your server&#x27;s backup script:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# EXTRACT PUBLIC KEY&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# displays the public key string safe for server distribution&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;age-keygen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ~&#x2F;.config&#x2F;age&#x2F;identity.txt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The resulting string, starting with &lt;code&gt;age1&lt;&#x2F;code&gt;, is safe to distribute to any server, repository, or configuration file.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-backup-pipeline&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-backup-pipeline&quot; aria-label=&quot;Anchor link for: the-backup-pipeline&quot;&gt;🔗&lt;&#x2F;a&gt;The Backup Pipeline&lt;&#x2F;h2&gt;
&lt;p&gt;The script acts as the coordination layer on the production server. It sequences the archive creation, enforces compression, applies public-key encryption, and guarantees temporary files are cleaned up reliably on exit or hardware failure to prevent storage exhaustion in &lt;code&gt;&#x2F;tmp&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;set -euo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; pipefail&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# SETUP VARIABLES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# defines timestamp, encryption public key, and temporary archive path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;DATE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; +%F&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;AGE_PUBKEY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;TEMP_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;tmp&#x2F;chitin-${&lt;&#x2F;span&gt;&lt;span&gt;DATE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;}.tar.zst.age&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# TARGET PATHS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# list of absolute paths containing persistent data and system configurations&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;BACKUP_SOURCES&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;    &amp;quot;&#x2F;srv&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;    &amp;quot;&#x2F;etc&#x2F;caddy&#x2F;Caddyfile&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;    &amp;quot;&#x2F;etc&#x2F;containers&#x2F;systemd&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CLEANUP TRAP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# removes temporary archive on script exit or execution error&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;cleanup&lt;&#x2F;span&gt;&lt;span&gt;() {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TEMP_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;        rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TEMP_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;trap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; cleanup ERR EXIT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# ARCHIVE AND ENCRYPT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# streams zstd compressed tarball directly into age public key encryption&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;tar&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -c --zstd -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -P&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;${&lt;&#x2F;span&gt;&lt;span&gt;BACKUP_SOURCES&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;]}&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; age&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$AGE_PUBKEY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TEMP_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CLOUD TRANSFER&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# uploads encrypted archive to filen remote storage&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;&#x2F;home&#x2F;dnlmr&#x2F;.filen-cli&#x2F;bin&#x2F;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; upload &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TEMP_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot; &amp;quot;&#x2F;chitin&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# FINAL CLEANUP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# deletes local encrypted archive after successful upload&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;rm&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$TEMP_FILE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Using the &lt;code&gt;-P&lt;&#x2F;code&gt; (&lt;code&gt;--absolute-names&lt;&#x2F;code&gt;) flag in &lt;code&gt;tar&lt;&#x2F;code&gt; preserves the leading slashes of the source directories. This instructs the archive to retain the exact file system hierarchy required for a bare-metal restoration, mapping container definitions and server configurations directly back to their root locations without requiring manual directory reconstruction.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;deterministic-scheduling-with-systemd&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#deterministic-scheduling-with-systemd&quot; aria-label=&quot;Anchor link for: deterministic-scheduling-with-systemd&quot;&gt;🔗&lt;&#x2F;a&gt;Deterministic Scheduling with Systemd&lt;&#x2F;h2&gt;
&lt;p&gt;Standard cron daemons lack awareness of system state and network availability, frequently executing scripts while network interfaces are offline or during system boot contention. Systemd timer units provide precise execution control, automated failure recovery, and structured logging.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-service-unit-etc-systemd-system-backup-service&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-service-unit-etc-systemd-system-backup-service&quot; aria-label=&quot;Anchor link for: the-service-unit-etc-systemd-system-backup-service&quot;&gt;🔗&lt;&#x2F;a&gt;The Service Unit (&lt;code&gt;&#x2F;etc&#x2F;systemd&#x2F;system&#x2F;backup.service&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Unit]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Description&lt;&#x2F;span&gt;&lt;span&gt;=Backup script for self-hosted data&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;After&lt;&#x2F;span&gt;&lt;span&gt;=network-online.target&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Wants&lt;&#x2F;span&gt;&lt;span&gt;=network-online.target&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Service]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Type&lt;&#x2F;span&gt;&lt;span&gt;=oneshot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;ExecStart&lt;&#x2F;span&gt;&lt;span&gt;=&#x2F;usr&#x2F;local&#x2F;bin&#x2F;backup&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;User&lt;&#x2F;span&gt;&lt;span&gt;=root&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;StandardOutput&lt;&#x2F;span&gt;&lt;span&gt;=journal&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;StandardError&lt;&#x2F;span&gt;&lt;span&gt;=journal&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The &lt;code&gt;Wants&lt;&#x2F;code&gt; and &lt;code&gt;After&lt;&#x2F;code&gt; directives explicitly bind the execution of the backup script to the network initialisation state. If the server restarts or experiences network interface dropouts, systemd delays execution until external connectivity is fully restored, preventing failed API calls to the remote storage provider.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-timer-unit-etc-systemd-system-backup-timer&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-timer-unit-etc-systemd-system-backup-timer&quot; aria-label=&quot;Anchor link for: the-timer-unit-etc-systemd-system-backup-timer&quot;&gt;🔗&lt;&#x2F;a&gt;The Timer Unit (&lt;code&gt;&#x2F;etc&#x2F;systemd&#x2F;system&#x2F;backup.timer&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Unit]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Description&lt;&#x2F;span&gt;&lt;span&gt;=Daily backup timer&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Requires&lt;&#x2F;span&gt;&lt;span&gt;=backup.service&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Timer]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;OnCalendar&lt;&#x2F;span&gt;&lt;span&gt;=daily&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Persistent&lt;&#x2F;span&gt;&lt;span&gt;=true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;RandomizedDelaySec&lt;&#x2F;span&gt;&lt;span&gt;=1h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Install]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WantedBy&lt;&#x2F;span&gt;&lt;span&gt;=timers.target&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The &lt;code&gt;Persistent=true&lt;&#x2F;code&gt; directive guarantees that if the server is powered down during the scheduled execution window, the backup triggers immediately upon the next system boot. Adding &lt;code&gt;RandomizedDelaySec=1h&lt;&#x2F;code&gt; staggers the exact upload time within a one-hour window. This practice prevents bandwidth spikes and avoids triggering rate limits on remote storage APIs when running identical schedules across multiple servers or clusters.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;verifying-and-restoring-infrastructure&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#verifying-and-restoring-infrastructure&quot; aria-label=&quot;Anchor link for: verifying-and-restoring-infrastructure&quot;&gt;🔗&lt;&#x2F;a&gt;Verifying and Restoring Infrastructure&lt;&#x2F;h2&gt;
&lt;p&gt;An unverified backup offers no guarantees during a disaster. To validate archive integrity or recover from a system loss, download the encrypted artifact from remote storage to an administrative machine containing your private key, then process the ciphertext through the decryption pipeline.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# INTEGRITY VERIFICATION&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# lists archive contents without writing files to disk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;age&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --decrypt -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ~&#x2F;.config&#x2F;age&#x2F;identity.txt &#x2F;tmp&#x2F;chitin-2026-07-16.tar.zst.age&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; tar&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -t --zstd -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -P&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# FULL SYSTEM RESTORATION&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# extracts absolute paths directly to the root filesystem&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;age&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --decrypt -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ~&#x2F;.config&#x2F;age&#x2F;identity.txt &#x2F;tmp&#x2F;chitin-2026-07-16.tar.zst.age&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; tar&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -x --zstd -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; -&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -P -C&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Combining open-source compression, modern asymmetric encryption, and native Linux process management creates a dependable disaster recovery pipeline. Your server state remains securely encrypted at rest in cloud storage, resilient against infrastructure compromise, and accessible exclusively through the private key you control.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>About</title>
          <pubDate>Wed, 15 Jul 2026 19:13:39 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/about/</link>
          <guid>https://daesorin.xyz/about/</guid>
          <description xml:base="https://daesorin.xyz/about/">&lt;p&gt;I am Daesorin, a Systems Administrator with experience using technologies such as Docker, AWS, and Oracle Cloud Infrastructure. This blog was created to share what I learn along the way, to document technical solutions, my peoms, and socio-cultural rants.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;experience&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#experience&quot; aria-label=&quot;Anchor link for: experience&quot;&gt;🔗&lt;&#x2F;a&gt;Experience&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;strong&gt;Independent Systems Administrator &amp;amp; Infrastructure Maintainer&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud Provisioning &amp;amp; Management:&lt;&#x2F;strong&gt; Deploy, configure, and maintain server infrastructure across Oracle Cloud Infrastructure (OCI) and AWS, focusing on secure networking, resource optimisation, and system uptime.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Containerisation &amp;amp; Virtualisation:&lt;&#x2F;strong&gt; Architect and manage isolated workloads and services using Docker, Podman, and Incus across diverse Linux distributions including Arch Linux, Ubuntu, Alpine, and Rocky Linux.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;CI&#x2F;CD &amp;amp; Automation:&lt;&#x2F;strong&gt; Design and implement automated workflows using Forgejo Actions and GitHub Actions for continuous integration, repository mirroring, and deployment automation.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;System Reliability &amp;amp; Scripting:&lt;&#x2F;strong&gt; Develop custom shell automation scripts using Bash and Python to handle system maintenance, monitoring, and automated data backup pipelines.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;skills&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#skills&quot; aria-label=&quot;Anchor link for: skills&quot;&gt;🔗&lt;&#x2F;a&gt;Skills&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Languages:&lt;&#x2F;strong&gt; Bash, Python&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Web Technologies:&lt;&#x2F;strong&gt; HTML, JavaScript, CSS, Django&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Databases:&lt;&#x2F;strong&gt; SQLite 3, PostgreSQL&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure:&lt;&#x2F;strong&gt; Docker&#x2F;Podman, Incus, CI&#x2F;CD (Forgejo Actions, GitHub Actions)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Platforms:&lt;&#x2F;strong&gt; AWS, Oracle Cloud Infrastructure&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Operating Systems:&lt;&#x2F;strong&gt; Linux (Arch Linux, Ubuntu, Alpine Linux, Rocky Linux, Oracle Linux), macOS&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Other Tools:&lt;&#x2F;strong&gt; Git, Command Line, Forgejo&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;certifications&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#certifications&quot; aria-label=&quot;Anchor link for: certifications&quot;&gt;🔗&lt;&#x2F;a&gt;Certifications&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;CompTIA Linux+ (In Progress)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;interests&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#interests&quot; aria-label=&quot;Anchor link for: interests&quot;&gt;🔗&lt;&#x2F;a&gt;Interests&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Technology&lt;&#x2F;li&gt;
&lt;li&gt;Privacy&lt;&#x2F;li&gt;
&lt;li&gt;Open Source&lt;&#x2F;li&gt;
&lt;li&gt;Systems Administration&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;hobbies&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#hobbies&quot; aria-label=&quot;Anchor link for: hobbies&quot;&gt;🔗&lt;&#x2F;a&gt;Hobbies&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Reading&lt;&#x2F;li&gt;
&lt;li&gt;Worldbuilding&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;favourite-books&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#favourite-books&quot; aria-label=&quot;Anchor link for: favourite-books&quot;&gt;🔗&lt;&#x2F;a&gt;Favourite Books&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Anathem&lt;&#x2F;em&gt; by Neal Stephenson&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Blindsight&lt;&#x2F;em&gt; by Peter Watts&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Dune&lt;&#x2F;em&gt; by Frank Herbert&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Neuromancer&lt;&#x2F;em&gt; by William Gibson&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Seeing Like a State&lt;&#x2F;em&gt; by James C. Scott&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Solaris&lt;&#x2F;em&gt; by Stanisław Lem&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;The Dispossessed&lt;&#x2F;em&gt; by Ursula K. Le Guin&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;The Left Hand of Darkness&lt;&#x2F;em&gt; by Ursula K. Le Guin&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;The Name of the Rose&lt;&#x2F;em&gt; by Umberto Eco&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;The Three-Body Problem&lt;&#x2F;em&gt; by Liu Cixin&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Reverend Insanity&lt;&#x2F;em&gt; by Gu Zhen Ren&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;The Trial&lt;&#x2F;em&gt; by Franz Kafka&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Ubik&lt;&#x2F;em&gt; by Philip K. Dick&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;favourite-movies&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#favourite-movies&quot; aria-label=&quot;Anchor link for: favourite-movies&quot;&gt;🔗&lt;&#x2F;a&gt;Favourite Movies&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;12 Angry Men&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;All the President’s Men&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Children of Men&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Solaris&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Stalker&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;The Conversation&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;favourite-graphic-novels&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#favourite-graphic-novels&quot; aria-label=&quot;Anchor link for: favourite-graphic-novels&quot;&gt;🔗&lt;&#x2F;a&gt;Favourite Graphic Novels&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;20th Century Boys&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Billy Bat&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Dai Dark&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Dorohedoro&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Homunculus&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Monster&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Nausicaä of the Valley of the Wind&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Pluto&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Vagabond&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Watchmen&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;favourite-shows&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#favourite-shows&quot; aria-label=&quot;Anchor link for: favourite-shows&quot;&gt;🔗&lt;&#x2F;a&gt;Favourite Shows&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Ergo Proxy&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Fullmetal Alchemist&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Line of Duty&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Mr. Robot&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;One Piece&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Paranoia Agent&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Psycho-Pass&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Severance&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Texhnolyze&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;True Detective&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Utopia&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Devs&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;favourite-games&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#favourite-games&quot; aria-label=&quot;Anchor link for: favourite-games&quot;&gt;🔗&lt;&#x2F;a&gt;Favourite Games&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Final Fantasy&lt;&#x2F;em&gt; (I, II, IV, V, VII)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Fire Emblem&lt;&#x2F;em&gt; (All entries up to &lt;em&gt;Three Houses&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Persona 3&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Age of Empires&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Hogwarts Legacy&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;favourite-board-games&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#favourite-board-games&quot; aria-label=&quot;Anchor link for: favourite-board-games&quot;&gt;🔗&lt;&#x2F;a&gt;Favourite Board Games&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Chess&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Nonogram&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;!--
## Here is a collection of blogs, technical writers, and digital gardens that I regularly read and find valuable.

### Systems &amp; Software Engineering

* [cknoll](https:&#x2F;&#x2F;cknoll.github.io&#x2F;): Notes and technical articles on control theory, Python, and scientific computing.
* [Abuse of Notation](https:&#x2F;&#x2F;abuseofnotation.github.io): Philosophical essays examining computer science, logic, mathematics, and functional programming.
* [Drew DeVault&#x27;s Blog](https:&#x2F;&#x2F;drewdevault.com&#x2F;): Uncompromising writing on open-source software, systems programming, Linux, and independent web infrastructure.
* [Dan Luu](https:&#x2F;&#x2F;danluu.com&#x2F;): Highly detailed empirical analyses of systems performance, hardware latency, and engineering culture.
* [Rachel by the Bay](https:&#x2F;&#x2F;rachelbythebay.com&#x2F;w&#x2F;): Trench-level debugging stories and practical systems administration reality checks.
* [Xe Iaso](https:&#x2F;&#x2F;xeiaso.net&#x2F;): Deep explorations of Linux infrastructure, networking, and unconventional systems design.

### Philosophy, Math &amp; Digital Gardens

* [Steph Ango](https:&#x2F;&#x2F;stephango.com&#x2F;): Essays on local-first software, tools for thought, and minimalist engineering by the creator of Obsidian.
* [A Collection of Propositions](https:&#x2F;&#x2F;iqiipi.com&#x2F;): A minimalist digital garden exploring logic, philosophy, and formal mathematics.
* [Fractal Kitty](https:&#x2F;&#x2F;fractalkitty.com&#x2F;): An intersection of mathematics, poetry, creative coding, and algorithmic art.
* [Pluralistic](https:&#x2F;&#x2F;pluralistic.net&#x2F;): Cory Doctorow’s daily chronicle of digital rights, technology policy, and the systemic economics of platform decay.

### Communities &amp; Resources

* [The Recurse Center](https:&#x2F;&#x2F;www.recurse.com&#x2F;): A self-directed, community-driven educational retreat for curious programmers who want to become better builders.
* [Lobsters](https:&#x2F;&#x2F;lobste.rs&#x2F;): A computing-centric community featuring high-signal discussions on systems administration, programming, and FOSS development.
--&gt;</description>
      </item>
      <item>
          <title>Package Categories and References</title>
          <pubDate>Wed, 29 Apr 2026 16:28:36 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/package-categories-and-references/</link>
          <guid>https://daesorin.xyz/posts/package-categories-and-references/</guid>
          <description xml:base="https://daesorin.xyz/posts/package-categories-and-references/">&lt;h1 id=&quot;1-core-system&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-core-system&quot; aria-label=&quot;Anchor link for: 1-core-system&quot;&gt;🔗&lt;&#x2F;a&gt;1. Core System&lt;&#x2F;h1&gt;
&lt;p&gt;These packages form the absolute foundation of the operating system. Without them, the machine will not boot or function correctly.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;base-system&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#base-system&quot; aria-label=&quot;Anchor link for: base-system&quot;&gt;🔗&lt;&#x2F;a&gt;Base System&lt;&#x2F;h2&gt;
&lt;p&gt;The minimal package set required for a bootable Arch Linux installation. It includes the GNU core utilities, the C library, systemd, and the Pacman package manager. Without this layer, the system simply does not exist.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;base&lt;&#x2F;code&gt;, &lt;code&gt;base-devel&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;base&lt;&#x2F;code&gt; pulls in the fundamental userspace tools needed to interact with the system, while &lt;code&gt;base-devel&lt;&#x2F;code&gt; provides the compilation toolchain (&lt;code&gt;gcc&lt;&#x2F;code&gt;, &lt;code&gt;make&lt;&#x2F;code&gt;, &lt;code&gt;fakeroot&lt;&#x2F;code&gt;) required to build packages from the Arch User Repository (AUR) or compile software from source.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;linux-kernel&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#linux-kernel&quot; aria-label=&quot;Anchor link for: linux-kernel&quot;&gt;🔗&lt;&#x2F;a&gt;Linux Kernel&lt;&#x2F;h2&gt;
&lt;p&gt;The core software layer managing memory, processes, hardware devices, and system calls. The kernel acts as the bridge between your physical hardware and your software applications. Arch ships the vanilla upstream kernel by default, though alternatives exist with modified scheduling, patching, or hardening characteristics.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;linux&lt;&#x2F;code&gt;, &lt;code&gt;linux-lts&lt;&#x2F;code&gt;, &lt;code&gt;linux-zen&lt;&#x2F;code&gt;, &lt;code&gt;linux-hardened&lt;&#x2F;code&gt;, &lt;code&gt;linux-headers&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The standard &lt;code&gt;linux&lt;&#x2F;code&gt; kernel moves fast and tracks stable upstream releases. &lt;code&gt;linux-lts&lt;&#x2F;code&gt; provides long-term support, which is invaluable as a reliable fallback if a leading-edge driver breaks. &lt;code&gt;linux-zen&lt;&#x2F;code&gt; applies tuning and scheduling tweaks optimised for desktop responsiveness and low-latency workloads. The &lt;code&gt;linux-headers&lt;&#x2F;code&gt; package is strictly required to compile out-of-tree kernel modules for custom hardware drivers, virtualization software, or virtual private networks.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;firmware&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#firmware&quot; aria-label=&quot;Anchor link for: firmware&quot;&gt;🔗&lt;&#x2F;a&gt;Firmware&lt;&#x2F;h2&gt;
&lt;p&gt;Binary blobs loaded by the kernel onto hardware devices during the boot sequence. This includes graphics unit microcode, wireless network interfaces, audio digital signal processors, and NVMe controllers. Missing firmware results in uninitialised hardware or severely degraded performance.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;linux-firmware&lt;&#x2F;code&gt;, &lt;code&gt;sof-firmware&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Modern hardware relies heavily on proprietary firmware blobs to initialise hardware controllers. Without &lt;code&gt;linux-firmware&lt;&#x2F;code&gt;, your Wi-Fi card will not scan for networks and your GPU will fail to accelerate graphics. &lt;code&gt;sof-firmware&lt;&#x2F;code&gt; (Sound Open Firmware) is critical for modern laptop audio routing and digital microphone arrays.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;cpu-microcode&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#cpu-microcode&quot; aria-label=&quot;Anchor link for: cpu-microcode&quot;&gt;🔗&lt;&#x2F;a&gt;CPU Microcode&lt;&#x2F;h2&gt;
&lt;p&gt;Processor-specific stability and security updates applied by the bootloader or initramfs before the operating system initialises. These patches address hardware errata directly at the silicon level without requiring a motherboard BIOS update.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;intel-ucode&lt;&#x2F;code&gt;, &lt;code&gt;amd-ucode&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Silicon is rarely bug-free. Microcode updates mitigate critical processor vulnerabilities and hardware stability bugs. You install the specific package corresponding to your processor manufacturer, and the system applies the patches into the CPU registers during early boot.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;bootloader&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#bootloader&quot; aria-label=&quot;Anchor link for: bootloader&quot;&gt;🔗&lt;&#x2F;a&gt;Bootloader&lt;&#x2F;h2&gt;
&lt;p&gt;The initial executable initiated by the motherboard firmware (UEFI or BIOS). It locates the kernel image, passes command-line parameters, and transfers execution control to the operating system. Without a bootloader, the system will not start.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;grub&lt;&#x2F;code&gt;, &lt;code&gt;efibootmgr&lt;&#x2F;code&gt;, &lt;code&gt;systemd-boot&lt;&#x2F;code&gt;, &lt;code&gt;refind&lt;&#x2F;code&gt;, &lt;code&gt;sbctl&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;grub&lt;&#x2F;code&gt; is the traditional, feature-rich bootloader capable of handling complex storage configurations like LUKS encryption and LVM out of the box. &lt;code&gt;efibootmgr&lt;&#x2F;code&gt; interacts directly with motherboard UEFI variables to modify boot order entries. &lt;code&gt;systemd-boot&lt;&#x2F;code&gt; offers a minimalist, lightweight alternative integrated directly into the systemd ecosystem. For users requiring Secure Boot verification, &lt;code&gt;sbctl&lt;&#x2F;code&gt; automates the creation and enrolment of custom cryptographic keys.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;init-system&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#init-system&quot; aria-label=&quot;Anchor link for: init-system&quot;&gt;🔗&lt;&#x2F;a&gt;Init System&lt;&#x2F;h2&gt;
&lt;p&gt;The primary user-space process (PID 1) started by the kernel. It mounts filesystems, initialises hardware daemons, manages system services, and orchestrates user sessions. Arch Linux relies on systemd as its default init software. You do not replace this unless you know exactly why.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;systemd&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; systemd is more than just an init system; it is a suite of system management building blocks. It manages service dependencies, socket activation, logging (&lt;code&gt;journald&lt;&#x2F;code&gt;), device management (&lt;code&gt;udev&lt;&#x2F;code&gt;), and user session tracking (&lt;code&gt;systemd-logind&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;filesystem-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#filesystem-utilities&quot; aria-label=&quot;Anchor link for: filesystem-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Filesystem Utilities&lt;&#x2F;h2&gt;
&lt;p&gt;User-space tools required to create, check, resize, and repair filesystems. You also need these packages to mount external storage formatted with non-native filesystems such as Windows NTFS or FAT32 partitions.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;xfsprogs&lt;&#x2F;code&gt; (XFS), &lt;code&gt;e2fsprogs&lt;&#x2F;code&gt; (ext4), &lt;code&gt;dosfstools&lt;&#x2F;code&gt; (FAT32), &lt;code&gt;btrfs-progs&lt;&#x2F;code&gt; (Btrfs), &lt;code&gt;ntfs-3g&lt;&#x2F;code&gt; (NTFS), &lt;code&gt;exfatprogs&lt;&#x2F;code&gt; (exFAT)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The kernel contains the drivers to read and write to filesystems, but userspace utilities are required to format (&lt;code&gt;mkfs&lt;&#x2F;code&gt;), label, or repair (&lt;code&gt;fsck&lt;&#x2F;code&gt;) those volumes. Installing tools like &lt;code&gt;ntfs-3g&lt;&#x2F;code&gt; and &lt;code&gt;exfatprogs&lt;&#x2F;code&gt; ensures seamless read and write compatibility when connecting external drives or USB flash media from Windows and macOS environments.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;man-pages&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#man-pages&quot; aria-label=&quot;Anchor link for: man-pages&quot;&gt;🔗&lt;&#x2F;a&gt;Man Pages&lt;&#x2F;h2&gt;
&lt;p&gt;The local manual and documentation system. Installing these ensures you have complete offline technical references for shell commands, system calls, and configuration syntax. Without this, you will rely on the internet for every minor syntax query.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;man-db&lt;&#x2F;code&gt;, &lt;code&gt;man-pages&lt;&#x2F;code&gt;, &lt;code&gt;texinfo&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;man-db&lt;&#x2F;code&gt; provides the reading engine and manual indexing, while &lt;code&gt;man-pages&lt;&#x2F;code&gt; supplies the documentation for Linux system calls, C library functions, and kernel interfaces. A terminal-first workflow relies heavily on local documentation for immediate problem solving.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;time-synchronisation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#time-synchronisation&quot; aria-label=&quot;Anchor link for: time-synchronisation&quot;&gt;🔗&lt;&#x2F;a&gt;Time Synchronisation&lt;&#x2F;h2&gt;
&lt;p&gt;Network Time Protocol (NTP) daemons maintain accurate system clocks by querying external time servers. An uncalibrated clock causes HTTPS certificate validation failures, authentication token rejection, and inaccurate system logging.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;systemd-timesyncd&lt;&#x2F;code&gt;, &lt;code&gt;chrony&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;systemd-timesyncd&lt;&#x2F;code&gt; is already present on most Arch installations and handles lightweight, SNTP-based clock synchronisation perfectly for standard workstations. &lt;code&gt;chrony&lt;&#x2F;code&gt; is a robust alternative designed for hardware that frequently sleeps, disconnects from the network, or requires sub-millisecond precision.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;disk-encryption&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#disk-encryption&quot; aria-label=&quot;Anchor link for: disk-encryption&quot;&gt;🔗&lt;&#x2F;a&gt;Disk Encryption&lt;&#x2F;h2&gt;
&lt;p&gt;Cryptographic tools that secure physical storage volumes against unauthorised offline access. If you implement LUKS encryption during installation, &lt;code&gt;cryptsetup&lt;&#x2F;code&gt; manages container unlocking at boot.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;cryptsetup&lt;&#x2F;code&gt;, &lt;code&gt;lvm2&lt;&#x2F;code&gt;, &lt;code&gt;veracrypt&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;cryptsetup&lt;&#x2F;code&gt; provides the command-line interface for configuring LUKS (Linux Unified Key Setup) volumes, ensuring data remains unreadable without the correct decryption passphrase or keyfile. &lt;code&gt;lvm2&lt;&#x2F;code&gt; provides Logical Volume Management, allowing you to carve a single encrypted LUKS container into flexible, resizable logical volumes for root, home, swap, and system variable storage.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;2-display-compositor&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-display-compositor&quot; aria-label=&quot;Anchor link for: 2-display-compositor&quot;&gt;🔗&lt;&#x2F;a&gt;2. Display &amp;amp; Compositor&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;wayland-compositor&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#wayland-compositor&quot; aria-label=&quot;Anchor link for: wayland-compositor&quot;&gt;🔗&lt;&#x2F;a&gt;Wayland Compositor&lt;&#x2F;h2&gt;
&lt;p&gt;The core software managing window placement, input device routing, output display configurations, and graphical rendering. On a standard desktop environment like GNOME or KDE, the compositor is bundled in. On a standalone window manager setup, it is its own standalone package. On Wayland, the compositor functions simultaneously as the window manager and the display server.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;niri&lt;&#x2F;code&gt;, &lt;code&gt;sway&lt;&#x2F;code&gt;, &lt;code&gt;river&lt;&#x2F;code&gt;, &lt;code&gt;hyprland&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;niri&lt;&#x2F;code&gt; operates as a scrollable-tiling Wayland compositor designed for dynamic, keyboard-driven workflows, arranging windows in an infinite horizontal ribbon. &lt;code&gt;sway&lt;&#x2F;code&gt; provides a drop-in Wayland replacement for the i3 tiling window manager. &lt;code&gt;river&lt;&#x2F;code&gt; is a dynamic tiling compositor built around custom tags and programmable layout generators.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;display-manager-login-manager&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#display-manager-login-manager&quot; aria-label=&quot;Anchor link for: display-manager-login-manager&quot;&gt;🔗&lt;&#x2F;a&gt;Display Manager (Login Manager)&lt;&#x2F;h2&gt;
&lt;p&gt;A graphical or terminal-based login interface that authenticates user credentials and initialises the desktop session environment. While you can initiate a compositor directly from a terminal console using a shell script or session wrapper, a display manager automates the login sequence cleanly.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;ly&lt;&#x2F;code&gt;, &lt;code&gt;greetd&lt;&#x2F;code&gt; (with &lt;code&gt;tuigreet&lt;&#x2F;code&gt;), &lt;code&gt;sddm&lt;&#x2F;code&gt;, &lt;code&gt;gdm&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;ly&lt;&#x2F;code&gt; is a lightweight, TUI-based display manager that renders cleanly in the console without pulling in heavy graphical toolkit dependencies. &lt;code&gt;greetd&lt;&#x2F;code&gt; is a minimal, agnostic login daemon that pairs with greeters like &lt;code&gt;tuigreet&lt;&#x2F;code&gt; to provide a fast, terminal-styled authentication prompt.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;wayland-session-manager&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#wayland-session-manager&quot; aria-label=&quot;Anchor link for: wayland-session-manager&quot;&gt;🔗&lt;&#x2F;a&gt;Wayland Session Manager&lt;&#x2F;h2&gt;
&lt;p&gt;A utility that launches a Wayland compositor within a structured systemd user session. This ensures environment variables export correctly, D-Bus user buses initialise, and desktop portal services bind to the session cleanly.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;uwsm&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;uwsm&lt;&#x2F;code&gt; (Universal Wayland Session Manager) wraps the execution of Wayland compositors into dedicated systemd scope units. This solves longstanding race conditions where desktop portals, audio servers, and authentication agents fail to start because they cannot locate the active display server socket or D-Bus session variables.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;xdg-desktop-portal&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#xdg-desktop-portal&quot; aria-label=&quot;Anchor link for: xdg-desktop-portal&quot;&gt;🔗&lt;&#x2F;a&gt;XDG Desktop Portal&lt;&#x2F;h2&gt;
&lt;p&gt;Standardised D-Bus interfaces enabling sandboxed applications and native Wayland programs to access desktop integration features safely. Portals handle screen sharing, file selection dialogs, camera access, and URI opening. A standard deployment requires a desktop-specific portal alongside a GUI toolkit fallback.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;xdg-desktop-portal-gnome&lt;&#x2F;code&gt;, &lt;code&gt;xdg-desktop-portal-gtk&lt;&#x2F;code&gt;, &lt;code&gt;xdg-desktop-portal-wlr&lt;&#x2F;code&gt;, &lt;code&gt;xdg-desktop-portal-hyprland&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Without the correct desktop portals running, web browsers cannot capture your screen during video calls, applications cannot spawn native file saving dialogs, and Flatpak software remains completely isolated from system services. You typically install the portal matching your compositor ecosystem alongside &lt;code&gt;xdg-desktop-portal-gtk&lt;&#x2F;code&gt; as a universal fallback for GTK-based applications.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;xwayland&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#xwayland&quot; aria-label=&quot;Anchor link for: xwayland&quot;&gt;🔗&lt;&#x2F;a&gt;XWayland&lt;&#x2F;h2&gt;
&lt;p&gt;An X11 server running as a Wayland client. It provides backwards compatibility for legacy applications that lack native Wayland support, allowing them to render inside your compositor.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;xwayland&lt;&#x2F;code&gt;, &lt;code&gt;xorg-xwayland&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; While most modern Linux software is Wayland-native, older proprietary binaries, specific video games, and legacy development tools still rely on the X11 rendering protocol. &lt;code&gt;xwayland&lt;&#x2F;code&gt; translates those X11 drawing commands into Wayland surfaces seamlessly, preventing application crashes and rendering failures.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;gpu-drivers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#gpu-drivers&quot; aria-label=&quot;Anchor link for: gpu-drivers&quot;&gt;🔗&lt;&#x2F;a&gt;GPU Drivers&lt;&#x2F;h2&gt;
&lt;p&gt;User-space graphics drivers and graphics API implementations (OpenGL and Vulkan) that allow applications to utilise hardware rendering. Without these libraries, the system falls back to software rendering, resulting in high CPU usage and severe visual latency.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;mesa&lt;&#x2F;code&gt;, &lt;code&gt;vulkan-intel&lt;&#x2F;code&gt;, &lt;code&gt;intel-media-driver&lt;&#x2F;code&gt;, &lt;code&gt;vulkan-radeon&lt;&#x2F;code&gt;, &lt;code&gt;nvidia&lt;&#x2F;code&gt;, &lt;code&gt;nvidia-utils&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;mesa&lt;&#x2F;code&gt; provides the open-source OpenGL and Vulkan implementations for AMD and Intel graphics hardware. For Intel integrated GPUs, &lt;code&gt;vulkan-intel&lt;&#x2F;code&gt; delivers low-level Vulkan API access. Without these user-space drivers installed, your window compositor will struggle to composite windows smoothly, and graphical applications will render at a crawl.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;video-acceleration&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#video-acceleration&quot; aria-label=&quot;Anchor link for: video-acceleration&quot;&gt;🔗&lt;&#x2F;a&gt;Video Acceleration&lt;&#x2F;h2&gt;
&lt;p&gt;Hardware-accelerated video encoding and decoding libraries. Offloading video decoding to the integrated or discrete graphics unit reduces CPU thermal load and significantly extends laptop battery autonomy.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;intel-media-driver&lt;&#x2F;code&gt;, &lt;code&gt;libva-mesa-driver&lt;&#x2F;code&gt;, &lt;code&gt;libva-utils&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When streaming video or playing high-resolution media files, hardware acceleration routes the decoding workload directly to dedicated ASIC chips on the GPU. &lt;code&gt;intel-media-driver&lt;&#x2F;code&gt; provides VA-API support for modern Intel integrated graphics (Broadwell and newer). &lt;code&gt;libva-utils&lt;&#x2F;code&gt; includes the &lt;code&gt;vainfo&lt;&#x2F;code&gt; command-line diagnostic tool, used to verify that the system correctly recognises your video decoding hardware.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;display-configuration-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#display-configuration-utilities&quot; aria-label=&quot;Anchor link for: display-configuration-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Display Configuration Utilities&lt;&#x2F;h2&gt;
&lt;p&gt;Tools for managing display resolutions, monitor positioning, refresh rates, and scaling factors. While compositors manage outputs natively via their config files, utility software aids in debugging complex multi-monitor layouts or automating profile switching.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;wdisplays&lt;&#x2F;code&gt;, &lt;code&gt;kanshi&lt;&#x2F;code&gt;, &lt;code&gt;nwg-displays&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;wdisplays&lt;&#x2F;code&gt; provides a graphical interface similar to standard display settings panels, allowing you to drag and arrange display outputs visually. &lt;code&gt;kanshi&lt;&#x2F;code&gt; is a background daemon that monitors connected display outputs and automatically applies pre-configured monitor profiles when you dock or undock a laptop from external monitors.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;3-desktop-environment-components&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-desktop-environment-components&quot; aria-label=&quot;Anchor link for: 3-desktop-environment-components&quot;&gt;🔗&lt;&#x2F;a&gt;3. Desktop Environment Components&lt;&#x2F;h1&gt;
&lt;p&gt;Standalone window managers and compositors require you to assemble the functional desktop environment independently by linking modular utilities together.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;status-bar-panel&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#status-bar-panel&quot; aria-label=&quot;Anchor link for: status-bar-panel&quot;&gt;🔗&lt;&#x2F;a&gt;Status Bar (Panel)&lt;&#x2F;h2&gt;
&lt;p&gt;A persistent visual interface displaying system diagnostics, active workspaces, clock telemetry, battery percentages, and network state. Wayland bars communicate directly with the compositor via IPC protocols.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;waybar&lt;&#x2F;code&gt;, &lt;code&gt;eww&lt;&#x2F;code&gt;, &lt;code&gt;yambar&lt;&#x2F;code&gt;, &lt;code&gt;ironbar&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;waybar&lt;&#x2F;code&gt; is the standard, highly configurable Wayland panel styled using CSS and JSON. It integrates natively with custom modules and scripts. &lt;code&gt;eww&lt;&#x2F;code&gt; (Elkowars Wacky Widgets) allows you to construct complex, custom widget layouts using an XML-like configuration syntax. &lt;code&gt;yambar&lt;&#x2F;code&gt; offers a minimalistic, lightweight alternative configured via simple YAML files.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;application-launcher&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#application-launcher&quot; aria-label=&quot;Anchor link for: application-launcher&quot;&gt;🔗&lt;&#x2F;a&gt;Application Launcher&lt;&#x2F;h2&gt;
&lt;p&gt;A dynamic, keyboard-driven menu system used to execute binaries, search local directories, or switch between active window states. Without one, you either open a terminal for every command or bind every application to a rigid keyboard shortcut.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;fuzzel&lt;&#x2F;code&gt;, &lt;code&gt;wofi&lt;&#x2F;code&gt;, &lt;code&gt;tofi&lt;&#x2F;code&gt;, &lt;code&gt;rofi-wayland&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;fuzzel&lt;&#x2F;code&gt; is an extremely fast, lightweight Wayland-native launcher designed specifically for keyboard efficiency and low resource usage. &lt;code&gt;rofi-wayland&lt;&#x2F;code&gt; is a Wayland-ported fork of the classic &lt;code&gt;rofi&lt;&#x2F;code&gt; utility, offering extensive theming capabilities, custom script modes, and clipboard history browsing integration.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;notification-daemon&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#notification-daemon&quot; aria-label=&quot;Anchor link for: notification-daemon&quot;&gt;🔗&lt;&#x2F;a&gt;Notification Daemon&lt;&#x2F;h2&gt;
&lt;p&gt;A background service that receives, formats, and displays visual notifications sent by desktop applications over D-Bus. Without a notification daemon, desktop alerts are silently dropped by the system.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;mako&lt;&#x2F;code&gt;, &lt;code&gt;swaync&lt;&#x2F;code&gt;, &lt;code&gt;dunst&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;mako&lt;&#x2F;code&gt; is a lightweight, Wayland-native notification daemon designed to render clean popups on lightweight compositors. &lt;code&gt;swaync&lt;&#x2F;code&gt; (Sway Notification Center) replaces simple popups with a full GTK-based notification drawer, providing action buttons, do-not-disturb toggles, and widget support.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;screen-lock&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#screen-lock&quot; aria-label=&quot;Anchor link for: screen-lock&quot;&gt;🔗&lt;&#x2F;a&gt;Screen Lock&lt;&#x2F;h2&gt;
&lt;p&gt;Security software that intercepts user input and renders an authentication prompt over the display outputs when the workstation is left unattended. The lock screen sits between your unattended machine and anyone who walks up to it.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;swaylock&lt;&#x2F;code&gt;, &lt;code&gt;swaylock-effects&lt;&#x2F;code&gt;, &lt;code&gt;waylock&lt;&#x2F;code&gt;, &lt;code&gt;hyprlock&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;swaylock&lt;&#x2F;code&gt; is the standard Wayland screen locking utility, binding directly to Wayland secure input protocols to prevent unauthorized session access. &lt;code&gt;swaylock-effects&lt;&#x2F;code&gt; extends the base package by adding visual features such as real-time desktop blurring, clock rendering, and custom screenshots.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;idle-daemon&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#idle-daemon&quot; aria-label=&quot;Anchor link for: idle-daemon&quot;&gt;🔗&lt;&#x2F;a&gt;Idle Daemon&lt;&#x2F;h2&gt;
&lt;p&gt;A background monitoring service that executes scheduled commands after defined periods of user inactivity, such as dimming displays, triggering the screen locker, or suspending hardware.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;swayidle&lt;&#x2F;code&gt;, &lt;code&gt;hypridle&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;swayidle&lt;&#x2F;code&gt; listens to Wayland input events and executes shell commands when timers expire. It is typically configured to lock the screen after five minutes of inactivity, power down display monitors after ten minutes, and suspend the workstation after thirty minutes, protecting both machine security and battery life.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;wallpaper-setter&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#wallpaper-setter&quot; aria-label=&quot;Anchor link for: wallpaper-setter&quot;&gt;🔗&lt;&#x2F;a&gt;Wallpaper Setter&lt;&#x2F;h2&gt;
&lt;p&gt;Wayland-native background utilities designed to render static images or solid colours onto the root desktop surface. X11 wallpaper utilities will not function inside a Wayland environment.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;swaybg&lt;&#x2F;code&gt;, &lt;code&gt;swww&lt;&#x2F;code&gt;, &lt;code&gt;mpvpaper&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;swaybg&lt;&#x2F;code&gt; is a lightweight, efficient utility that scales and renders background images with negligible system overhead. &lt;code&gt;swww&lt;&#x2F;code&gt; offers dynamic, animated wallpaper transitions using custom shaders. &lt;code&gt;mpvpaper&lt;&#x2F;code&gt; allows you to set running video files as your live background by rendering the output of the &lt;code&gt;mpv&lt;&#x2F;code&gt; media player directly onto the desktop surface.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;polkit-authentication-agent&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#polkit-authentication-agent&quot; aria-label=&quot;Anchor link for: polkit-authentication-agent&quot;&gt;🔗&lt;&#x2F;a&gt;Polkit Authentication Agent&lt;&#x2F;h2&gt;
&lt;p&gt;An interactive graphical prompt triggered when an unprivileged user process requests elevated system permissions (such as mounting internal drives or modifying network profiles). Without one, GUI privilege escalation requests fail silently.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;polkit-gnome&lt;&#x2F;code&gt;, &lt;code&gt;polkit-kde-agent&lt;&#x2F;code&gt;, &lt;code&gt;hyprpolkitagent&lt;&#x2F;code&gt;, &lt;code&gt;lxqt-policykit&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Polkit acts as the system-wide authorization manager. When a standard desktop application needs to perform an administrative task without invoking &lt;code&gt;sudo&lt;&#x2F;code&gt; in a terminal, it calls Polkit. The authentication agent catches this request and presents a password dialog window, allowing secure privilege escalation.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;keyring-secret-storage&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#keyring-secret-storage&quot; aria-label=&quot;Anchor link for: keyring-secret-storage&quot;&gt;🔗&lt;&#x2F;a&gt;Keyring (Secret Storage)&lt;&#x2F;h2&gt;
&lt;p&gt;An encrypted local credential store implementing the Freedesktop Secret Service API. Web browsers, email clients, and development tools rely on this daemon to store authentication tokens securely without writing plaintext files to disk.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;gnome-keyring&lt;&#x2F;code&gt;, &lt;code&gt;keepassxc&lt;&#x2F;code&gt;, &lt;code&gt;seahorse&lt;&#x2F;code&gt;, &lt;code&gt;libsecret&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; If your system lacks an active secret service daemon, applications like Firefox, Thunderbird, and Git credential helpers will repeatedly prompt for passwords on every launch, or fail to save OAuth tokens entirely. &lt;code&gt;gnome-keyring&lt;&#x2F;code&gt; runs silently in the background, unlocking automatically when you log into your system session. &lt;code&gt;keepassxc&lt;&#x2F;code&gt; can also act as the system secret service, routing all authentication storage directly into your primary password database.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;clipboard-manager&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#clipboard-manager&quot; aria-label=&quot;Anchor link for: clipboard-manager&quot;&gt;🔗&lt;&#x2F;a&gt;Clipboard Manager&lt;&#x2F;h2&gt;
&lt;p&gt;Wayland buffers clear clipboard contents immediately upon closing the source application. A clipboard manager daemonizes running copy events, preserving history in memory and providing search access to previously copied text or images.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;cliphist&lt;&#x2F;code&gt;, &lt;code&gt;clipman&lt;&#x2F;code&gt;, &lt;code&gt;wl-clipboard&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;wl-clipboard&lt;&#x2F;code&gt; provides the underlying command-line tools (&lt;code&gt;wl-copy&lt;&#x2F;code&gt; and &lt;code&gt;wl-paste&lt;&#x2F;code&gt;) required to interact with the Wayland clipboard from shell scripts and terminal applications. &lt;code&gt;cliphist&lt;&#x2F;code&gt; works alongside &lt;code&gt;wl-clipboard&lt;&#x2F;code&gt; by recording every copied text string or image surface into a local database, which you can subsequently query and paste using application launchers like &lt;code&gt;rofi&lt;&#x2F;code&gt; or &lt;code&gt;fuzzel&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;screenshot-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#screenshot-utilities&quot; aria-label=&quot;Anchor link for: screenshot-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Screenshot Utilities&lt;&#x2F;h2&gt;
&lt;p&gt;Software leveraging Wayland screencopy protocols to capture full screen outputs, specific windows, or defined graphical coordinates.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;grim&lt;&#x2F;code&gt;, &lt;code&gt;slurp&lt;&#x2F;code&gt;, &lt;code&gt;swappy&lt;&#x2F;code&gt;, &lt;code&gt;hyprshot&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Traditional X11 screenshot tools cannot grab Wayland surfaces due to strict graphical protocol sandboxing. &lt;code&gt;grim&lt;&#x2F;code&gt; (Grab Images) communicates directly with the compositor to capture visual buffers. It is almost always paired with &lt;code&gt;slurp&lt;&#x2F;code&gt;, an interactive command-line utility that lets you click and drag a selection rectangle across the screen to feed precise coordinates back into &lt;code&gt;grim&lt;&#x2F;code&gt;. &lt;code&gt;swappy&lt;&#x2F;code&gt; acts as a post-capture annotation tool, popping up automatically to let you draw arrows, highlight text, and crop screenshots before saving or copying them.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;screen-recorder&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#screen-recorder&quot; aria-label=&quot;Anchor link for: screen-recorder&quot;&gt;🔗&lt;&#x2F;a&gt;Screen Recorder&lt;&#x2F;h2&gt;
&lt;p&gt;Video capture software utilising Wayland desktop portals or direct protocol access to record desktop activity to media files.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;wf-recorder&lt;&#x2F;code&gt;, &lt;code&gt;gpu-screen-recorder&lt;&#x2F;code&gt;, &lt;code&gt;obs-studio&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;wf-recorder&lt;&#x2F;code&gt; is a command-line utility that captures video feeds from Wayland compositors using the &lt;code&gt;wlr-screencopy&lt;&#x2F;code&gt; protocol, encoding streams directly via FFmpeg. &lt;code&gt;gpu-screen-recorder&lt;&#x2F;code&gt; leverages hardware-accelerated NVENC, VA-API, or QuickSync encoding paths to record screen output with almost zero impact on system CPU resources.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;colour-picker&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#colour-picker&quot; aria-label=&quot;Anchor link for: colour-picker&quot;&gt;🔗&lt;&#x2F;a&gt;Colour Picker&lt;&#x2F;h2&gt;
&lt;p&gt;A lightweight utility that samples pixel colour values from the display output and formats them as hexadecimal or RGB strings for theming workflows.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;hyprpicker&lt;&#x2F;code&gt;, &lt;code&gt;wl-color-picker&lt;&#x2F;code&gt;, &lt;code&gt;gpick&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When modifying window manager border colours, terminal colour palettes, or web CSS files, a Wayland-native colour picker allows you to freeze the screen cursor and extract precise hex codes from any visible pixel on your monitors.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;on-screen-display-osd&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#on-screen-display-osd&quot; aria-label=&quot;Anchor link for: on-screen-display-osd&quot;&gt;🔗&lt;&#x2F;a&gt;On-Screen Display (OSD)&lt;&#x2F;h2&gt;
&lt;p&gt;Visual overlay indicators triggered during hardware state modifications, such as adjusting audio volume, muting microphones, or changing backlight levels.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;swayosd&lt;&#x2F;code&gt;, &lt;code&gt;avizo&lt;&#x2F;code&gt;, &lt;code&gt;libnotify&lt;&#x2F;code&gt; scripts via &lt;code&gt;notify-send&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When pressing keyboard media keys to adjust system speaker volume or monitor brightness, an OSD provides immediate visual confirmation of the new hardware state. Without this visual feedback, you are adjusting system levels completely blind.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;4-audio&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-audio&quot; aria-label=&quot;Anchor link for: 4-audio&quot;&gt;🔗&lt;&#x2F;a&gt;4. Audio&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;audio-server&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#audio-server&quot; aria-label=&quot;Anchor link for: audio-server&quot;&gt;🔗&lt;&#x2F;a&gt;Audio Server&lt;&#x2F;h2&gt;
&lt;p&gt;The low-level audio processing engine bridging application hardware requests with the Linux kernel sound subsystem (ALSA). PipeWire handles dynamic audio routing, Bluetooth sink management, and low-latency professional audio processing while providing full backwards compatibility for PulseAudio and JACK applications.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;pipewire&lt;&#x2F;code&gt;, &lt;code&gt;pipewire-pulse&lt;&#x2F;code&gt;, &lt;code&gt;pipewire-alsa&lt;&#x2F;code&gt;, &lt;code&gt;pipewire-jack&lt;&#x2F;code&gt;, &lt;code&gt;wireplumber&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; PipeWire has completely replaced legacy PulseAudio on modern Linux systems. It unifies consumer audio playback with professional, low-latency audio production. &lt;code&gt;wireplumber&lt;&#x2F;code&gt; acts as the mandatory session and policy manager for PipeWire, handling device connection rules, volume persistence, and audio routing profiles. Installing &lt;code&gt;pipewire-pulse&lt;&#x2F;code&gt; and &lt;code&gt;pipewire-alsa&lt;&#x2F;code&gt; ensures legacy software seamlessly outputs audio without modification.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;volume-control-mixer&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#volume-control-mixer&quot; aria-label=&quot;Anchor link for: volume-control-mixer&quot;&gt;🔗&lt;&#x2F;a&gt;Volume Control (Mixer)&lt;&#x2F;h2&gt;
&lt;p&gt;Graphical or terminal interfaces for routing application audio streams, selecting input hardware, and adjusting channel gain levels.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;pavucontrol&lt;&#x2F;code&gt; (GUI), &lt;code&gt;pulsemixer&lt;&#x2F;code&gt; (TUI), &lt;code&gt;pamixer&lt;&#x2F;code&gt; (CLI), &lt;code&gt;wpctl&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; While the audio server runs invisibly in the background, mixer utilities provide the controls required to mute specific application tabs, switch audio output from internal laptop speakers to Bluetooth headphones, and boost microphone input levels. &lt;code&gt;pavucontrol&lt;&#x2F;code&gt; is the gold-standard graphical mixer, while &lt;code&gt;pulsemixer&lt;&#x2F;code&gt; provides an efficient, ncurses-based interface for terminal-first workflows. &lt;code&gt;wpctl&lt;&#x2F;code&gt; is the native command-line tool for WirePlumber, perfect for binding volume adjustments to keyboard media keys.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;5-networking&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#5-networking&quot; aria-label=&quot;Anchor link for: 5-networking&quot;&gt;🔗&lt;&#x2F;a&gt;5. Networking&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;network-manager&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#network-manager&quot; aria-label=&quot;Anchor link for: network-manager&quot;&gt;🔗&lt;&#x2F;a&gt;Network Manager&lt;&#x2F;h2&gt;
&lt;p&gt;System daemons managing network interfaces, wireless authentication, DHCP leases, and routing tables.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;networkmanager&lt;&#x2F;code&gt;, &lt;code&gt;iwd&lt;&#x2F;code&gt;, &lt;code&gt;connman&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;networkmanager&lt;&#x2F;code&gt; is the robust, industry-standard daemon that handles wired ethernet, complex Wi-Fi authentication (WPA2&#x2F;WPA3, 802.1x), and network bridging automatically. &lt;code&gt;iwd&lt;&#x2F;code&gt; (iNet Wireless Daemon) is a modern, lightweight wireless daemon developed by Intel that can operate as a standalone Wi-Fi backend for NetworkManager, replacing legacy &lt;code&gt;wpa_supplicant&lt;&#x2F;code&gt; with significantly faster scanning and connection speeds.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;network-manager-frontend&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#network-manager-frontend&quot; aria-label=&quot;Anchor link for: network-manager-frontend&quot;&gt;🔗&lt;&#x2F;a&gt;Network Manager Frontend&lt;&#x2F;h2&gt;
&lt;p&gt;User-space applications providing interfaces to manage Wi-Fi connections and stored network profiles without manual command-line configuration.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;nm-applet&lt;&#x2F;code&gt;, &lt;code&gt;nmtui&lt;&#x2F;code&gt;, &lt;code&gt;networkmanager-dmenu&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; While NetworkManager runs as a system daemon, frontends provide ergonomic ways to interact with it. &lt;code&gt;nmtui&lt;&#x2F;code&gt; provides an intuitive text-user interface inside the terminal for selecting Wi-Fi networks and editing static IP tables. &lt;code&gt;nm-applet&lt;&#x2F;code&gt; sits in your Wayland status bar tray, offering quick graphical access to network toggles.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;dns-resolver&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#dns-resolver&quot; aria-label=&quot;Anchor link for: dns-resolver&quot;&gt;🔗&lt;&#x2F;a&gt;DNS Resolver&lt;&#x2F;h2&gt;
&lt;p&gt;Services managing domain name translation. Configuring local caching resolvers or encrypted protocols (DNS-over-HTTPS or DNS-over-TLS) prevents ISP DNS tampering and query interception.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;systemd-resolved&lt;&#x2F;code&gt;, &lt;code&gt;dnscrypt-proxy&lt;&#x2F;code&gt;, &lt;code&gt;stubby&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; By default, standard DNS queries are transmitted in plain text, allowing network eavesdroppers or internet service providers to log your browsing destinations. &lt;code&gt;systemd-resolved&lt;&#x2F;code&gt; provides local DNS caching and native DNS-over-TLS validation out of the box. &lt;code&gt;dnscrypt-proxy&lt;&#x2F;code&gt; routes all system domain lookups through encrypted DNSCrypt or DoH relays, ensuring complete query privacy.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;vpn-client&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vpn-client&quot; aria-label=&quot;Anchor link for: vpn-client&quot;&gt;🔗&lt;&#x2F;a&gt;VPN Client&lt;&#x2F;h2&gt;
&lt;p&gt;Software creating encrypted network tunnels to remote infrastructure or privacy providers.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;wireguard-tools&lt;&#x2F;code&gt;, &lt;code&gt;openvpn&lt;&#x2F;code&gt;, &lt;code&gt;networkmanager-openvpn&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;wireguard-tools&lt;&#x2F;code&gt; provides the userspace utilities (&lt;code&gt;wg&lt;&#x2F;code&gt;, &lt;code&gt;wg-quick&lt;&#x2F;code&gt;) required to configure WireGuard, a modern, extremely fast kernel-space VPN protocol utilizing state-of-the-art cryptography. &lt;code&gt;openvpn&lt;&#x2F;code&gt; remains necessary for connecting to legacy corporate networks and traditional commercial VPN providers.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;firewall&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#firewall&quot; aria-label=&quot;Anchor link for: firewall&quot;&gt;🔗&lt;&#x2F;a&gt;Firewall&lt;&#x2F;h2&gt;
&lt;p&gt;Packet filtering interfaces regulating incoming and outgoing network traffic at the kernel level.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;ufw&lt;&#x2F;code&gt;, &lt;code&gt;nftables&lt;&#x2F;code&gt;, &lt;code&gt;iptables-nft&lt;&#x2F;code&gt;, &lt;code&gt;gufw&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The Linux kernel includes &lt;code&gt;nftables&lt;&#x2F;code&gt; as its modern packet filtering framework. Directly editing raw &lt;code&gt;nftables&lt;&#x2F;code&gt; rules can be complex; &lt;code&gt;ufw&lt;&#x2F;code&gt; (Uncomplicated Firewall) provides a simplified command-line interface for establishing default-deny incoming policies and opening specific network ports safely.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;remote-access-daemons&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#remote-access-daemons&quot; aria-label=&quot;Anchor link for: remote-access-daemons&quot;&gt;🔗&lt;&#x2F;a&gt;Remote Access Daemons&lt;&#x2F;h2&gt;
&lt;p&gt;Secure Shell server and client utilities for remote command execution and encrypted file transfer.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;openssh&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;openssh&lt;&#x2F;code&gt; provides the &lt;code&gt;ssh&lt;&#x2F;code&gt; client tool required to access remote servers, git repositories, and headless hardware. Enabling the included &lt;code&gt;sshd&lt;&#x2F;code&gt; daemon allows secure remote administration of your local machine over encrypted network sockets.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;anonymity-networks&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#anonymity-networks&quot; aria-label=&quot;Anchor link for: anonymity-networks&quot;&gt;🔗&lt;&#x2F;a&gt;Anonymity Networks&lt;&#x2F;h2&gt;
&lt;p&gt;Software routing TCP traffic through distributed network relays to obfuscate origin IP addresses.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;tor&lt;&#x2F;code&gt;, &lt;code&gt;torsocks&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The &lt;code&gt;tor&lt;&#x2F;code&gt; daemon establishes multi-hop onion routing circuits across globally distributed volunteer nodes. The &lt;code&gt;torsocks&lt;&#x2F;code&gt; utility wraps standard command-line applications (&lt;code&gt;curl&lt;&#x2F;code&gt;, &lt;code&gt;ssh&lt;&#x2F;code&gt;, &lt;code&gt;git&lt;&#x2F;code&gt;), forcing their TCP connections transparently through the Tor proxy network to prevent IP address leaks.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;network-diagnostics&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#network-diagnostics&quot; aria-label=&quot;Anchor link for: network-diagnostics&quot;&gt;🔗&lt;&#x2F;a&gt;Network Diagnostics&lt;&#x2F;h2&gt;
&lt;p&gt;Utilities used to inspect routing paths, test port reachability, query DNS servers, and measure link throughput.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;nmap&lt;&#x2F;code&gt;, &lt;code&gt;traceroute&lt;&#x2F;code&gt;, &lt;code&gt;iperf3&lt;&#x2F;code&gt;, &lt;code&gt;bind&lt;&#x2F;code&gt;, &lt;code&gt;openbsd-netcat&lt;&#x2F;code&gt;, &lt;code&gt;tcpdump&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When networking breaks, basic &lt;code&gt;ping&lt;&#x2F;code&gt; commands are rarely enough. &lt;code&gt;nmap&lt;&#x2F;code&gt; scans network targets for open ports and listening services. &lt;code&gt;iperf3&lt;&#x2F;code&gt; measures maximum real-world bandwidth between two network endpoints. The &lt;code&gt;bind&lt;&#x2F;code&gt; package supplies &lt;code&gt;dig&lt;&#x2F;code&gt; and &lt;code&gt;nslookup&lt;&#x2F;code&gt;, essential CLI tools for diagnosing domain name propagation and interrogating DNS records. &lt;code&gt;openbsd-netcat&lt;&#x2F;code&gt; (&lt;code&gt;nc&lt;&#x2F;code&gt;) is the Swiss-Army knife of networking, capable of reading and writing arbitrary TCP and UDP data streams for socket debugging.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;6-input-hardware&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#6-input-hardware&quot; aria-label=&quot;Anchor link for: 6-input-hardware&quot;&gt;🔗&lt;&#x2F;a&gt;6. Input &amp;amp; Hardware&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;input-remapper&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#input-remapper&quot; aria-label=&quot;Anchor link for: input-remapper&quot;&gt;🔗&lt;&#x2F;a&gt;Input Remapper&lt;&#x2F;h2&gt;
&lt;p&gt;System daemons intercepting kernel input events to reassign key codes, modify modifier behaviors, or implement custom layers across all attached keyboards and pointing devices.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;keyd&lt;&#x2F;code&gt;, &lt;code&gt;xremap&lt;&#x2F;code&gt;, &lt;code&gt;interception-tools&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; System-level input remappers operate directly on kernel &lt;code&gt;&#x2F;dev&#x2F;input&#x2F;event*&lt;&#x2F;code&gt; devices, making your custom keyboard mappings universal across console TTYs, Wayland compositors, and X11 fallback applications. &lt;code&gt;keyd&lt;&#x2F;code&gt; allows you to effortlessly map CapsLock to Control when held and Escape when tapped, or construct custom ergonomic navigation layers without requiring QMK hardware programmable keyboards.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;brightness-control&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#brightness-control&quot; aria-label=&quot;Anchor link for: brightness-control&quot;&gt;🔗&lt;&#x2F;a&gt;Brightness Control&lt;&#x2F;h2&gt;
&lt;p&gt;Command-line utilities adjusting display backlight brightness via sysfs hardware interfaces.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;brightnessctl&lt;&#x2F;code&gt;, &lt;code&gt;light&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Standard user accounts lack direct write permissions to &lt;code&gt;&#x2F;sys&#x2F;class&#x2F;backlight&#x2F;&lt;&#x2F;code&gt; kernel controls. &lt;code&gt;brightnessctl&lt;&#x2F;code&gt; safely interfaces with these hardware nodes, allowing you to bind display brightness increase and decrease commands directly to laptop function keys inside your compositor configuration.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;fingerprint-reader&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#fingerprint-reader&quot; aria-label=&quot;Anchor link for: fingerprint-reader&quot;&gt;🔗&lt;&#x2F;a&gt;Fingerprint Reader&lt;&#x2F;h2&gt;
&lt;p&gt;Hardware drivers and PAM integration daemons enabling biometric authentication for login, screen unlocking, and privilege escalation.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;fprintd&lt;&#x2F;code&gt;, &lt;code&gt;libfprint&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; If your hardware includes an integrated fingerprint sensor, &lt;code&gt;libfprint&lt;&#x2F;code&gt; provides the necessary hardware communication drivers. The &lt;code&gt;fprintd&lt;&#x2F;code&gt; daemon integrates this functionality into the Pluggable Authentication Module (PAM) architecture, allowing you to authenticate &lt;code&gt;sudo&lt;&#x2F;code&gt; commands, unlock your screen locker, and log into your display manager with a finger scan.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;power-management&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#power-management&quot; aria-label=&quot;Anchor link for: power-management&quot;&gt;🔗&lt;&#x2F;a&gt;Power Management&lt;&#x2F;h2&gt;
&lt;p&gt;Automated system services optimising laptop power consumption by regulating CPU frequency scaling, PCI bus power states, and Wi-Fi radio power management.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;tlp&lt;&#x2F;code&gt;, &lt;code&gt;tlp-rdw&lt;&#x2F;code&gt;, &lt;code&gt;powertop&lt;&#x2F;code&gt;, &lt;code&gt;auto-cpufreq&lt;&#x2F;code&gt;, &lt;code&gt;power-profiles-daemon&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Out of the box, Linux kernel default power settings prioritise hardware compatibility over maximum battery conservation. &lt;code&gt;tlp&lt;&#x2F;code&gt; operates as an automated background daemon that dynamically tunes USB autosuspend rules, PCIe Active State Power Management (ASPM), and processor scaling governors based on whether the machine is connected to AC power or running on battery. &lt;code&gt;powertop&lt;&#x2F;code&gt; is an interactive diagnostic tool by Intel that breaks down real-time power consumption by process and hardware bus.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;bluetooth-stack&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#bluetooth-stack&quot; aria-label=&quot;Anchor link for: bluetooth-stack&quot;&gt;🔗&lt;&#x2F;a&gt;Bluetooth Stack&lt;&#x2F;h2&gt;
&lt;p&gt;The core hardware daemons and pairing managers required to operate Bluetooth interfaces and peripheral devices.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;bluez&lt;&#x2F;code&gt;, &lt;code&gt;bluez-utils&lt;&#x2F;code&gt;, &lt;code&gt;blueman&lt;&#x2F;code&gt;, &lt;code&gt;bluetui&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;bluez&lt;&#x2F;code&gt; is the official Linux Bluetooth protocol stack daemon (&lt;code&gt;bluetoothd&lt;&#x2F;code&gt;). The &lt;code&gt;bluez-utils&lt;&#x2F;code&gt; package supplies &lt;code&gt;bluetoothctl&lt;&#x2F;code&gt;, the interactive command-line utility used to scan, pair, trust, and connect wireless headsets, mice, and keyboards. &lt;code&gt;blueman&lt;&#x2F;code&gt; provides a full graphical management panel, while &lt;code&gt;bluetui&lt;&#x2F;code&gt; offers a fast terminal interface for managing wireless devices.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;storage-diagnostics&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#storage-diagnostics&quot; aria-label=&quot;Anchor link for: storage-diagnostics&quot;&gt;🔗&lt;&#x2F;a&gt;Storage Diagnostics&lt;&#x2F;h2&gt;
&lt;p&gt;Monitoring utilities querying drive firmware for S.M.A.R.T. telemetry to identify failing NVMe or SATA storage blocks before catastrophic data loss occurs.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;smartmontools&lt;&#x2F;code&gt;, &lt;code&gt;nvme-cli&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Solid-state drives and mechanical disks track internal wear leveling, reallocation event counts, and temperature logs within their onboard controllers. The &lt;code&gt;smartmontools&lt;&#x2F;code&gt; package provides &lt;code&gt;smartctl&lt;&#x2F;code&gt;, which queries this Self-Monitoring, Analysis, and Reporting Technology data, allowing you to identify hardware degradation and replace storage media before read&#x2F;write failures occur. For NVMe storage arrays, &lt;code&gt;nvme-cli&lt;&#x2F;code&gt; communicates directly with controller registers to format drives, update controller firmware, and inspect health logs.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;7-theming-appearance&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#7-theming-appearance&quot; aria-label=&quot;Anchor link for: 7-theming-appearance&quot;&gt;🔗&lt;&#x2F;a&gt;7. Theming &amp;amp; Appearance&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;fonts&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#fonts&quot; aria-label=&quot;Anchor link for: fonts&quot;&gt;🔗&lt;&#x2F;a&gt;Fonts&lt;&#x2F;h2&gt;
&lt;p&gt;A complete typographic stack requires distinct categories to handle code rendering, UI layouts, document reading, and iconography correctly.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monospace (Nerd Font patched):&lt;&#x2F;strong&gt; &lt;code&gt;ttf-jetbrains-mono-nerd&lt;&#x2F;code&gt;, &lt;code&gt;ttf-firacode-nerd&lt;&#x2F;code&gt;, &lt;code&gt;ttf-hack-nerd&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Sans-Serif (Interface):&lt;&#x2F;strong&gt; &lt;code&gt;inter-font&lt;&#x2F;code&gt;, &lt;code&gt;noto-fonts&lt;&#x2F;code&gt;, &lt;code&gt;ttf-ubuntu-font-family&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Serif (Documents):&lt;&#x2F;strong&gt; &lt;code&gt;adobe-source-serif-fonts&lt;&#x2F;code&gt;, &lt;code&gt;noto-serif&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Emoji:&lt;&#x2F;strong&gt; &lt;code&gt;noto-fonts-emoji&lt;&#x2F;code&gt;, &lt;code&gt;ttf-twemoji&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Font Management:&lt;&#x2F;strong&gt; &lt;code&gt;font-manager&lt;&#x2F;code&gt;, &lt;code&gt;fontconfig&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Terminal emulators and text editors require fixed-width Monospace fonts. Patching these fonts with &quot;Nerd Font&quot; glyphs embeds thousands of custom icons into the typography, ensuring status bars (&lt;code&gt;waybar&lt;&#x2F;code&gt;), directory listings (&lt;code&gt;eza&lt;&#x2F;code&gt;), and shell prompts (&lt;code&gt;starship&lt;&#x2F;code&gt;) render visual icons correctly rather than broken rectangle characters. Sans-Serif fonts govern graphical application interfaces and web rendering, while Serif fonts provide optimal readability for long-form PDF document viewing and word processing. Installing &lt;code&gt;noto-fonts-emoji&lt;&#x2F;code&gt; prevents web browsers and messaging clients from rendering missing emoji glyphs as empty boxes.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;icon-theme&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#icon-theme&quot; aria-label=&quot;Anchor link for: icon-theme&quot;&gt;🔗&lt;&#x2F;a&gt;Icon Theme&lt;&#x2F;h2&gt;
&lt;p&gt;Vector and raster icon packs utilised by graphical applications for file types, directory markers, and interface buttons. Always include the fallback theme to prevent missing icon rendering errors.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;papirus-icon-theme&lt;&#x2F;code&gt;, &lt;code&gt;hicolor-icon-theme&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Graphical file managers and application launchers rely on standardised icon naming specifications to render directory folders, file type badges, and system action buttons. &lt;code&gt;papirus-icon-theme&lt;&#x2F;code&gt; is a comprehensive, modern SVG icon suite. &lt;code&gt;hicolor-icon-theme&lt;&#x2F;code&gt; must always be installed; it acts as the freedesktop.org mandatory fallback icon theme. If an application requests an icon missing from your primary theme, the system gracefully falls back to &lt;code&gt;hicolor&lt;&#x2F;code&gt; instead of displaying a broken graphical artifact.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;cursor-theme&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#cursor-theme&quot; aria-label=&quot;Anchor link for: cursor-theme&quot;&gt;🔗&lt;&#x2F;a&gt;Cursor Theme&lt;&#x2F;h2&gt;
&lt;p&gt;Graphical pointer assets used by the Wayland display server.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;bibata-cursor-theme&lt;&#x2F;code&gt;, &lt;code&gt;capitaine-cursors&lt;&#x2F;code&gt;, &lt;code&gt;xcursor-themes&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; By default, bare window manager environments fall back to rudimentary, unstyled cursor pointers that change size and shape unpredictably when moving across different application window surfaces. Installing a unified cursor theme like &lt;code&gt;bibata-cursor-theme&lt;&#x2F;code&gt; and defining it explicitly in your environment variables ensures consistent pointer rendering across all Wayland and XWayland windows.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;gtk-theming-settings&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#gtk-theming-settings&quot; aria-label=&quot;Anchor link for: gtk-theming-settings&quot;&gt;🔗&lt;&#x2F;a&gt;GTK Theming &amp;amp; Settings&lt;&#x2F;h2&gt;
&lt;p&gt;Configuration utilities and stylesheets controlling the visual rendering of GTK2, GTK3, and GTK4 applications.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;nwg-look&lt;&#x2F;code&gt;, &lt;code&gt;adwaita-dark&lt;&#x2F;code&gt;, &lt;code&gt;catppuccin-gtk-theme&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Applications built using GNOME&#x27;s GTK toolkit (such as Firefox, Thunderbird, and Thunar) require explicit theming instructions to avoid clashing visually with dark terminal aesthetics. &lt;code&gt;nwg-look&lt;&#x2F;code&gt; is a Wayland-native GTK configuration utility that allows you to apply unified themes, custom icons, and cursor sets across your desktop without manually editing underlying &lt;code&gt;~&#x2F;.config&#x2F;gtk-3.0&#x2F;settings.ini&lt;&#x2F;code&gt; files.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;qt-theming&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#qt-theming&quot; aria-label=&quot;Anchor link for: qt-theming&quot;&gt;🔗&lt;&#x2F;a&gt;Qt Theming&lt;&#x2F;h2&gt;
&lt;p&gt;Integration layers mapping Qt application rendering engines to match GTK desktop colour schemes and widget styling.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;qt5ct&lt;&#x2F;code&gt;, &lt;code&gt;qt6ct&lt;&#x2F;code&gt;, &lt;code&gt;kvantum&lt;&#x2F;code&gt;, &lt;code&gt;qt5-wayland&lt;&#x2F;code&gt;, &lt;code&gt;qt6-wayland&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Applications developed with the Qt toolkit (such as qBittorrent, VLC, and KeePassXC) render using completely different design engines from GTK software. Without configuration, Qt applications display with glaring, unstyled Windows-95-era grey widgets. &lt;code&gt;qt5ct&lt;&#x2F;code&gt; and &lt;code&gt;qt6ct&lt;&#x2F;code&gt; act as environment controllers, forcing Qt applications to inherit unified colour palettes. &lt;code&gt;kvantum&lt;&#x2F;code&gt; is an SVG-based theme engine that allows Qt applications to perfectly mimic modern GTK desktop themes. Installing &lt;code&gt;qt5-wayland&lt;&#x2F;code&gt; and &lt;code&gt;qt6-wayland&lt;&#x2F;code&gt; ensures these applications run natively on Wayland without falling back to blurry XWayland rendering.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;8-shell-terminal&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#8-shell-terminal&quot; aria-label=&quot;Anchor link for: 8-shell-terminal&quot;&gt;🔗&lt;&#x2F;a&gt;8. Shell &amp;amp; Terminal&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;terminal-emulator&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#terminal-emulator&quot; aria-label=&quot;Anchor link for: terminal-emulator&quot;&gt;🔗&lt;&#x2F;a&gt;Terminal Emulator&lt;&#x2F;h2&gt;
&lt;p&gt;The graphical window container hosting command-line interfaces. GPU-accelerated terminals offload text rendering grids to the graphics card for improved display latency.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;kitty&lt;&#x2F;code&gt;, &lt;code&gt;foot&lt;&#x2F;code&gt;, &lt;code&gt;alacritty&lt;&#x2F;code&gt;, &lt;code&gt;wezterm&lt;&#x2F;code&gt;, &lt;code&gt;ghostty&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; In a terminal-centric workflow, the terminal emulator is your primary interface. &lt;code&gt;foot&lt;&#x2F;code&gt; is an exceptionally lightweight, minimalist Wayland-native terminal designed for speed and minimal memory consumption, featuring a client-server architecture. &lt;code&gt;kitty&lt;&#x2F;code&gt; is a feature-rich, GPU-accelerated terminal supporting advanced image rendering protocols, ligatures, and scripting layouts. &lt;code&gt;alacritty&lt;&#x2F;code&gt; focuses purely on OpenGL-accelerated rendering performance and stability without bundling graphical configuration tabs or scrollback manipulation features.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;command-shell&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#command-shell&quot; aria-label=&quot;Anchor link for: command-shell&quot;&gt;🔗&lt;&#x2F;a&gt;Command Shell&lt;&#x2F;h2&gt;
&lt;p&gt;The primary command interpreter. While Bash is the default POSIX shell on Arch Linux, Zsh and Fish provide advanced interactive tab-completion and scripting ecosystems.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;bash&lt;&#x2F;code&gt;, &lt;code&gt;zsh&lt;&#x2F;code&gt;, &lt;code&gt;fish&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The shell interprets your commands and executes scripts. &lt;code&gt;bash&lt;&#x2F;code&gt; is ubiquitous and essential for POSIX compliance. &lt;code&gt;zsh&lt;&#x2F;code&gt; provides an extensible interactive command-line experience, supporting advanced globbing, spelling correction, and massive community plugin frameworks (like syntax highlighting and autosuggestions). &lt;code&gt;fish&lt;&#x2F;code&gt; (Friendly Interactive Shell) delivers out-of-the-box syntax highlighting, intelligent auto-suggestions based on command history, and web-based configuration without requiring complex setup scripts, though its scripting syntax deviates from standard POSIX bash.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;shell-prompt&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#shell-prompt&quot; aria-label=&quot;Anchor link for: shell-prompt&quot;&gt;🔗&lt;&#x2F;a&gt;Shell Prompt&lt;&#x2F;h2&gt;
&lt;p&gt;Dynamic prompt engines displaying git repository status, execution time, python virtual environments, and working directories within the terminal line.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;starship&lt;&#x2F;code&gt;, &lt;code&gt;oh-my-posh&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; A standard shell prompt displays minimal information. &lt;code&gt;starship&lt;&#x2F;code&gt; is a cross-shell, Rust-powered prompt engine that evaluates your current directory context instantaneously. When you enter a code directory, it automatically renders active git branch states, modification flags, runtime versions (such as Node, Python, or Rust), and background job statuses directly into your prompt line with zero perceived latency.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;terminal-multiplexer&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#terminal-multiplexer&quot; aria-label=&quot;Anchor link for: terminal-multiplexer&quot;&gt;🔗&lt;&#x2F;a&gt;Terminal Multiplexer&lt;&#x2F;h2&gt;
&lt;p&gt;Software managing multiple persistent virtual console sessions within a single terminal window. Multiplexers preserve session state across SSH disconnects and X11&#x2F;Wayland restarts.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;tmux&lt;&#x2F;code&gt;, &lt;code&gt;zellij&lt;&#x2F;code&gt;, &lt;code&gt;screen&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Terminal multiplexers allow you to split a single terminal window into multiple panes, run background compilation jobs, and detach from active sessions without terminating running processes. &lt;code&gt;tmux&lt;&#x2F;code&gt; is the industry-standard multiplexer, controllable entirely via keyboard shortcuts and highly scriptable. If your SSH connection drops while upgrading a remote server inside a &lt;code&gt;tmux&lt;&#x2F;code&gt; session, the upgrade process continues safely in the background; you simply reconnect and re-attach to the session. &lt;code&gt;zellij&lt;&#x2F;code&gt; is a modern, user-friendly Rust alternative featuring built-in layout tabs and floating windows out of the box.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;pager&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pager&quot; aria-label=&quot;Anchor link for: pager&quot;&gt;🔗&lt;&#x2F;a&gt;Pager&lt;&#x2F;h2&gt;
&lt;p&gt;Terminal utilities designed to scroll and navigate large text documents or standard output streams cleanly.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;less&lt;&#x2F;code&gt;, &lt;code&gt;bat&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When viewing long files, compiler logs, or &lt;code&gt;man&lt;&#x2F;code&gt; pages, pagers control the vertical scrolling of text. &lt;code&gt;less&lt;&#x2F;code&gt; is the standard UNIX pagination utility. &lt;code&gt;bat&lt;&#x2F;code&gt; acts as a modern, supercharged replacement for both &lt;code&gt;cat&lt;&#x2F;code&gt; and &lt;code&gt;less&lt;&#x2F;code&gt;, integrating transparent syntax highlighting for hundreds of programming languages, git diff gutter markers, and automated line numbering directly into the terminal paging output.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;aur-helper&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#aur-helper&quot; aria-label=&quot;Anchor link for: aur-helper&quot;&gt;🔗&lt;&#x2F;a&gt;AUR Helper&lt;&#x2F;h2&gt;
&lt;p&gt;Wrapper scripts automating package compilation and dependency resolution from the Arch User Repository while handling official Pacman system updates seamlessly.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;paru&lt;&#x2F;code&gt;, &lt;code&gt;yay&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The Arch User Repository contains tens of thousands of user-submitted PKGBUILD scripts for software not found in official Arch repositories. Manually downloading, inspecting, compiling, and updating these packages via &lt;code&gt;makepkg&lt;&#x2F;code&gt; is tedious. &lt;code&gt;paru&lt;&#x2F;code&gt; (written in Rust) and &lt;code&gt;yay&lt;&#x2F;code&gt; (written in Go) wrap the native &lt;code&gt;pacman&lt;&#x2F;code&gt; command syntax, automatically resolving complex AUR dependency chains, displaying diffs of user build scripts for security inspection, and compiling packages cleanly into your system.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;9-text-editors&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#9-text-editors&quot; aria-label=&quot;Anchor link for: 9-text-editors&quot;&gt;🔗&lt;&#x2F;a&gt;9. Text Editors&lt;&#x2F;h1&gt;
&lt;p&gt;Different editing environments serve distinct functions across administration, scripting, and software development workflows.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;simple-terminal-editor&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#simple-terminal-editor&quot; aria-label=&quot;Anchor link for: simple-terminal-editor&quot;&gt;🔗&lt;&#x2F;a&gt;Simple Terminal Editor&lt;&#x2F;h2&gt;
&lt;p&gt;Non-modal text editors that operate with standard keyboard navigation and immediate visual feedback. Highly practical for quick system configuration modifications, editing sudoers files, or modifying remote configurations over SSH.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;nano&lt;&#x2F;code&gt;, &lt;code&gt;micro&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When you are modifying a system configuration file at 3:00 AM or rescuing a broken bootloader from a chroot console, you do not want to wrestle with modal keybindings. &lt;code&gt;nano&lt;&#x2F;code&gt; ships universally and provides straightforward, on-screen key prompts. &lt;code&gt;micro&lt;&#x2F;code&gt; is a modern terminal editor that supports standard Ctrl+C &#x2F; Ctrl+V clipboard operations, multi-cursor editing, and full mouse support inside the console without requiring manual configuration.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;modal-terminal-editor&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#modal-terminal-editor&quot; aria-label=&quot;Anchor link for: modal-terminal-editor&quot;&gt;🔗&lt;&#x2F;a&gt;Modal Terminal Editor&lt;&#x2F;h2&gt;
&lt;p&gt;Editors structured around distinct operational modes (Normal, Insert, Visual, and Command). By divorcing navigation from text insertion, every keyboard key functions as an editing operator. While the initial learning curve is steep, modal editors provide unmatched speed and text manipulation precision. Neovim extends traditional Vim architecture by integrating a Lua runtime for deep customisation and asynchronous plugin execution.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;neovim&lt;&#x2F;code&gt;, &lt;code&gt;vim&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; In normal mode, your keyboard stops being a typewriter and becomes a command language for text manipulation. You do not reach for a mouse to select and delete words; you type structural commands like &lt;code&gt;ciw&lt;&#x2F;code&gt; (change inside word) or &lt;code&gt;dap&lt;&#x2F;code&gt; (delete around paragraph). &lt;code&gt;vim&lt;&#x2F;code&gt; is installed on virtually every Unix server in existence. &lt;code&gt;neovim&lt;&#x2F;code&gt; modernises this legacy by adding built-in Language Server Protocol (LSP) client support, asynchronous job execution, and an active ecosystem of Lua plugins, transforming a lightweight terminal editor into a complete, lightning-fast development environment.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;integrated-development-environment-ide&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#integrated-development-environment-ide&quot; aria-label=&quot;Anchor link for: integrated-development-environment-ide&quot;&gt;🔗&lt;&#x2F;a&gt;Integrated Development Environment (IDE)&lt;&#x2F;h2&gt;
&lt;p&gt;Comprehensive software suites bundling editors with visual debuggers, project file trees, database explorers, and build system integrations out of the box.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;code&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;vscodium&lt;&#x2F;code&gt;, &lt;code&gt;intellij-idea-community&lt;&#x2F;code&gt;, &lt;code&gt;pycharm-community&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; While terminal modal editors excel at speed and system efficiency, large-scale enterprise software development often benefits from dedicated graphical IDEs. &lt;code&gt;vscodium&lt;&#x2F;code&gt; provides the complete Visual Studio Code editor experience compiled directly from open-source repositories, completely stripping out Microsoft proprietary telemetry and tracking code. JetBrains community editions (&lt;code&gt;intellij-idea-community&lt;&#x2F;code&gt;, &lt;code&gt;pycharm-community&lt;&#x2F;code&gt;) offer deep, semantic code introspection, automated refactoring suites, and integrated visual debugging tools for complex Java, Kotlin, and Python codebases.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;10-development-version-control&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#10-development-version-control&quot; aria-label=&quot;Anchor link for: 10-development-version-control&quot;&gt;🔗&lt;&#x2F;a&gt;10. Development &amp;amp; Version Control&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;version-control-system&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#version-control-system&quot; aria-label=&quot;Anchor link for: version-control-system&quot;&gt;🔗&lt;&#x2F;a&gt;Version Control System&lt;&#x2F;h2&gt;
&lt;p&gt;Software tracking file system modifications over time, facilitating collaborative development and configuration management (dotfiles).&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;git&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; &lt;code&gt;git&lt;&#x2F;code&gt; is the foundational infrastructure of modern software engineering. It tracks line-by-line code modifications, enables non-linear branch development, and allows safe experimentation without risking production stability. Beyond coding, &lt;code&gt;git&lt;&#x2F;code&gt; is essential for managing personal system configurations (&lt;code&gt;dotfiles&lt;&#x2F;code&gt;), allowing you to replicate your exact Wayland, Neovim, and shell setups across multiple machines instantaneously.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;git-frontend-tui&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#git-frontend-tui&quot; aria-label=&quot;Anchor link for: git-frontend-tui&quot;&gt;🔗&lt;&#x2F;a&gt;Git Frontend (TUI)&lt;&#x2F;h2&gt;
&lt;p&gt;Interactive terminal interfaces simplifying branch navigation, staging diffs, and commit history inspection without executing verbose CLI commands.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;lazygit&lt;&#x2F;code&gt;, &lt;code&gt;gitui&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Performing complex git operations—such as interactive rebasing, staging individual lines of a modified file (patch staging), or untangling merge conflicts—can be tedious via raw command-line syntax. &lt;code&gt;lazygit&lt;&#x2F;code&gt; and &lt;code&gt;gitui&lt;&#x2F;code&gt; (written in Rust for speed) provide visual, keyboard-driven terminal interfaces that display visual branch trees, interactive diff panels, and simplified commit management directly within your terminal workspace.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;diff-merge-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#diff-merge-utilities&quot; aria-label=&quot;Anchor link for: diff-merge-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Diff &amp;amp; Merge Utilities&lt;&#x2F;h2&gt;
&lt;p&gt;Visual comparison tools highlighting file differences and resolving git merge conflicts.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;meld&lt;&#x2F;code&gt; (GUI), &lt;code&gt;vimdiff&lt;&#x2F;code&gt; (terminal), &lt;code&gt;delta&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When two development branches modify the same lines of code, git generates a merge conflict. &lt;code&gt;meld&lt;&#x2F;code&gt; provides a clean graphical three-way visual diff interface, allowing you to click and merge code blocks across conflicting files. In the terminal, &lt;code&gt;vimdiff&lt;&#x2F;code&gt; leverages Neovim&#x27;s split-window architecture to resolve conflicts. &lt;code&gt;delta&lt;&#x2F;code&gt; replaces standard git diff terminal output with syntax-highlighted, side-by-side or inline code comparisons featuring word-level diff highlighting.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;runtime-version-manager&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#runtime-version-manager&quot; aria-label=&quot;Anchor link for: runtime-version-manager&quot;&gt;🔗&lt;&#x2F;a&gt;Runtime Version Manager&lt;&#x2F;h2&gt;
&lt;p&gt;Tools automating the simultaneous installation and switching of multiple programming language runtimes across different project directories.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;mise&lt;&#x2F;code&gt;, &lt;code&gt;pyenv&lt;&#x2F;code&gt;, &lt;code&gt;nvm&lt;&#x2F;code&gt;, &lt;code&gt;rustup&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Relying solely on system-wide package manager runtimes for development is dangerous; Arch Linux rolling upgrades will update Python or Node to newer versions, potentially breaking older project dependencies. &lt;code&gt;mise&lt;&#x2F;code&gt; (formerly rtx) acts as a high-performance, polyglot toolchain manager written in Rust. It automatically downloads and isolates specific versions of Node, Python, Ruby, or Terraform on a per-project basis, switching runtime environments instantly as you &lt;code&gt;cd&lt;&#x2F;code&gt; into different project directories. &lt;code&gt;rustup&lt;&#x2F;code&gt; is the official toolchain installer required to manage Rust stable, nightly, and cross-compilation targets.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;language-runtimes-toolchains&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#language-runtimes-toolchains&quot; aria-label=&quot;Anchor link for: language-runtimes-toolchains&quot;&gt;🔗&lt;&#x2F;a&gt;Language Runtimes &amp;amp; Toolchains&lt;&#x2F;h2&gt;
&lt;p&gt;The core compilers, interpreters, and package managers required to build and execute software.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;python&lt;&#x2F;code&gt;, &lt;code&gt;python-pip&lt;&#x2F;code&gt;, &lt;code&gt;nodejs&lt;&#x2F;code&gt;, &lt;code&gt;npm&lt;&#x2F;code&gt;, &lt;code&gt;rust&lt;&#x2F;code&gt;, &lt;code&gt;gcc&lt;&#x2F;code&gt;, &lt;code&gt;clang&lt;&#x2F;code&gt;, &lt;code&gt;make&lt;&#x2F;code&gt;, &lt;code&gt;cmake&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; These packages provide the foundational compilation and execution engines for software development. &lt;code&gt;gcc&lt;&#x2F;code&gt; and &lt;code&gt;clang&lt;&#x2F;code&gt; compile C and C++ source code into native machine binaries. &lt;code&gt;make&lt;&#x2F;code&gt; and &lt;code&gt;cmake&lt;&#x2F;code&gt; orchestrate complex multi-file compilation workflows. &lt;code&gt;python&lt;&#x2F;code&gt; and &lt;code&gt;nodejs&lt;&#x2F;code&gt; provide the scripting interpreters and package registries (&lt;code&gt;pip&lt;&#x2F;code&gt;, &lt;code&gt;npm&lt;&#x2F;code&gt;) required to execute modern web applications, backend services, and automated system utilities.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;language-server-protocol-lsp-servers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#language-server-protocol-lsp-servers&quot; aria-label=&quot;Anchor link for: language-server-protocol-lsp-servers&quot;&gt;🔗&lt;&#x2F;a&gt;Language Server Protocol (LSP) Servers&lt;&#x2F;h2&gt;
&lt;p&gt;Background analysis engines providing live syntax diagnostics, autocompletion, code formatting, and definition lookup to editors supporting the LSP specification.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; Managed via &lt;code&gt;mason.nvim&lt;&#x2F;code&gt; in Neovim, or installed natively via Pacman (&lt;code&gt;pyright&lt;&#x2F;code&gt;, &lt;code&gt;rust-analyzer&lt;&#x2F;code&gt;, &lt;code&gt;bash-language-server&lt;&#x2F;code&gt;, &lt;code&gt;lua-language-server&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The Language Server Protocol standardises how text editors communicate with programming language intelligence tools. Instead of every editor embedding its own custom code parser, a standalone background server processes your codebase. When integrated into Neovim, &lt;code&gt;rust-analyzer&lt;&#x2F;code&gt; or &lt;code&gt;pyright&lt;&#x2F;code&gt; inspects your code in real time, underlining syntax errors, providing intelligent method autocompletion, and enabling instant jump-to-definition across thousands of project files.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;api-testing-tools&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#api-testing-tools&quot; aria-label=&quot;Anchor link for: api-testing-tools&quot;&gt;🔗&lt;&#x2F;a&gt;API Testing Tools&lt;&#x2F;h2&gt;
&lt;p&gt;Command-line utilities and interfaces designed to construct HTTP requests and inspect REST or GraphQL API responses.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;curl&lt;&#x2F;code&gt;, &lt;code&gt;httpie&lt;&#x2F;code&gt;, &lt;code&gt;xh&lt;&#x2F;code&gt;, &lt;code&gt;bruno&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Developing and debugging backend network services requires tools to simulate client requests. While &lt;code&gt;curl&lt;&#x2F;code&gt; is universally available, its syntax for sending complex JSON payloads or custom authentication headers is verbose. &lt;code&gt;httpie&lt;&#x2F;code&gt; and &lt;code&gt;xh&lt;&#x2F;code&gt; (a high-performance Rust port) provide human-readable command-line syntax, automated JSON formatting, and persistent session support. &lt;code&gt;bruno&lt;&#x2F;code&gt; offers a fast, local-first graphical desktop API client that saves request collections directly as plain text files within your git repositories.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;database-clients&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#database-clients&quot; aria-label=&quot;Anchor link for: database-clients&quot;&gt;🔗&lt;&#x2F;a&gt;Database Clients&lt;&#x2F;h2&gt;
&lt;p&gt;Interfaces used to connect to relational or document databases for query execution and schema inspection.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;dbeaver&lt;&#x2F;code&gt;, &lt;code&gt;pgcli&lt;&#x2F;code&gt;, &lt;code&gt;mycli&lt;&#x2F;code&gt;, &lt;code&gt;sqlite3&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When interacting with PostgreSQL, MySQL, or SQLite databases, you need structured interfaces to execute SQL queries and inspect table data. &lt;code&gt;pgcli&lt;&#x2F;code&gt; and &lt;code&gt;mycli&lt;&#x2F;code&gt; replace standard database command-line monitors with intelligent interactive terminals featuring auto-completion and syntax highlighting. &lt;code&gt;dbeaver&lt;&#x2F;code&gt; provides an enterprise-grade graphical universal database tool capable of generating visual Entity-Relationship diagrams and managing complex data migrations across virtually any database engine.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;container-runtime&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#container-runtime&quot; aria-label=&quot;Anchor link for: container-runtime&quot;&gt;🔗&lt;&#x2F;a&gt;Container Runtime&lt;&#x2F;h2&gt;
&lt;p&gt;Software executing isolated Linux applications and development environments via kernel namespaces and cgroups.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;podman&lt;&#x2F;code&gt;, &lt;code&gt;docker&lt;&#x2F;code&gt;, &lt;code&gt;buildah&lt;&#x2F;code&gt;, &lt;code&gt;incus&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Containers package applications and their dependencies into standardized, isolated execution environments that run identically across any Linux host. &lt;code&gt;docker&lt;&#x2F;code&gt; is the ubiquitous industry standard, relying on a background root daemon to manage containers. &lt;code&gt;podman&lt;&#x2F;code&gt; provides a modern, daemonless, drop-in replacement for Docker that executes containers rootlessly under standard user accounts, significantly improving system security. &lt;code&gt;incus&lt;&#x2F;code&gt; (the community fork of LXD) manages complete system containers and virtual machines, behaving like lightweight, instant-boot Linux servers running inside your primary machine.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;virtualisation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#virtualisation&quot; aria-label=&quot;Anchor link for: virtualisation&quot;&gt;🔗&lt;&#x2F;a&gt;Virtualisation&lt;&#x2F;h2&gt;
&lt;p&gt;Hypervisor tools executing complete virtual machines with dedicated OS kernels.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;qemu-full&lt;&#x2F;code&gt;, &lt;code&gt;virt-manager&lt;&#x2F;code&gt;, &lt;code&gt;libvirt&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; While containers isolate application processes, virtualization hypervisors emulate complete physical computer hardware, allowing you to run entirely different operating systems (such as Windows 11, BSD, or isolated Linux distributions) simultaneously. &lt;code&gt;qemu-full&lt;&#x2F;code&gt; provides the hardware emulation backend and KVM (Kernel-based Virtual Machine) acceleration. &lt;code&gt;libvirt&lt;&#x2F;code&gt; manages virtual network bridges and storage pools, while &lt;code&gt;virt-manager&lt;&#x2F;code&gt; provides an intuitive graphical interface for creating, configuring, and viewing virtual machine displays.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;low-level-debugging-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#low-level-debugging-utilities&quot; aria-label=&quot;Anchor link for: low-level-debugging-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Low-Level Debugging Utilities&lt;&#x2F;h2&gt;
&lt;p&gt;Diagnostic software tracing process system calls, memory allocations, and binary contents.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;strace&lt;&#x2F;code&gt;, &lt;code&gt;ltrace&lt;&#x2F;code&gt;, &lt;code&gt;gdb&lt;&#x2F;code&gt;, &lt;code&gt;valgrind&lt;&#x2F;code&gt;, &lt;code&gt;hexyl&lt;&#x2F;code&gt;, &lt;code&gt;xxd&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When an application crashes silently or fails to read a configuration file without generating an error log, low-level debuggers reveal exactly what the software is doing under the hood. &lt;code&gt;strace&lt;&#x2F;code&gt; intercepts and records every system call a running process makes to the Linux kernel, instantly revealing if a program is crashing because it is attempting to open a missing file path or requesting denied network permissions. &lt;code&gt;gdb&lt;&#x2F;code&gt; (GNU Debugger) allows you to step through compiled C&#x2F;C++ binary execution line-by-line to isolate memory segmentation faults. &lt;code&gt;hexyl&lt;&#x2F;code&gt; provides a clean, colour-coded terminal hex viewer for inspecting binary data layouts.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;11-file-management&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#11-file-management&quot; aria-label=&quot;Anchor link for: 11-file-management&quot;&gt;🔗&lt;&#x2F;a&gt;11. File Management&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;file-manager&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#file-manager&quot; aria-label=&quot;Anchor link for: file-manager&quot;&gt;🔗&lt;&#x2F;a&gt;File Manager&lt;&#x2F;h2&gt;
&lt;p&gt;Software for browsing directories, executing file operations, and managing storage permissions. Terminal interfaces provide rapid keyboard-driven navigation, while GUI managers offer drag-and-drop convenience and thumbnail rendering.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;yazi&lt;&#x2F;code&gt;, &lt;code&gt;lf&lt;&#x2F;code&gt;, &lt;code&gt;nnn&lt;&#x2F;code&gt; (TUI); &lt;code&gt;thunar&lt;&#x2F;code&gt;, &lt;code&gt;pcmanfm-qt&lt;&#x2F;code&gt; (GUI)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Terminal file managers integrate natively with your command-line workspace. &lt;code&gt;yazi&lt;&#x2F;code&gt; is an asynchronous, Rust-powered terminal file manager featuring instant directory jumping, multi-threading, and native image preview rendering directly inside terminal grids via Wayland image protocols. &lt;code&gt;lf&lt;&#x2F;code&gt; (List Files) offers an extremely minimalist, instant-launch file manager styled after standard Vim keybindings. For graphical workflows, &lt;code&gt;thunar&lt;&#x2F;code&gt; provides a lightweight, reliable GTK file manager with robust external drive automounting and custom context-menu action support.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;archive-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#archive-utilities&quot; aria-label=&quot;Anchor link for: archive-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Archive Utilities&lt;&#x2F;h2&gt;
&lt;p&gt;Compression and extraction libraries handling standard archive formats.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;7zip&lt;&#x2F;code&gt;, &lt;code&gt;unzip&lt;&#x2F;code&gt;, &lt;code&gt;unrar&lt;&#x2F;code&gt;, &lt;code&gt;tar&lt;&#x2F;code&gt;, &lt;code&gt;zstd&lt;&#x2F;code&gt;, &lt;code&gt;file-roller&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Compressed archives are the universal distribution format for source code, datasets, and document bundles. While &lt;code&gt;tar&lt;&#x2F;code&gt; and &lt;code&gt;gzip&lt;&#x2F;code&gt; handle standard Unix archives, installing &lt;code&gt;7zip&lt;&#x2F;code&gt;, &lt;code&gt;unzip&lt;&#x2F;code&gt;, and &lt;code&gt;unrar&lt;&#x2F;code&gt; ensures you can decompress proprietary archives downloaded from external sources. &lt;code&gt;zstd&lt;&#x2F;code&gt; (Zstandard) is a modern compression algorithm developed by Facebook that delivers real-time compression speeds with compression ratios matching legacy algorithms, used extensively by Arch Linux for official &lt;code&gt;.pkg.tar.zst&lt;&#x2F;code&gt; system packages.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;thumbnail-generator&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#thumbnail-generator&quot; aria-label=&quot;Anchor link for: thumbnail-generator&quot;&gt;🔗&lt;&#x2F;a&gt;Thumbnail Generator&lt;&#x2F;h2&gt;
&lt;p&gt;Background parsers generating visual previews for images, PDF documents, and video files inside graphical file managers.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;ffmpegthumbnailer&lt;&#x2F;code&gt;, &lt;code&gt;tumbler&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; By default, graphical file managers like Thunar display generic, identical icons for all video files and images. Installing &lt;code&gt;tumbler&lt;&#x2F;code&gt; alongside &lt;code&gt;ffmpegthumbnailer&lt;&#x2F;code&gt; enables background thumbnail generation, automatically parsing video frames and document covers to render visual previews directly inside your file browsing directories.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;disk-usage-analyser&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#disk-usage-analyser&quot; aria-label=&quot;Anchor link for: disk-usage-analyser&quot;&gt;🔗&lt;&#x2F;a&gt;Disk Usage Analyser&lt;&#x2F;h2&gt;
&lt;p&gt;Diagnostic tools mapping file system consumption to locate storage anomalies and large cached directories.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;dust&lt;&#x2F;code&gt;, &lt;code&gt;ncdu&lt;&#x2F;code&gt;, &lt;code&gt;duf&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When your NVMe storage fills up unexpectedly, traditional &lt;code&gt;du&lt;&#x2F;code&gt; commands spit out unreadable, unindexed lists of numbers. &lt;code&gt;ncdu&lt;&#x2F;code&gt; (NCurses Disk Usage) scans storage directories and renders an interactive, sorted terminal interface where you can navigate folders and delete space-wasting caches instantly. &lt;code&gt;dust&lt;&#x2F;code&gt; is a modern Rust-powered alternative that renders visual graphical tree maps of storage consumption directly in the console. &lt;code&gt;duf&lt;&#x2F;code&gt; replaces the legacy &lt;code&gt;df&lt;&#x2F;code&gt; command, displaying clean, tabulated visual overviews of all mounted filesystems and available disk space.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;partition-storage-management&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#partition-storage-management&quot; aria-label=&quot;Anchor link for: partition-storage-management&quot;&gt;🔗&lt;&#x2F;a&gt;Partition &amp;amp; Storage Management&lt;&#x2F;h2&gt;
&lt;p&gt;Low-level disk partitioning and logical volume manipulation software.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;parted&lt;&#x2F;code&gt;, &lt;code&gt;gptfdisk&lt;&#x2F;code&gt;, &lt;code&gt;gparted&lt;&#x2F;code&gt;, &lt;code&gt;lvm2&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Whether setting up a new SSD, resizing logical volumes, or formatting USB flash drives, partition manipulation tools are mandatory system administration equipment. &lt;code&gt;gptfdisk&lt;&#x2F;code&gt; provides &lt;code&gt;gdisk&lt;&#x2F;code&gt; and &lt;code&gt;cgdisk&lt;&#x2F;code&gt;, the authoritative interactive terminal tools for creating and editing modern GPT (GUID Partition Table) disk layouts. &lt;code&gt;parted&lt;&#x2F;code&gt; provides scripted partition table manipulation, while &lt;code&gt;gparted&lt;&#x2F;code&gt; offers a visual GTK interface for resizing filesystems without command-line calculation risks.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;backup-synchronisation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#backup-synchronisation&quot; aria-label=&quot;Anchor link for: backup-synchronisation&quot;&gt;🔗&lt;&#x2F;a&gt;Backup &amp;amp; Synchronisation&lt;&#x2F;h2&gt;
&lt;p&gt;Software performing incremental data backups, deduplication, encryption, and remote mirroring to prevent data loss.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;restic&lt;&#x2F;code&gt;, &lt;code&gt;borgbackup&lt;&#x2F;code&gt;, &lt;code&gt;rsync&lt;&#x2F;code&gt;, &lt;code&gt;rclone&lt;&#x2F;code&gt;, &lt;code&gt;syncthing&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Storage hardware fails, rolling distributions break, and user error occurs. A robust backup strategy is mandatory. &lt;code&gt;rsync&lt;&#x2F;code&gt; is the classic synchronization tool, perfect for local file mirroring and incremental transfers over SSH. &lt;code&gt;restic&lt;&#x2F;code&gt; and &lt;code&gt;borgbackup&lt;&#x2F;code&gt; represent modern backup architecture: they slice your directories into deduplicated, encrypted snapshots, storing only the modified data chunks to local hard drives or remote cloud buckets. &lt;code&gt;rclone&lt;&#x2F;code&gt; acts as a command-line Swiss-Army knife for syncing data to arbitrary cloud storage providers (S3, Google Drive, Mega). &lt;code&gt;syncthing&lt;&#x2F;code&gt; establishes continuous, peer-to-peer decentralized file synchronization across your laptops, servers, and mobile devices without relying on third-party cloud servers.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;remote-desktop-client&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#remote-desktop-client&quot; aria-label=&quot;Anchor link for: remote-desktop-client&quot;&gt;🔗&lt;&#x2F;a&gt;Remote Desktop Client&lt;&#x2F;h2&gt;
&lt;p&gt;Graphical applications establishing remote desktop control sessions over VNC or RDP protocols.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;remmina&lt;&#x2F;code&gt;, &lt;code&gt;freerdp&lt;&#x2F;code&gt;, &lt;code&gt;wayvnc&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When you need to manage remote Windows workstations or control graphical Linux desktops across a network, &lt;code&gt;remmina&lt;&#x2F;code&gt; provides a comprehensive, multi-protocol graphical client supporting Remote Desktop Protocol (RDP), VNC, and SSH tunneling. Conversely, &lt;code&gt;wayvnc&lt;&#x2F;code&gt; acts as a Wayland-native VNC server, allowing you to share and control your local Niri compositor session remotely from other devices.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;12-system-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#12-system-utilities&quot; aria-label=&quot;Anchor link for: 12-system-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;12. System Utilities&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;system-process-monitors&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#system-process-monitors&quot; aria-label=&quot;Anchor link for: system-process-monitors&quot;&gt;🔗&lt;&#x2F;a&gt;System &amp;amp; Process Monitors&lt;&#x2F;h2&gt;
&lt;p&gt;Interactive system telemetry tools detailing CPU core load, memory allocation, storage I&#x2F;O, network bandwidth, and active process hierarchy.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;btop&lt;&#x2F;code&gt;, &lt;code&gt;htop&lt;&#x2F;code&gt;, &lt;code&gt;bottom&lt;&#x2F;code&gt;, &lt;code&gt;procs&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When system fans spin up or memory consumption spikes, process monitors identify the rogue application immediately. While &lt;code&gt;top&lt;&#x2F;code&gt; is ubiquitous, &lt;code&gt;htop&lt;&#x2F;code&gt; adds interactive process killing, tree-view process hierarchies, and clean visual metric bars. &lt;code&gt;btop&lt;&#x2F;code&gt; elevates this further, rendering gorgeous, highly customizable terminal dashboards displaying real-time graphs for disk read&#x2F;write speeds, network transfer rates, CPU temperatures, and storage utilization. &lt;code&gt;procs&lt;&#x2F;code&gt; replaces legacy &lt;code&gt;ps&lt;&#x2F;code&gt; command output with syntax-highlighted, human-readable process tables featuring automated Docker container mapping.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;command-line-search-filtering&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#command-line-search-filtering&quot; aria-label=&quot;Anchor link for: command-line-search-filtering&quot;&gt;🔗&lt;&#x2F;a&gt;Command-Line Search &amp;amp; Filtering&lt;&#x2F;h2&gt;
&lt;p&gt;Modern, high-performance replacements for legacy Unix search utilities. These tools leverage multi-threading and automatically ignore version-control directories.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fuzzy Finder:&lt;&#x2F;strong&gt; &lt;code&gt;fzf&lt;&#x2F;code&gt;, &lt;code&gt;sk&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Content Search:&lt;&#x2F;strong&gt; &lt;code&gt;ripgrep&lt;&#x2F;code&gt;, &lt;code&gt;silversearcher-ag&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;File Name Search:&lt;&#x2F;strong&gt; &lt;code&gt;fd&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Directory Listing:&lt;&#x2F;strong&gt; &lt;code&gt;eza&lt;&#x2F;code&gt;, &lt;code&gt;lsd&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Traditional Unix tools like &lt;code&gt;find&lt;&#x2F;code&gt; and &lt;code&gt;grep&lt;&#x2F;code&gt; are slow when searching massive directories and require complex flag syntax. Modern Rust-powered replacements dramatically accelerate terminal workflows:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ripgrep&lt;&#x2F;code&gt; (&lt;code&gt;rg&lt;&#x2F;code&gt;) searches file contents recursively at blistering speeds, automatically respecting &lt;code&gt;.gitignore&lt;&#x2F;code&gt; rules to avoid searching irrelevant dependency folders.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;fd&lt;&#x2F;code&gt; replaces &lt;code&gt;find&lt;&#x2F;code&gt; with sensible defaults, colour-coded output, and simplified regular expression searching.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;eza&lt;&#x2F;code&gt; replaces &lt;code&gt;ls&lt;&#x2F;code&gt;, adding git status badges, file modification timestamps, human-readable file sizes, and Nerd Font file icons directly to directory listings.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;fzf&lt;&#x2F;code&gt; (Fuzzy Finder) is a revolutionary terminal filter; when piped into bash&#x2F;zsh history or file searching, it allows you to instantly filter and open files, switch branches, or execute historical commands with minimal keystrokes.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;download-network-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#download-network-utilities&quot; aria-label=&quot;Anchor link for: download-network-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Download &amp;amp; Network Utilities&lt;&#x2F;h2&gt;
&lt;p&gt;Command-line file downloaders supporting multi-connection parallel fetching and broken download resumption.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;aria2&lt;&#x2F;code&gt;, &lt;code&gt;wget&lt;&#x2F;code&gt;, &lt;code&gt;curl&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Downloading large Linux ISOs or software archives via web browsers is inefficient and fragile. &lt;code&gt;wget&lt;&#x2F;code&gt; is the classic tool for scripted file downloading and website mirroring. &lt;code&gt;aria2&lt;&#x2F;code&gt; is a lightweight, multi-protocol download utility capable of accelerating download speeds by segmenting files and pulling chunks simultaneously across multiple HTTP, FTP, and BitTorrent connections.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;calculators-mathematical-tools&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#calculators-mathematical-tools&quot; aria-label=&quot;Anchor link for: calculators-mathematical-tools&quot;&gt;🔗&lt;&#x2F;a&gt;Calculators &amp;amp; Mathematical Tools&lt;&#x2F;h2&gt;
&lt;p&gt;Interactive expression evaluation utilities.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;qalculate&lt;&#x2F;code&gt;, &lt;code&gt;bc&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; When calculating storage allocations, subnet masks, or general arithmetic, opening a heavy graphical calculator application breaks terminal momentum. &lt;code&gt;bc&lt;&#x2F;code&gt; is an arbitrary-precision command-line calculator language. &lt;code&gt;qalculate&lt;&#x2F;code&gt; (&lt;code&gt;qalc&lt;&#x2F;code&gt;) is a phenomenal utility that understands natural mathematical syntax, physical unit conversions (currency, data sizes, measurements), symbolic calculus, and base conversions directly within the terminal console.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;security-auditing-maintenance&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#security-auditing-maintenance&quot; aria-label=&quot;Anchor link for: security-auditing-maintenance&quot;&gt;🔗&lt;&#x2F;a&gt;Security Auditing &amp;amp; Maintenance&lt;&#x2F;h2&gt;
&lt;p&gt;Tools scanning installed packages against CVE databases and identifying redundant system files.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;arch-audit&lt;&#x2F;code&gt;, &lt;code&gt;lynis&lt;&#x2F;code&gt;, &lt;code&gt;rmlint&lt;&#x2F;code&gt;, &lt;code&gt;fdupes&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Maintaining system hygiene and security on a rolling release requires vigilance. &lt;code&gt;arch-audit&lt;&#x2F;code&gt; queries the official Arch Linux security tracker, cross-referencing your installed package database against known Common Vulnerabilities and Exposures (CVEs) to warn you of unpatched software. &lt;code&gt;lynis&lt;&#x2F;code&gt; performs deep automated security auditing, evaluating file permissions, firewall rules, kernel parameters, and user authentication setup to suggest hardening improvements. &lt;code&gt;rmlint&lt;&#x2F;code&gt; and &lt;code&gt;fdupes&lt;&#x2F;code&gt; scan filesystem directories to identify and strip out duplicate files, empty directories, and broken symlinks, reclaiming wasted storage space.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;13-applications&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#13-applications&quot; aria-label=&quot;Anchor link for: 13-applications&quot;&gt;🔗&lt;&#x2F;a&gt;13. Applications&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;web-browser&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#web-browser&quot; aria-label=&quot;Anchor link for: web-browser&quot;&gt;🔗&lt;&#x2F;a&gt;Web Browser&lt;&#x2F;h2&gt;
&lt;p&gt;The primary internet client. Ensure Wayland-native flags are active to maintain fluid scrolling and video playback.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;firefox&lt;&#x2F;code&gt;, &lt;code&gt;librewolf&lt;&#x2F;code&gt;, &lt;code&gt;chromium&lt;&#x2F;code&gt;, &lt;code&gt;brave&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; The web browser is often the most resource-intensive application running on a workstation. &lt;code&gt;firefox&lt;&#x2F;code&gt; provides an independent, highly customizable rendering engine with robust privacy controls and native Wayland support. &lt;code&gt;librewolf&lt;&#x2F;code&gt; is a custom fork of Firefox compiled with aggressive privacy hardening, uBlock Origin pre-installed, and all telemetry removed out of the box. &lt;code&gt;chromium&lt;&#x2F;code&gt; provides the open-source base for Blink-engine rendering, essential for web development testing and specific proprietary web applications.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;email-client&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#email-client&quot; aria-label=&quot;Anchor link for: email-client&quot;&gt;🔗&lt;&#x2F;a&gt;Email Client&lt;&#x2F;h2&gt;
&lt;p&gt;Applications managing mail synchronisation via IMAP&#x2F;SMTP protocols.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;thunderbird&lt;&#x2F;code&gt;, &lt;code&gt;neomutt&lt;&#x2F;code&gt;, &lt;code&gt;aerc&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; While webmail interfaces are common, dedicated local email clients provide offline access, unified multi-account management, and PGP cryptographic signing. &lt;code&gt;thunderbird&lt;&#x2F;code&gt; offers a full-featured graphical personal information manager. For terminal purists, &lt;code&gt;neomutt&lt;&#x2F;code&gt; and &lt;code&gt;aerc&lt;&#x2F;code&gt; provide lightning-fast, keyboard-driven email management inside console windows, integrating directly with local mail synchronizers like &lt;code&gt;offlineimap&lt;&#x2F;code&gt; or &lt;code&gt;mbsync&lt;&#x2F;code&gt; and rendering plain-text emails effortlessly.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;document-ebook-readers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#document-ebook-readers&quot; aria-label=&quot;Anchor link for: document-ebook-readers&quot;&gt;🔗&lt;&#x2F;a&gt;Document &amp;amp; eBook Readers&lt;&#x2F;h2&gt;
&lt;p&gt;Lightweight viewing software for PDF, ePub, and DjVu files.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;zathura&lt;&#x2F;code&gt; (with &lt;code&gt;zathura-pdf-mupdf&lt;&#x2F;code&gt;), &lt;code&gt;evince&lt;&#x2F;code&gt;, &lt;code&gt;okular&lt;&#x2F;code&gt;, &lt;code&gt;foliate&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; Opening technical PDF manuals or research papers inside heavy web browsers is clumsy. &lt;code&gt;zathura&lt;&#x2F;code&gt; is a minimalist, document viewer controlled entirely via Vim keybindings, offering instantaneous document rendering and distraction-free reading without interface borders. Installing the &lt;code&gt;zathura-pdf-mupdf&lt;&#x2F;code&gt; backend ensures rapid rendering of complex vector graphics and large documents. For reading ePub eBooks, &lt;code&gt;foliate&lt;&#x2F;code&gt; provides a beautiful, modern GTK reading interface featuring customizable typography, chapter pagination, and dictionary lookup integration.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;media-viewers-editors&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#media-viewers-editors&quot; aria-label=&quot;Anchor link for: media-viewers-editors&quot;&gt;🔗&lt;&#x2F;a&gt;Media Viewers &amp;amp; Editors&lt;&#x2F;h2&gt;
&lt;p&gt;Software used to display, manipulate, and play image, audio, and video formats.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Image Viewers:&lt;&#x2F;strong&gt; &lt;code&gt;imv&lt;&#x2F;code&gt;, &lt;code&gt;swayimg&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Image Editors:&lt;&#x2F;strong&gt; &lt;code&gt;imagemagick&lt;&#x2F;code&gt;, &lt;code&gt;gimp&lt;&#x2F;code&gt;, &lt;code&gt;inkscape&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Video Players:&lt;&#x2F;strong&gt; &lt;code&gt;mpv&lt;&#x2F;code&gt;, &lt;code&gt;vlc&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Media Downloader:&lt;&#x2F;strong&gt; &lt;code&gt;yt-dlp&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Music Daemons &amp;amp; Clients:&lt;&#x2F;strong&gt; &lt;code&gt;mpd&lt;&#x2F;code&gt;, &lt;code&gt;ncmpcpp&lt;&#x2F;code&gt;, &lt;code&gt;mpc&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;imv&lt;&#x2F;code&gt; and &lt;code&gt;swayimg&lt;&#x2F;code&gt; are Wayland-native, keyboard-controlled image viewers that open instantly and scale images cleanly across tiled compositor windows.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;imagemagick&lt;&#x2F;code&gt; is a vital CLI suite for automated image manipulation—capable of converting file formats, resizing photo batches, and generating screenshot composites via shell scripts without opening a GUI. &lt;code&gt;gimp&lt;&#x2F;code&gt; and &lt;code&gt;inkscape&lt;&#x2F;code&gt; handle complex raster photo editing and scalable vector graphic (SVG) design respectively.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;mpv&lt;&#x2F;code&gt; is the undisputed champion of Linux video playback: an open-source, minimalist media player powered by FFmpeg that handles any video format, supports hardware decoding acceleration, and extends functionality via Lua scripting.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;yt-dlp&lt;&#x2F;code&gt; is an indispensable command-line tool for downloading video and audio streams from thousands of websites (including YouTube, Vimeo, and Reddit), allowing you to archive educational material or media directly to local storage.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;mpd&lt;&#x2F;code&gt; (Music Player Daemon) decouples audio playback from user interfaces by running as a background service that catalogs and plays your local music library. You control playback using lightweight terminal clients like &lt;code&gt;ncmpcpp&lt;&#x2F;code&gt; or command-line triggers (&lt;code&gt;mpc&lt;&#x2F;code&gt;), meaning your music continues playing uninterrupted even if your graphical desktop session restarts.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;productivity-organisation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#productivity-organisation&quot; aria-label=&quot;Anchor link for: productivity-organisation&quot;&gt;🔗&lt;&#x2F;a&gt;Productivity &amp;amp; Organisation&lt;&#x2F;h2&gt;
&lt;p&gt;Software managing personal knowledge bases, local credentials, and standard office documents.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Note Taking:&lt;&#x2F;strong&gt; &lt;code&gt;obsidian&lt;&#x2F;code&gt;, &lt;code&gt;logseq&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Password Management:&lt;&#x2F;strong&gt; &lt;code&gt;keepassxc&lt;&#x2F;code&gt;, &lt;code&gt;bitwarden-cli&lt;&#x2F;code&gt;, &lt;code&gt;pass&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Office Suite:&lt;&#x2F;strong&gt; &lt;code&gt;libreoffice-fresh&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Spell Checking:&lt;&#x2F;strong&gt; &lt;code&gt;hunspell&lt;&#x2F;code&gt;, &lt;code&gt;hunspell-en_gb&lt;&#x2F;code&gt;, &lt;code&gt;libenchant&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;Local-first knowledge management is essential for tracking technical documentation, projects, and personal research. &lt;code&gt;obsidian&lt;&#x2F;code&gt; and &lt;code&gt;logseq&lt;&#x2F;code&gt; organize your notes as folders of standard Markdown files stored locally on your hard drive, utilizing bi-directional linking to construct visual knowledge graphs without locking your data into proprietary cloud formats.&lt;&#x2F;li&gt;
&lt;li&gt;Password security requires encrypted local credential vaults. &lt;code&gt;keepassxc&lt;&#x2F;code&gt; provides an offline, open-source password manager utilizing AES-256 encryption, featuring auto-type integration and SSH agent support. &lt;code&gt;pass&lt;&#x2F;code&gt; (the standard UNIX password manager) embraces the Unix philosophy by storing each individual credential as an encrypted GPG file inside a standard git folder structure.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;libreoffice-fresh&lt;&#x2F;code&gt; provides the comprehensive open-source office suite required to create and format standard Word documents, Excel spreadsheets, and presentation slides.&lt;&#x2F;li&gt;
&lt;li&gt;System-wide spell checking relies on underlying linguistic libraries. Installing &lt;code&gt;hunspell&lt;&#x2F;code&gt; alongside regional dictionaries (&lt;code&gt;hunspell-en_gb&lt;&#x2F;code&gt; for British English) ensures LibreOffice, email clients, and web browsers underline typographical errors accurately.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;communication-feed-readers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#communication-feed-readers&quot; aria-label=&quot;Anchor link for: communication-feed-readers&quot;&gt;🔗&lt;&#x2F;a&gt;Communication &amp;amp; Feed Readers&lt;&#x2F;h2&gt;
&lt;p&gt;Clients for real-time messaging, federated social networks, and syndicated content feeds.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;telegram-desktop&lt;&#x2F;code&gt;, &lt;code&gt;element-desktop&lt;&#x2F;code&gt;, &lt;code&gt;discord&lt;&#x2F;code&gt;, &lt;code&gt;tut&lt;&#x2F;code&gt;, &lt;code&gt;newsboat&lt;&#x2F;code&gt;, &lt;code&gt;qbittorrent&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt;
&lt;ul&gt;
&lt;li&gt;Native desktop messaging clients like &lt;code&gt;telegram-desktop&lt;&#x2F;code&gt; and &lt;code&gt;element-desktop&lt;&#x2F;code&gt; (for secure, decentralized Matrix communications) provide desktop notification integration and system tray persistence.&lt;&#x2F;li&gt;
&lt;li&gt;For Fediverse and Mastodon interactions, &lt;code&gt;tut&lt;&#x2F;code&gt; delivers a clean, ncurses-based terminal user interface, allowing you to browse timelines and post updates directly from the console.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;newsboat&lt;&#x2F;code&gt; is an RSS&#x2F;Atom feed reader designed for the terminal. By subscribing to technical blogs, software release feeds, and news sources via &lt;code&gt;newsboat&lt;&#x2F;code&gt;, you consume information rapidly without algorithmic distraction, ad trackers, or bloated web interfaces.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;qbittorrent&lt;&#x2F;code&gt; is a reliable, open-source BitTorrent client featuring built-in torrent search engines, IP filtering, and automated RSS download rules for Linux distribution releases.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;system-information-fetchers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#system-information-fetchers&quot; aria-label=&quot;Anchor link for: system-information-fetchers&quot;&gt;🔗&lt;&#x2F;a&gt;System Information Fetchers&lt;&#x2F;h2&gt;
&lt;p&gt;Terminal utilities displaying system architecture, kernel versions, memory usage, and ASCII logos.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Examples:&lt;&#x2F;strong&gt; &lt;code&gt;fastfetch&lt;&#x2F;code&gt;, &lt;code&gt;macchina&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Why it matters:&lt;&#x2F;strong&gt; While largely aesthetic, system fetch utilities provide immediate, clean visual verification of your active operating system environment, kernel release, uptime, memory consumption, and compositor configuration. &lt;code&gt;fastfetch&lt;&#x2F;code&gt; is the modern, highly performant C-based successor to the unmaintained &lt;code&gt;neofetch&lt;&#x2F;code&gt;, rendering system stats alongside customized ASCII or image distribution logos instantaneously.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;14-fonts-reference-table&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#14-fonts-reference-table&quot; aria-label=&quot;Anchor link for: 14-fonts-reference-table&quot;&gt;🔗&lt;&#x2F;a&gt;14. Fonts Reference Table&lt;&#x2F;h1&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Type&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Primary Purpose&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Recommended Packages&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Why It Matters&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Monospace (Nerd Font)&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Terminals, text editors, status bar iconography&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ttf-jetbrains-mono-nerd&lt;&#x2F;code&gt;&lt;br&gt;&lt;code&gt;ttf-firacode-nerd&lt;&#x2F;code&gt;&lt;br&gt;&lt;code&gt;ttf-hack-nerd&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Fixed-width character spacing is mandatory for coding and terminal grids. Patched Nerd Fonts embed thousands of icon glyphs used by status bars and shell prompts.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Sans-Serif&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;GTK&#x2F;Qt UI layouts, desktop notifications, web browsers&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;inter-font&lt;&#x2F;code&gt;&lt;br&gt;&lt;code&gt;noto-fonts&lt;&#x2F;code&gt;&lt;br&gt;&lt;code&gt;ttf-ubuntu-font-family&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Proportional sans-serif fonts govern graphical application interfaces and general reading readability across desktop window surfaces.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Serif&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Document reading, PDF viewing, word processing&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;adobe-source-serif-fonts&lt;&#x2F;code&gt;&lt;br&gt;&lt;code&gt;noto-serif&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Traditional serif fonts provide superior legibility for long-form printed documents, formal reports, and eBook reading.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Emoji&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Universal emoji glyph rendering across all applications&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;noto-fonts-emoji&lt;&#x2F;code&gt;&lt;br&gt;&lt;code&gt;ttf-twemoji&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Prevents modern Unicode emoji characters from rendering as broken, empty rectangular boxes in web browsers and communication clients.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h1 id=&quot;15-master-system-verification-checklist&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#15-master-system-verification-checklist&quot; aria-label=&quot;Anchor link for: 15-master-system-verification-checklist&quot;&gt;🔗&lt;&#x2F;a&gt;15. Master System Verification Checklist&lt;&#x2F;h1&gt;
&lt;p&gt;Use this structured audit to verify your installation completeness after deployment.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;core-system&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#core-system&quot; aria-label=&quot;Anchor link for: core-system&quot;&gt;🔗&lt;&#x2F;a&gt;Core System&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Base operating system packages (&lt;code&gt;base&lt;&#x2F;code&gt;, &lt;code&gt;base-devel&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Linux kernel and kernel headers (&lt;code&gt;linux&lt;&#x2F;code&gt;, &lt;code&gt;linux-headers&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Hardware microcode and system firmware (&lt;code&gt;intel-ucode&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;amd-ucode&lt;&#x2F;code&gt;, &lt;code&gt;linux-firmware&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Bootloader configuration (&lt;code&gt;grub&lt;&#x2F;code&gt;, &lt;code&gt;efibootmgr&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Local documentation system (&lt;code&gt;man-db&lt;&#x2F;code&gt;, &lt;code&gt;man-pages&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Network time synchronisation service (&lt;code&gt;systemd-timesyncd&lt;&#x2F;code&gt; or &lt;code&gt;chrony&lt;&#x2F;code&gt; active)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Cryptographic volume tools (&lt;code&gt;cryptsetup&lt;&#x2F;code&gt;, &lt;code&gt;lvm2&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;display-compositor&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#display-compositor&quot; aria-label=&quot;Anchor link for: display-compositor&quot;&gt;🔗&lt;&#x2F;a&gt;Display &amp;amp; Compositor&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Wayland compositor (&lt;code&gt;niri&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Graphics drivers and Vulkan APIs (&lt;code&gt;mesa&lt;&#x2F;code&gt;, &lt;code&gt;vulkan-intel&lt;&#x2F;code&gt;, &lt;code&gt;vulkan-radeon&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Video hardware acceleration libraries (&lt;code&gt;intel-media-driver&lt;&#x2F;code&gt;, &lt;code&gt;libva-utils&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Display manager or TTY autologin wrapper (&lt;code&gt;ly&lt;&#x2F;code&gt;, &lt;code&gt;greetd&lt;&#x2F;code&gt;, or &lt;code&gt;uwsm&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
XDG desktop portals (&lt;code&gt;xdg-desktop-portal-gnome&lt;&#x2F;code&gt;, &lt;code&gt;xdg-desktop-portal-gtk&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
X11 compatibility layer (&lt;code&gt;xwayland&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Display management utilities (&lt;code&gt;wdisplays&lt;&#x2F;code&gt;, &lt;code&gt;kanshi&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;desktop-environment-components&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#desktop-environment-components&quot; aria-label=&quot;Anchor link for: desktop-environment-components&quot;&gt;🔗&lt;&#x2F;a&gt;Desktop Environment Components&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Wayland status bar (&lt;code&gt;waybar&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Application launcher (&lt;code&gt;fuzzel&lt;&#x2F;code&gt;, &lt;code&gt;rofi-wayland&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Notification daemon (&lt;code&gt;mako&lt;&#x2F;code&gt;, &lt;code&gt;swaync&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Screen locker and inactivity monitor (&lt;code&gt;swaylock&lt;&#x2F;code&gt;, &lt;code&gt;swayidle&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Background wallpaper utility (&lt;code&gt;swaybg&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Polkit graphical authentication agent (&lt;code&gt;polkit-gnome&lt;&#x2F;code&gt;, &lt;code&gt;polkit-kde-agent&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Freedesktop secret storage daemon (&lt;code&gt;gnome-keyring&lt;&#x2F;code&gt;, &lt;code&gt;keepassxc&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Clipboard manager (&lt;code&gt;cliphist&lt;&#x2F;code&gt;, &lt;code&gt;wl-clipboard&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Screenshot and region selection utilities (&lt;code&gt;grim&lt;&#x2F;code&gt;, &lt;code&gt;slurp&lt;&#x2F;code&gt;, &lt;code&gt;swappy&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Screen recording software (&lt;code&gt;wf-recorder&lt;&#x2F;code&gt;, &lt;code&gt;obs-studio&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Colour picker and hardware OSD (&lt;code&gt;hyprpicker&lt;&#x2F;code&gt;, &lt;code&gt;swayosd&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;audio-networking&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#audio-networking&quot; aria-label=&quot;Anchor link for: audio-networking&quot;&gt;🔗&lt;&#x2F;a&gt;Audio &amp;amp; Networking&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Audio processing server (&lt;code&gt;pipewire&lt;&#x2F;code&gt;, &lt;code&gt;pipewire-pulse&lt;&#x2F;code&gt;, &lt;code&gt;wireplumber&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Audio mixer interface (&lt;code&gt;pavucontrol&lt;&#x2F;code&gt;, &lt;code&gt;pulsemixer&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Network management daemon and UI (&lt;code&gt;networkmanager&lt;&#x2F;code&gt;, &lt;code&gt;nm-applet&lt;&#x2F;code&gt;, &lt;code&gt;iwd&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Host firewall configuration (&lt;code&gt;ufw&lt;&#x2F;code&gt;, &lt;code&gt;nftables&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
SSH server and client tools (&lt;code&gt;openssh&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Network diagnostic utilities (&lt;code&gt;nmap&lt;&#x2F;code&gt;, &lt;code&gt;traceroute&lt;&#x2F;code&gt;, &lt;code&gt;bind&lt;&#x2F;code&gt;, &lt;code&gt;iperf3&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;input-hardware-theming&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#input-hardware-theming&quot; aria-label=&quot;Anchor link for: input-hardware-theming&quot;&gt;🔗&lt;&#x2F;a&gt;Input, Hardware &amp;amp; Theming&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Backlight brightness controls (&lt;code&gt;brightnessctl&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Laptop power management daemon (&lt;code&gt;tlp&lt;&#x2F;code&gt;, &lt;code&gt;auto-cpufreq&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Bluetooth audio and device managers (&lt;code&gt;bluez&lt;&#x2F;code&gt;, &lt;code&gt;blueman&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
S.M.A.R.T. disk monitoring utilities (&lt;code&gt;smartmontools&lt;&#x2F;code&gt;, &lt;code&gt;nvme-cli&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Complete font stack (Monospace Nerd Font, Sans, Serif, Emoji)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
GTK and Qt theming engines (&lt;code&gt;nwg-look&lt;&#x2F;code&gt;, &lt;code&gt;qt5ct&lt;&#x2F;code&gt;, &lt;code&gt;qt6ct&lt;&#x2F;code&gt;, &lt;code&gt;kvantum&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Icon and cursor themes (&lt;code&gt;papirus-icon-theme&lt;&#x2F;code&gt;, &lt;code&gt;bibata-cursor-theme&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;terminal-development-system-utilities&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#terminal-development-system-utilities&quot; aria-label=&quot;Anchor link for: terminal-development-system-utilities&quot;&gt;🔗&lt;&#x2F;a&gt;Terminal, Development &amp;amp; System Utilities&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
GPU-accelerated terminal emulator (&lt;code&gt;kitty&lt;&#x2F;code&gt;, &lt;code&gt;foot&lt;&#x2F;code&gt;, &lt;code&gt;alacritty&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Shell environment and prompt engine (&lt;code&gt;zsh&lt;&#x2F;code&gt;, &lt;code&gt;starship&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Terminal multiplexer and pager (&lt;code&gt;tmux&lt;&#x2F;code&gt;, &lt;code&gt;bat&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
AUR helper (&lt;code&gt;paru&lt;&#x2F;code&gt;, &lt;code&gt;yay&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Modal text editor (&lt;code&gt;neovim&lt;&#x2F;code&gt;, &lt;code&gt;vim&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Version control system and interactive TUI (&lt;code&gt;git&lt;&#x2F;code&gt;, &lt;code&gt;lazygit&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Language version managers and toolchains (&lt;code&gt;mise&lt;&#x2F;code&gt;, &lt;code&gt;python&lt;&#x2F;code&gt;, &lt;code&gt;nodejs&lt;&#x2F;code&gt;, &lt;code&gt;rust&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Containerisation runtime (&lt;code&gt;podman&lt;&#x2F;code&gt;, &lt;code&gt;docker&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
File manager and archive utilities (&lt;code&gt;yazi&lt;&#x2F;code&gt;, &lt;code&gt;7zip&lt;&#x2F;code&gt;, &lt;code&gt;unzip&lt;&#x2F;code&gt;, &lt;code&gt;tar&lt;&#x2F;code&gt;, &lt;code&gt;zstd&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Automated backup system (&lt;code&gt;restic&lt;&#x2F;code&gt;, &lt;code&gt;borgbackup&lt;&#x2F;code&gt;, &lt;code&gt;rsync&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Modern CLI search and monitoring tools (&lt;code&gt;btop&lt;&#x2F;code&gt;, &lt;code&gt;ripgrep&lt;&#x2F;code&gt;, &lt;code&gt;fd&lt;&#x2F;code&gt;, &lt;code&gt;fzf&lt;&#x2F;code&gt;, &lt;code&gt;eza&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;&#x2F;&gt;
Essential GUI applications (Browser, Mail, PDF Viewer, Media Player, Office Suite)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Vim</title>
          <pubDate>Tue, 28 Apr 2026 14:41:48 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/vim/</link>
          <guid>https://daesorin.xyz/posts/vim/</guid>
          <description xml:base="https://daesorin.xyz/posts/vim/">&lt;h2 id=&quot;philosophy-and-modal-editing&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#philosophy-and-modal-editing&quot; aria-label=&quot;Anchor link for: philosophy-and-modal-editing&quot;&gt;🔗&lt;&#x2F;a&gt;PHILOSOPHY AND MODAL EDITING&lt;&#x2F;h2&gt;
&lt;p&gt;Vim&#x27;s defining characteristic is that it is a &lt;strong&gt;modal&lt;&#x2F;strong&gt; editor. There is no persistent insert state. You are always in one mode, and that mode determines exactly what every keystroke means.&lt;&#x2F;p&gt;
&lt;p&gt;The payoff: once you internalise the grammar, editing becomes a composable language. &lt;code&gt;d3w&lt;&#x2F;code&gt; (delete three words), &lt;code&gt;ci&quot;&lt;&#x2F;code&gt; (change inside quotes), &lt;code&gt;gUip&lt;&#x2F;code&gt; (uppercase inner paragraph) — these are statements in a grammar you can extend indefinitely.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Core ideas:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Keep your hands on the home row. The mouse is a context switch.&lt;&#x2F;li&gt;
&lt;li&gt;Spend most of your time in Normal mode — it is the command mode, not a waiting state.&lt;&#x2F;li&gt;
&lt;li&gt;Every operator + motion combination is a sentence. You do not need to remember two hundred commands; you learn a vocabulary of ~30 and combine them.&lt;&#x2F;li&gt;
&lt;li&gt;The dot (&lt;code&gt;.&lt;&#x2F;code&gt;) command repeats the last change. Design your edits so they are repeatable.&lt;&#x2F;li&gt;
&lt;li&gt;Use text objects, not character-by-character selection. &lt;code&gt;ci(&lt;&#x2F;code&gt; is faster than going to the first char, visually selecting, then deleting.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;vim-vs-neovim&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vim-vs-neovim&quot; aria-label=&quot;Anchor link for: vim-vs-neovim&quot;&gt;🔗&lt;&#x2F;a&gt;Vim vs Neovim&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Feature&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Vim&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Neovim&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Config language&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Vimscript&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Lua (first class), Vimscript (supported)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Async&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Limited&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Full async via libuv&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Built-in LSP&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;No&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Built-in Treesitter&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;No&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Built-in terminal&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yes&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yes (better integration)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;RPC&#x2F;remote plugins&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Via Python&#x2F;Ruby&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Via msgpack-RPC&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Floating windows&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;No&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Default options&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Conservative&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;More sensible defaults&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Active development&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Maintenance mode&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Active&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;For a modern installation, Neovim is the optimal choice. It offers native Lua support, integrated language server capabilities, and advanced UI features.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;install-and-upgrade&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#install-and-upgrade&quot; aria-label=&quot;Anchor link for: install-and-upgrade&quot;&gt;🔗&lt;&#x2F;a&gt;INSTALL AND UPGRADE&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;neovim&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#neovim&quot; aria-label=&quot;Anchor link for: neovim&quot;&gt;🔗&lt;&#x2F;a&gt;Neovim&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;Arch Linux:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; neovim&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Ubuntu &#x2F; Debian (Latest Stable):&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; add-apt-repository ppa:neovim-ppa&#x2F;stable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; apt update&lt;&#x2F;span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; apt install neovim&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;strong&gt;Build from source:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; base-devel cmake ninja unzip gettext curl&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; clone&lt;&#x2F;span&gt;&lt;span&gt; [https:&#x2F;&#x2F;github.com&#x2F;neovim&#x2F;neovim.git](&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;neovim&#x2F;neovim.git&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; neovim&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; checkout stable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;make&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; CMAKE_BUILD_TYPE=Release&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; make install&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;clipboard-support&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#clipboard-support&quot; aria-label=&quot;Anchor link for: clipboard-support&quot;&gt;🔗&lt;&#x2F;a&gt;Clipboard Support&lt;&#x2F;h3&gt;
&lt;p&gt;Neovim delegates clipboard tasks to external tools. Your configuration uses &lt;code&gt;unnamedplus&lt;&#x2F;code&gt; for Wayland integration.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Wayland&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; wl-clipboard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            # provides wl-copy, wl-paste&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# X11&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; xclip&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                   # or xsel&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# check Neovim sees it&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;nvim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;#39;:checkhealth&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;#39;:only&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;config-paths-and-launch&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#config-paths-and-launch&quot; aria-label=&quot;Anchor link for: config-paths-and-launch&quot;&gt;🔗&lt;&#x2F;a&gt;CONFIG PATHS AND LAUNCH&lt;&#x2F;h2&gt;
&lt;p&gt;Neovim follows the XDG Base Directory Specification. Your main configuration file is &lt;code&gt;~&#x2F;.config&#x2F;nvim&#x2F;init.lua&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Path&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Purpose&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~&#x2F;.config&#x2F;nvim&#x2F;init.lua&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Main config (Lua)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~&#x2F;.config&#x2F;nvim&#x2F;lua&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Lua modules directory&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~&#x2F;.local&#x2F;share&#x2F;nvim&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Data: plugins, undo history, swap files&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~&#x2F;.local&#x2F;share&#x2F;nvim&#x2F;lazy&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;lazy.nvim&lt;&#x2F;code&gt; plugin store&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~&#x2F;.local&#x2F;state&#x2F;nvim&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Log files, shada&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~&#x2F;.cache&#x2F;nvim&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Cache&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;reloading-config&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#reloading-config&quot; aria-label=&quot;Anchor link for: reloading-config&quot;&gt;🔗&lt;&#x2F;a&gt;Reloading Config&lt;&#x2F;h3&gt;
&lt;p&gt;To reload your configuration dynamically inside Neovim:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;viml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;source&lt;&#x2F;span&gt;&lt;span&gt; $MYVIMRC&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;the-modal-model&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-modal-model&quot; aria-label=&quot;Anchor link for: the-modal-model&quot;&gt;🔗&lt;&#x2F;a&gt;THE MODAL MODEL&lt;&#x2F;h2&gt;
&lt;p&gt;Vim has several modes. Understanding each and how to enter and exit them is the foundation of everything else.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Mode&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Indicator&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Entry&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Exit&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Normal&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;(none)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Escape&lt;&#x2F;code&gt;, &lt;code&gt;Ctrl-[&lt;&#x2F;code&gt;, &lt;code&gt;Ctrl-c&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;— (this is home)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Insert&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-- INSERT --&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;i&lt;&#x2F;code&gt;, &lt;code&gt;a&lt;&#x2F;code&gt;, &lt;code&gt;o&lt;&#x2F;code&gt;, &lt;code&gt;s&lt;&#x2F;code&gt;, &lt;code&gt;c&lt;&#x2F;code&gt;, &lt;code&gt;R&lt;&#x2F;code&gt;...&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Escape&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Visual (char)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-- VISUAL --&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Escape&lt;&#x2F;code&gt; or &lt;code&gt;v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Visual (line)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-- VISUAL LINE --&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;V&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Escape&lt;&#x2F;code&gt; or &lt;code&gt;V&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Visual (block)&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-- VISUAL BLOCK --&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Escape&lt;&#x2F;code&gt; or &lt;code&gt;Ctrl-v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Command-line&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:&lt;&#x2F;code&gt; or &lt;code&gt;&#x2F;&lt;&#x2F;code&gt; or &lt;code&gt;?&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:&lt;&#x2F;code&gt;, &lt;code&gt;&#x2F;&lt;&#x2F;code&gt;, &lt;code&gt;?&lt;&#x2F;code&gt;, &lt;code&gt;!&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Enter&lt;&#x2F;code&gt; or &lt;code&gt;Escape&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Replace&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-- REPLACE --&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;R&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Escape&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Terminal&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-- TERMINAL --&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;:terminal&lt;&#x2F;code&gt;, &lt;code&gt;i&lt;&#x2F;code&gt; in term buf&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-\&lt;&#x2F;code&gt; then &lt;code&gt;Ctrl-n&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;why-normal-mode-is-home&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#why-normal-mode-is-home&quot; aria-label=&quot;Anchor link for: why-normal-mode-is-home&quot;&gt;🔗&lt;&#x2F;a&gt;Why Normal Mode is Home&lt;&#x2F;h3&gt;
&lt;p&gt;Every other editor puts you in an insert state by default. Vim inverts this: Normal mode is the resting state. Text editing breaks down into navigating to the edit, making the change, and returning to Normal to navigate again. Vim optimises for navigating.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;normal-mode-motions&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#normal-mode-motions&quot; aria-label=&quot;Anchor link for: normal-mode-motions&quot;&gt;🔗&lt;&#x2F;a&gt;NORMAL MODE — MOTIONS&lt;&#x2F;h2&gt;
&lt;p&gt;Motions move the cursor. Every motion can be preceded by a count. Motions combined with operators form the editing grammar.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;character-motions&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#character-motions&quot; aria-label=&quot;Anchor link for: character-motions&quot;&gt;🔗&lt;&#x2F;a&gt;Character Motions&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Movement&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;h&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Left one character&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;j&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Down one line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;k&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Up one line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;l&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Right one character&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;0&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Column zero (start of line, including whitespace)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;^&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;First non-blank character of line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;$&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;End of line (after last character)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;g_&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Last non-blank character of line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;word-motions&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#word-motions&quot; aria-label=&quot;Anchor link for: word-motions&quot;&gt;🔗&lt;&#x2F;a&gt;Word Motions&lt;&#x2F;h3&gt;
&lt;p&gt;A &lt;strong&gt;word&lt;&#x2F;strong&gt; is a sequence of alphanumeric characters and underscores. A &lt;strong&gt;WORD&lt;&#x2F;strong&gt; is any sequence of non-whitespace characters.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Movement&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;w&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Start of next word&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;W&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Start of next WORD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;b&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Start of previous word&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;B&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Start of previous WORD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;e&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;End of current&#x2F;next word&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;E&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;End of current&#x2F;next WORD&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;find-and-to-character-search-on-line&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#find-and-to-character-search-on-line&quot; aria-label=&quot;Anchor link for: find-and-to-character-search-on-line&quot;&gt;🔗&lt;&#x2F;a&gt;Find and To (Character Search on Line)&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Movement&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;f{c}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Forward to next occurrence of character &lt;code&gt;c&lt;&#x2F;code&gt; on line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;F{c}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Backward to previous occurrence of &lt;code&gt;c&lt;&#x2F;code&gt; on line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;t{c}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Forward to just before next &lt;code&gt;c&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;T{c}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Backward to just after previous &lt;code&gt;c&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Repeat last &lt;code&gt;f&#x2F;F&#x2F;t&#x2F;T&lt;&#x2F;code&gt; in same direction&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;,&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Repeat last &lt;code&gt;f&#x2F;F&#x2F;t&#x2F;T&lt;&#x2F;code&gt; in opposite direction&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;line-number-and-document-motions&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#line-number-and-document-motions&quot; aria-label=&quot;Anchor link for: line-number-and-document-motions&quot;&gt;🔗&lt;&#x2F;a&gt;Line Number and Document Motions&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Movement&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;gg&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;First line of file&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;G&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Last line of file&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;{N}G&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Line N&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;%&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Matching bracket&#x2F;paren&#x2F;brace&#x2F;HTML tag&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;{&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Start of previous paragraph&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Start of next paragraph&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;normal-mode-operators&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#normal-mode-operators&quot; aria-label=&quot;Anchor link for: normal-mode-operators&quot;&gt;🔗&lt;&#x2F;a&gt;NORMAL MODE — OPERATORS&lt;&#x2F;h2&gt;
&lt;p&gt;Operators act on the text covered by a following motion or text object. The pattern is: &lt;code&gt;[count] {operator} [count] {motion}&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Action&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;d&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete (cut — goes into register)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;y&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yank (copy)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;c&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Change (delete then enter Insert mode)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Indent right&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&amp;lt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Indent left&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;=&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Auto-indent (format indentation)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;gq&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Format lines (wrap to textwidth)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;gU&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Uppercase&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;gu&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Lowercase&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Toggle case of character under cursor&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;composed-examples&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#composed-examples&quot; aria-label=&quot;Anchor link for: composed-examples&quot;&gt;🔗&lt;&#x2F;a&gt;Composed Examples&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;d3w&lt;&#x2F;code&gt; -- delete 3 words&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;d$&lt;&#x2F;code&gt; -- delete to end of line&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;dd&lt;&#x2F;code&gt; -- delete current line&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;dG&lt;&#x2F;code&gt; -- delete to end of file&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;yap&lt;&#x2F;code&gt; -- yank around paragraph&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;ci&quot;&lt;&#x2F;code&gt; -- change inside double quotes&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;gUiw&lt;&#x2F;code&gt; -- uppercase inner word&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;the-dot-command&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-dot-command&quot; aria-label=&quot;Anchor link for: the-dot-command&quot;&gt;🔗&lt;&#x2F;a&gt;The Dot Command&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;.&lt;&#x2F;code&gt; repeats the last &lt;strong&gt;change&lt;&#x2F;strong&gt; — not the last command. A change is any action that modified text: insert, delete, replace, etc. Design your edits for repeatability. For example: &lt;code&gt;ciw&amp;lt;new text&amp;gt;&amp;lt;Esc&amp;gt;&lt;&#x2F;code&gt;, then press &lt;code&gt;.&lt;&#x2F;code&gt; on the next word to apply the identical change.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;text-objects&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#text-objects&quot; aria-label=&quot;Anchor link for: text-objects&quot;&gt;🔗&lt;&#x2F;a&gt;TEXT OBJECTS&lt;&#x2F;h2&gt;
&lt;p&gt;Text objects allow selecting structured regions of text without navigating to their boundaries. They only work after an operator or in visual mode. Format: &lt;code&gt;{i|a}{object}&lt;&#x2F;code&gt; — &lt;code&gt;i&lt;&#x2F;code&gt; = inner (without delimiters), &lt;code&gt;a&lt;&#x2F;code&gt; = around (with delimiters).&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Object&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Inner (i)&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Around (a)&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;w&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Word&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Word + surrounding whitespace&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;W&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;WORD&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;WORD + surrounding whitespace&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;s&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Sentence&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Sentence + whitespace&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;p&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paragraph&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Paragraph + blank lines&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Inside double quotes&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Including double quotes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&#x27;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Inside single quotes&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Including single quotes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;(&lt;&#x2F;code&gt; or &lt;code&gt;)&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Inside parentheses&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Including parentheses&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;[&lt;&#x2F;code&gt; or &lt;code&gt;]&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Inside square brackets&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Including brackets&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;{&lt;&#x2F;code&gt; or &lt;code&gt;}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Inside curly braces&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Including braces&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;t&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Inside HTML&#x2F;XML tag&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Including the tags&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;text-object-examples&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#text-object-examples&quot; aria-label=&quot;Anchor link for: text-object-examples&quot;&gt;🔗&lt;&#x2F;a&gt;Text Object Examples&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;diw&lt;&#x2F;code&gt; -- delete inner word (leaves whitespace)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;daw&lt;&#x2F;code&gt; -- delete around word (removes word + space)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;ci(&lt;&#x2F;code&gt; -- change inside parentheses&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;yi&#x27;&lt;&#x2F;code&gt; -- yank inside single quotes&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;insert-mode&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#insert-mode&quot; aria-label=&quot;Anchor link for: insert-mode&quot;&gt;🔗&lt;&#x2F;a&gt;INSERT MODE&lt;&#x2F;h2&gt;
&lt;p&gt;Insert mode is where you type text. The goal is to enter it, type the minimum, and leave.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Entry Point&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;i&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Before the cursor&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;I&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Before first non-blank character of line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;a&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;After the cursor&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;A&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;After the last character of line (end of line)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;o&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Open new line below and enter insert&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;O&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Open new line above and enter insert&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;s&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete character under cursor and enter insert&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;S&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete entire line content and enter insert&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;c{motion}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete through motion, enter insert&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;insert-mode-commands&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#insert-mode-commands&quot; aria-label=&quot;Anchor link for: insert-mode-commands&quot;&gt;🔗&lt;&#x2F;a&gt;Insert Mode Commands&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Action&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-[&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Exit Insert mode (same as Escape)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-w&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete word before cursor&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-u&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Delete all characters before cursor on current line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-o&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Execute one Normal mode command, return to Insert&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-r {reg}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Insert contents of register&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;visual-mode&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#visual-mode&quot; aria-label=&quot;Anchor link for: visual-mode&quot;&gt;🔗&lt;&#x2F;a&gt;VISUAL MODE&lt;&#x2F;h2&gt;
&lt;p&gt;Visual mode lets you select a region and then apply an operator to it.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Key&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Mode&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Character-wise visual&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;V&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Line-wise visual&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Block visual&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;gv&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Reselect last visual selection&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;o&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Toggle cursor to opposite end of selection&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;block-visual-mode&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#block-visual-mode&quot; aria-label=&quot;Anchor link for: block-visual-mode&quot;&gt;🔗&lt;&#x2F;a&gt;Block Visual Mode&lt;&#x2F;h3&gt;
&lt;p&gt;Block visual (&lt;code&gt;Ctrl-v&lt;&#x2F;code&gt;) selects a rectangular region. Operations apply to each line of the block independently. This is extremely powerful for prepending text to multiple lines simultaneously (&lt;code&gt;Ctrl-v&lt;&#x2F;code&gt;, select lines, &lt;code&gt;I&lt;&#x2F;code&gt;, type text, &lt;code&gt;Escape&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;command-line-mode&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#command-line-mode&quot; aria-label=&quot;Anchor link for: command-line-mode&quot;&gt;🔗&lt;&#x2F;a&gt;COMMAND-LINE MODE&lt;&#x2F;h2&gt;
&lt;p&gt;Command-line mode is entered with &lt;code&gt;:&lt;&#x2F;code&gt;, &lt;code&gt;&#x2F;&lt;&#x2F;code&gt;, &lt;code&gt;?&lt;&#x2F;code&gt;, or &lt;code&gt;!&lt;&#x2F;code&gt;. It accepts Ex commands, search patterns, and shell commands.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ranges&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ranges&quot; aria-label=&quot;Anchor link for: ranges&quot;&gt;🔗&lt;&#x2F;a&gt;Ranges&lt;&#x2F;h3&gt;
&lt;p&gt;Ranges prefix Ex commands to specify which lines they operate on.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;%&lt;&#x2F;code&gt; Entire file (same as &lt;code&gt;1,$&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;&#x27;&amp;lt;,&#x27;&amp;gt;&lt;&#x2F;code&gt; Last visual selection (auto-populated when pressing &lt;code&gt;:&lt;&#x2F;code&gt; in Visual mode)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;1,10&lt;&#x2F;code&gt; Lines 1 to 10&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;.,+5&lt;&#x2F;code&gt; Current line to 5 lines below&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;global-command-g&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#global-command-g&quot; aria-label=&quot;Anchor link for: global-command-g&quot;&gt;🔗&lt;&#x2F;a&gt;Global Command (:g)&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;:g&#x2F;{pattern}&#x2F;{command}&lt;&#x2F;code&gt; runs a command on every line matching a pattern.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:g&#x2F;TODO&#x2F;d&lt;&#x2F;code&gt; &quot; delete all TODO lines&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:g&#x2F;^$&#x2F;d&lt;&#x2F;code&gt; &quot; delete blank lines&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:v&#x2F;pattern&#x2F;d&lt;&#x2F;code&gt; &quot; delete all non-matching lines&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;filter-command&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#filter-command&quot; aria-label=&quot;Anchor link for: filter-command&quot;&gt;🔗&lt;&#x2F;a&gt;Filter Command (:!)&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:%!sort&lt;&#x2F;code&gt; &quot; sort entire file&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:&#x27;&amp;lt;,&#x27;&amp;gt;!python3&lt;&#x2F;code&gt; &quot; run visual selection through python&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;search-and-substitute&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#search-and-substitute&quot; aria-label=&quot;Anchor link for: search-and-substitute&quot;&gt;🔗&lt;&#x2F;a&gt;SEARCH AND SUBSTITUTE&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;search&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#search&quot; aria-label=&quot;Anchor link for: search&quot;&gt;🔗&lt;&#x2F;a&gt;Search&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&#x2F;pattern&lt;&#x2F;code&gt; &quot; search forward&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;?pattern&lt;&#x2F;code&gt; &quot; search backward&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;n&lt;&#x2F;code&gt; &quot; next match (same direction)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;N&lt;&#x2F;code&gt; &quot; previous match (opposite direction)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;*&lt;&#x2F;code&gt; &quot; search word under cursor forward (whole word)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Your configuration ensures searches are fast and ergonomic:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ignorecase&lt;&#x2F;code&gt; is enabled so lowercase inputs match both cases.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;smartcase&lt;&#x2F;code&gt; is enabled so queries containing uppercase letters strictly match case.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;substitute&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#substitute&quot; aria-label=&quot;Anchor link for: substitute&quot;&gt;🔗&lt;&#x2F;a&gt;Substitute&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:s&#x2F;old&#x2F;new&#x2F;&lt;&#x2F;code&gt; &quot; replace first match on current line&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:%s&#x2F;old&#x2F;new&#x2F;g&lt;&#x2F;code&gt; &quot; replace all matches in file&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:%s&#x2F;old&#x2F;new&#x2F;gc&lt;&#x2F;code&gt; &quot; replace all, confirm each&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:&#x27;&amp;lt;,&#x27;&amp;gt;s&#x2F;old&#x2F;new&#x2F;g&lt;&#x2F;code&gt; &quot; replace in visual selection&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;registers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#registers&quot; aria-label=&quot;Anchor link for: registers&quot;&gt;🔗&lt;&#x2F;a&gt;REGISTERS&lt;&#x2F;h2&gt;
&lt;p&gt;Registers store text. They are accessed with &lt;code&gt;&quot;&lt;&#x2F;code&gt; followed by the register name.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Register&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Name&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Unnamed&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Last deleted, changed, or yanked text&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;0&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Yank&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Most recent yank only (not affected by delete)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;1&lt;&#x2F;code&gt;–&lt;code&gt;&quot;9&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Numbered&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Rolling history of deletes and changes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;a&lt;&#x2F;code&gt;–&lt;code&gt;&quot;z&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Named&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;User-controlled, explicitly named&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;+&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Clipboard&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;System clipboard&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;_&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Black hole&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Discard — no register is affected&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&quot;&#x2F;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Search&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Last search pattern&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;the-unnamed-and-yank-registers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-unnamed-and-yank-registers&quot; aria-label=&quot;Anchor link for: the-unnamed-and-yank-registers&quot;&gt;🔗&lt;&#x2F;a&gt;The Unnamed and Yank Registers&lt;&#x2F;h3&gt;
&lt;p&gt;The most common confusion: &lt;code&gt;&quot;1&lt;&#x2F;code&gt; through &lt;code&gt;&quot;9&lt;&#x2F;code&gt; shift on every delete. But &lt;code&gt;&quot;0&lt;&#x2F;code&gt; only updates on explicit yanks, never on deletes. Always use &lt;code&gt;&quot;0p&lt;&#x2F;code&gt; to paste a yank after subsequent deletes.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;macros&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#macros&quot; aria-label=&quot;Anchor link for: macros&quot;&gt;🔗&lt;&#x2F;a&gt;MACROS&lt;&#x2F;h2&gt;
&lt;p&gt;Macros record a sequence of Normal, Insert, and Command-line mode actions into a register and replay them.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;q{register}&lt;&#x2F;code&gt; &quot; begin recording into register (e.g. &lt;code&gt;qq&lt;&#x2F;code&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;q&lt;&#x2F;code&gt; &quot; stop recording&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;@{register}&lt;&#x2F;code&gt; &quot; execute macro once&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;{N}@{register}&lt;&#x2F;code&gt; &quot; execute macro N times&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;@@&lt;&#x2F;code&gt; &quot; repeat last executed macro&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;windows-buffers-and-tabs&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#windows-buffers-and-tabs&quot; aria-label=&quot;Anchor link for: windows-buffers-and-tabs&quot;&gt;🔗&lt;&#x2F;a&gt;WINDOWS, BUFFERS, AND TABS&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;windows&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#windows&quot; aria-label=&quot;Anchor link for: windows&quot;&gt;🔗&lt;&#x2F;a&gt;Windows&lt;&#x2F;h3&gt;
&lt;p&gt;A window is a viewport onto a buffer.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl-w v&lt;&#x2F;code&gt; Vertical split&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;Ctrl-w s&lt;&#x2F;code&gt; Horizontal split&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;Ctrl-w h&#x2F;j&#x2F;k&#x2F;l&lt;&#x2F;code&gt; Move between windows&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;Ctrl-w =&lt;&#x2F;code&gt; Equalise all window sizes&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;Ctrl-w c&lt;&#x2F;code&gt; Close window&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;buffers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#buffers&quot; aria-label=&quot;Anchor link for: buffers&quot;&gt;🔗&lt;&#x2F;a&gt;Buffers&lt;&#x2F;h3&gt;
&lt;p&gt;A buffer is a file loaded into memory. It exists whether or not it is currently displayed in a window.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:ls&lt;&#x2F;code&gt; &quot; list all listed buffers&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:b{N}&lt;&#x2F;code&gt; &quot; switch to buffer N&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:bn&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;:bp&lt;&#x2F;code&gt; &quot; next &#x2F; previous buffer&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;:bd&lt;&#x2F;code&gt; &quot; unload and remove current buffer&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;tabs&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#tabs&quot; aria-label=&quot;Anchor link for: tabs&quot;&gt;🔗&lt;&#x2F;a&gt;Tabs&lt;&#x2F;h3&gt;
&lt;p&gt;Tabs in Vim are not like editor tabs — they are separate window layouts, each containing their own set of splits. Use tabs for distinct working contexts, not for individual files.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:tabnew&lt;&#x2F;code&gt; &quot; open new tab&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;gt&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;gT&lt;&#x2F;code&gt; &quot; Next &#x2F; previous tab&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;neovim-lua-essentials&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#neovim-lua-essentials&quot; aria-label=&quot;Anchor link for: neovim-lua-essentials&quot;&gt;🔗&lt;&#x2F;a&gt;NEOVIM LUA ESSENTIALS&lt;&#x2F;h2&gt;
&lt;p&gt;Neovim exposes its API through the &lt;code&gt;vim&lt;&#x2F;code&gt; global Lua object.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;lua&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vim.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;opt&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;number&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;          -- set an option&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vim.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;g&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mapleader&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot; &amp;quot;          &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;-- set a global variable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vim.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;fn&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;expand&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;%&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)             &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;-- call a Vim built-in function&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vim.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cmd&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;w&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)                   &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;-- execute Ex commands&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vim.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;api&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;nvim_get_current_buf&lt;&#x2F;span&gt;&lt;span&gt;() &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;-- interact with the Neovim C API&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;neovim-lua-autocommands&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#neovim-lua-autocommands&quot; aria-label=&quot;Anchor link for: neovim-lua-autocommands&quot;&gt;🔗&lt;&#x2F;a&gt;Neovim Lua Autocommands&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;lua&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;vim.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;api&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;nvim_create_autocmd&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;FileType&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  pattern&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; { &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;lua&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;sh&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;, &lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;markdown&amp;quot; &lt;&#x2F;span&gt;&lt;span&gt;},&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;  callback&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; = function&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    -- action to perform&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;  end&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;neovim-this-config-deep-dive&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#neovim-this-config-deep-dive&quot; aria-label=&quot;Anchor link for: neovim-this-config-deep-dive&quot;&gt;🔗&lt;&#x2F;a&gt;NEOVIM — THIS CONFIG DEEP-DIVE&lt;&#x2F;h2&gt;
&lt;p&gt;Your &lt;code&gt;init.lua&lt;&#x2F;code&gt; sets up a highly tailored, keyboard-driven development environment, leaning on modern Lua plugins rather than legacy Vimscript.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;core-settings&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#core-settings&quot; aria-label=&quot;Anchor link for: core-settings&quot;&gt;🔗&lt;&#x2F;a&gt;Core Settings&lt;&#x2F;h3&gt;
&lt;p&gt;Your environment establishes standard editor behaviors and aesthetics natively:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;mapleader&lt;&#x2F;code&gt; and &lt;code&gt;maplocalleader&lt;&#x2F;code&gt; are bound to the &lt;code&gt;Space&lt;&#x2F;code&gt; key.&lt;&#x2F;li&gt;
&lt;li&gt;Absolute line numbers (&lt;code&gt;number = true&lt;&#x2F;code&gt;) and relative line numbering (&lt;code&gt;relativenumber = true&lt;&#x2F;code&gt;) are both enabled to facilitate rapid vertical jumping.&lt;&#x2F;li&gt;
&lt;li&gt;Full mouse support is active across all modes (&lt;code&gt;mouse = &quot;a&quot;&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Case-insensitive searching is enabled (&lt;code&gt;ignorecase = true&lt;&#x2F;code&gt;), which intelligently becomes case-sensitive if you type an uppercase character (&lt;code&gt;smartcase = true&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;The &lt;code&gt;updatetime&lt;&#x2F;code&gt; is lowered to &lt;code&gt;250&lt;&#x2F;code&gt; milliseconds, ensuring diagnostics and plugin updates feel responsive.&lt;&#x2F;li&gt;
&lt;li&gt;True 24-bit color is enforced with &lt;code&gt;termguicolors = true&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;System clipboard integration is handled seamlessly using the &lt;code&gt;unnamedplus&lt;&#x2F;code&gt; register.&lt;&#x2F;li&gt;
&lt;li&gt;The &lt;code&gt;spelllang&lt;&#x2F;code&gt; is strictly set to &lt;code&gt;&quot;en_gb&quot;&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;package-management-lazy-nvim&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#package-management-lazy-nvim&quot; aria-label=&quot;Anchor link for: package-management-lazy-nvim&quot;&gt;🔗&lt;&#x2F;a&gt;Package Management: Lazy.nvim&lt;&#x2F;h3&gt;
&lt;p&gt;The setup utilizes &lt;code&gt;lazy.nvim&lt;&#x2F;code&gt; as its package manager. It dynamically bootstraps itself via &lt;code&gt;git clone&lt;&#x2F;code&gt; into &lt;code&gt;stdpath(&quot;data&quot;) .. &quot;&#x2F;lazy&#x2F;lazy.nvim&quot;&lt;&#x2F;code&gt; if the directory does not exist. It targets the &lt;code&gt;stable&lt;&#x2F;code&gt; branch and enforces a blobless clone (&lt;code&gt;--filter=blob:none&lt;&#x2F;code&gt;) for speed.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;plugins&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#plugins&quot; aria-label=&quot;Anchor link for: plugins&quot;&gt;🔗&lt;&#x2F;a&gt;Plugins&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;theme-flexoki&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#theme-flexoki&quot; aria-label=&quot;Anchor link for: theme-flexoki&quot;&gt;🔗&lt;&#x2F;a&gt;Theme: Flexoki&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;kepano&#x2F;flexoki-neovim&lt;&#x2F;code&gt; plugin is loaded with top priority (&lt;code&gt;priority = 1000&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;It executes the &lt;code&gt;colorscheme flexoki-dark&lt;&#x2F;code&gt; command immediately upon loading.&lt;&#x2F;li&gt;
&lt;li&gt;It explicitly overrides the &lt;code&gt;Normal&lt;&#x2F;code&gt; and &lt;code&gt;NormalFloat&lt;&#x2F;code&gt; highlight groups, painting their backgrounds with the &lt;code&gt;#100F0F&lt;&#x2F;code&gt; hex code to mesh perfectly with your broader Sway&#x2F;system aesthetic.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;syntax-and-parsing-nvim-treesitter&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#syntax-and-parsing-nvim-treesitter&quot; aria-label=&quot;Anchor link for: syntax-and-parsing-nvim-treesitter&quot;&gt;🔗&lt;&#x2F;a&gt;Syntax and Parsing: Nvim-Treesitter&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nvim-treesitter&#x2F;nvim-treesitter&lt;&#x2F;code&gt; is configured to download and compile parsers natively.&lt;&#x2F;li&gt;
&lt;li&gt;It is explicitly instructed to install parsers for &lt;code&gt;lua&lt;&#x2F;code&gt;, &lt;code&gt;bash&lt;&#x2F;code&gt;, &lt;code&gt;markdown&lt;&#x2F;code&gt;, and &lt;code&gt;markdown_inline&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;A &lt;code&gt;FileType&lt;&#x2F;code&gt; autocommand triggers &lt;code&gt;vim.treesitter.start()&lt;&#x2F;code&gt; automatically whenever you open &lt;code&gt;lua&lt;&#x2F;code&gt;, &lt;code&gt;sh&lt;&#x2F;code&gt;, or &lt;code&gt;markdown&lt;&#x2F;code&gt; files.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;autocompletion-nvim-cmp&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#autocompletion-nvim-cmp&quot; aria-label=&quot;Anchor link for: autocompletion-nvim-cmp&quot;&gt;🔗&lt;&#x2F;a&gt;Autocompletion: Nvim-Cmp&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;hrsh7th&#x2F;nvim-cmp&lt;&#x2F;code&gt; plugin handles code completion, relying strictly on two local dependencies: &lt;code&gt;cmp-path&lt;&#x2F;code&gt; and &lt;code&gt;cmp-buffer&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;The &lt;code&gt;sources&lt;&#x2F;code&gt; configuration limits data aggregation to local file paths (&lt;code&gt;{ name = &quot;path&quot; }&lt;&#x2F;code&gt;) and current text buffers (&lt;code&gt;{ name = &quot;buffer&quot; }&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Key mappings are explicitly structured around standard control keys: &lt;code&gt;&amp;lt;C-b&amp;gt;&lt;&#x2F;code&gt; scrolls docs up, &lt;code&gt;&amp;lt;C-f&amp;gt;&lt;&#x2F;code&gt; scrolls docs down, &lt;code&gt;&amp;lt;C-Space&amp;gt;&lt;&#x2F;code&gt; manually triggers the menu, &lt;code&gt;&amp;lt;C-e&amp;gt;&lt;&#x2F;code&gt; aborts the operation, and &lt;code&gt;&amp;lt;CR&amp;gt;&lt;&#x2F;code&gt; confirms the selection.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;buffer-navigation-bufferline-nvim&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#buffer-navigation-bufferline-nvim&quot; aria-label=&quot;Anchor link for: buffer-navigation-bufferline-nvim&quot;&gt;🔗&lt;&#x2F;a&gt;Buffer Navigation: Bufferline.nvim&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;akinsho&#x2F;bufferline.nvim&lt;&#x2F;code&gt; requires &lt;code&gt;nvim-web-devicons&lt;&#x2F;code&gt; to function correctly in your setup.&lt;&#x2F;li&gt;
&lt;li&gt;The bar is configured in &lt;code&gt;buffers&lt;&#x2F;code&gt; mode, rendering background buffers at the top of the terminal.&lt;&#x2F;li&gt;
&lt;li&gt;It displays &lt;code&gt;ordinal&lt;&#x2F;code&gt; numbers on the tabs and hides all graphical closing icons (&lt;code&gt;show_buffer_close_icons = false&lt;&#x2F;code&gt;, &lt;code&gt;show_close_icon = false&lt;&#x2F;code&gt;) for a cleaner visual profile.&lt;&#x2F;li&gt;
&lt;li&gt;It enforces regular tabs (&lt;code&gt;enforce_regular_tabs = true&lt;&#x2F;code&gt;), a thin separator (&lt;code&gt;separator_style = &quot;thin&quot;&lt;&#x2F;code&gt;), and ensures the bar is always visible.&lt;&#x2F;li&gt;
&lt;li&gt;Custom keymaps are defined for navigation: &lt;code&gt;&amp;lt;S-h&amp;gt;&lt;&#x2F;code&gt; calls &lt;code&gt;&amp;lt;cmd&amp;gt;BufferLineCyclePrev&amp;lt;CR&amp;gt;&lt;&#x2F;code&gt;, &lt;code&gt;&amp;lt;S-l&amp;gt;&lt;&#x2F;code&gt; calls &lt;code&gt;&amp;lt;cmd&amp;gt;BufferLineCycleNext&amp;lt;CR&amp;gt;&lt;&#x2F;code&gt;, and &lt;code&gt;&amp;lt;leader&amp;gt;x&lt;&#x2F;code&gt; terminates the active buffer with &lt;code&gt;&amp;lt;cmd&amp;gt;bdelete&amp;lt;CR&amp;gt;&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;markdown-enhancements-render-markdown&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#markdown-enhancements-render-markdown&quot; aria-label=&quot;Anchor link for: markdown-enhancements-render-markdown&quot;&gt;🔗&lt;&#x2F;a&gt;Markdown Enhancements: Render-Markdown&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MeanderingProgrammer&#x2F;render-markdown.nvim&lt;&#x2F;code&gt; leverages both treesitter and devicons to paint Markdown files beautifully in the terminal.&lt;&#x2F;li&gt;
&lt;li&gt;Heading signs are disabled (&lt;code&gt;sign = false&lt;&#x2F;code&gt;), and heading icons are replaced with a custom array of specialized font characters (&lt;code&gt;&#x27;󰲡 &#x27;&lt;&#x2F;code&gt;, &lt;code&gt;&#x27;󰲣 &#x27;&lt;&#x2F;code&gt;, &lt;code&gt;&#x27;󰲥 &#x27;&lt;&#x2F;code&gt;, &lt;code&gt;&#x27;󰲧 &#x27;&lt;&#x2F;code&gt;, &lt;code&gt;&#x27;󰲩 &#x27;&lt;&#x2F;code&gt;, &lt;code&gt;&#x27;󰲫 &#x27;&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Code blocks disable the standard sign column, render natively as visual blocks (&lt;code&gt;width = &quot;block&quot;&lt;&#x2F;code&gt;), and inject a minor right-side padding (&lt;code&gt;right_pad = 1&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h4 id=&quot;writing-focus-zen-mode-nvim&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#writing-focus-zen-mode-nvim&quot; aria-label=&quot;Anchor link for: writing-focus-zen-mode-nvim&quot;&gt;🔗&lt;&#x2F;a&gt;Writing Focus: Zen-mode.nvim&lt;&#x2F;h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;folke&#x2F;zen-mode.nvim&lt;&#x2F;code&gt; strips away terminal distractions.&lt;&#x2F;li&gt;
&lt;li&gt;The isolated window is restricted to a column width of 80 (&lt;code&gt;width = 80&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;Absolute and relative line numbers are forcefully disabled within the Zen pane (&lt;code&gt;number = false&lt;&#x2F;code&gt;, &lt;code&gt;relativenumber = false&lt;&#x2F;code&gt;).&lt;&#x2F;li&gt;
&lt;li&gt;It is triggered instantly via the &lt;code&gt;&amp;lt;leader&amp;gt;z&lt;&#x2F;code&gt; keybinding, invoking &lt;code&gt;&amp;lt;cmd&amp;gt;ZenMode&amp;lt;CR&amp;gt;&lt;&#x2F;code&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Archinstall</title>
          <pubDate>Wed, 22 Apr 2026 11:04:49 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/archinstall/</link>
          <guid>https://daesorin.xyz/posts/archinstall/</guid>
          <description xml:base="https://daesorin.xyz/posts/archinstall/">&lt;ol&gt;
&lt;li&gt;Pre-Flight
Boot the Arch Linux live USB in UEFI mode and confirm the firmware interface:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CHECK UEFI FIRMWARE VARIABLES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ls&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;sys&#x2F;firmware&#x2F;efi&#x2F;efivars&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Set the keyboard layout immediately. The default US layout will mangle your LUKS passphrase during creation if you rely on a UK keyboard.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# LOAD UK KEYBOARD LAYOUT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;loadkeys&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; uk&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Connect to the network and synchronise the system clock:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# TEST NETWORK CONNECTIVITY&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ping&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -c 3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; archlinux.org&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CONNECT WIRELESSLY VIA IWCTL IF REQUIRED&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;iwctl&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# station wlan0 scan&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# station wlan0 connect &amp;lt;ssid&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# SYNCHRONISE SYSTEM CLOCK&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;timedatectl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; set-ntp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;timedatectl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; status&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Storage Architecture
The system resides on a single NVMe drive. The partition table divides the drive into an EFI system partition, an unencrypted boot partition, and a primary encrypted container:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Partition&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Size&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Role&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Filesystem&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&#x2F;dev&#x2F;nvme0n1p1&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;1 GiB&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;EFI System Partition&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;vfat, unencrypted&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&#x2F;dev&#x2F;nvme0n1p2&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;2 GiB&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&#x2F;boot&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;ext4, unencrypted&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&#x2F;dev&#x2F;nvme0n1p3&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;~253 GiB&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;LUKS2 container&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;encrypted XTS-plain64&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;Inside the LUKS container, Logical Volume Management carves out four volumes:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Volume&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Size&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Filesystem&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Role&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;vg0&#x2F;swap&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;16 GiB&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;swap&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;virtual memory and hibernation&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;vg0&#x2F;root&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;50 GiB&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;XFS&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;system root&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;vg0&#x2F;var&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;20 GiB&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;XFS&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;variable data and logs&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;vg0&#x2F;home&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;~167 GiB&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;XFS&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;user directories&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;2.1 Wipe the Drive&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# WIPE EXISTING SIGNATURES AND PARTITIONS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;wipefs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;2.2 Partition&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CREATE GPT PARTITION TABLE AND SLICES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;parted&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1 mklabel gpt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;parted&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1 mkpart ESP fat32 1MiB 1025MiB&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;parted&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1 set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; esp on&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;parted&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1 mkpart primary ext4 1025MiB 3073MiB&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;parted&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1 mkpart primary 3073MiB 100%&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;2.3 Encrypt the Root Partition&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# INITIALISE LUKS2 CONTAINER WITH 512 BIT KEY&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;cryptsetup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; luksFormat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --type&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; luks2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --cipher&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; aes-xts-plain64&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --key-size 512&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1p3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# OPEN ENCRYPTED CONTAINER&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;cryptsetup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; open &#x2F;dev&#x2F;nvme0n1p3 cryptroot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;2.4 LVM&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# INITIALISE PHYSICAL VOLUME AND VOLUME GROUP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;pvcreate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;mapper&#x2F;cryptroot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;vgcreate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; vg0 &#x2F;dev&#x2F;mapper&#x2F;cryptroot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# ALLOCATE LOGICAL VOLUMES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;lvcreate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -L&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; 16G&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;      -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; swap vg0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;lvcreate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -L&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; 50G&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;      -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; root vg0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;lvcreate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -L&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; 20G&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;      -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; var  vg0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;lvcreate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -l&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; 100%FREE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; home vg0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;2.5 Format&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# FORMAT BOOT AND EFI PARTITIONS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkfs.vfat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -F32&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1p1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkfs.ext4&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;      &#x2F;dev&#x2F;nvme0n1p2&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# FORMAT LOGICAL VOLUMES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkfs.xfs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;vg0&#x2F;root&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkfs.xfs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;vg0&#x2F;var&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkfs.xfs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;vg0&#x2F;home&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkswap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;   &#x2F;dev&#x2F;vg0&#x2F;swap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;2.6 Mount
Mount the filesystems in strict hierarchical order to prevent directory obscuration:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# MOUNT ROOT AND CREATE BASE DIRECTORY STRUCTURE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mount&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;vg0&#x2F;root &#x2F;mnt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&#x2F;{boot,home,var}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# MOUNT BOOT AND CREATE EFI MOUNT POINT INSIDE IT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mount&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1p2 &#x2F;mnt&#x2F;boot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&#x2F;boot&#x2F;efi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mount&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1p1 &#x2F;mnt&#x2F;boot&#x2F;efi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# MOUNT REMAINING LOGICAL VOLUMES AND ACTIVATE SWAP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mount&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;vg0&#x2F;var   &#x2F;mnt&#x2F;var&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mount&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;vg0&#x2F;home  &#x2F;mnt&#x2F;home&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;swapon&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;vg0&#x2F;swap&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Base Installation
Install the base operating system, hardware drivers, Niri, and your Wayland utility stack:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# INSTALL BASE SYSTEM AND PACKAGES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;pacstrap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -K&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  base base-devel linux linux-headers linux-firmware&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  intel-ucode&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  lvm2 cryptsetup xfsprogs e2fsprogs dosfstools&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  neovim tmux git networkmanager man-db man-pages sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  mesa vulkan-intel intel-media-driver&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  niri waybar rofi-wayland&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  xdg-desktop-portal-gnome xdg-desktop-portal-gtk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  xdg-user-dirs polkit-gnome&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  ly&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  kitty wl-clipboard grim slurp&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  swaybg swaylock swayidle mako&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber pavucontrol&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  bluez bluez-utils&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  tlp tlp-rdw acpid brightnessctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;  ttf-ibm-plex noto-fonts noto-fonts-emoji ttf-jetbrains-mono-nerd&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Generate the filesystem table using universally unique identifiers:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# GENERATE FILESYSTEM TABLE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;genfstab&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -U&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&#x2F;etc&#x2F;fstab&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&#x2F;etc&#x2F;fstab&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;System Configuration
Enter the new system installation:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# ENTER CHROOT ENVIRONMENT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;arch-chroot&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;4.1 Timezone and Locale&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CONFIGURE TIMEZONE AND CLOCK&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;ln&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -sf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;usr&#x2F;share&#x2F;zoneinfo&#x2F;Africa&#x2F;Lagos &#x2F;etc&#x2F;localtime&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;hwclock&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --systohc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# GENERATE AND APPLY LOCALE&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sed&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;#39;s&#x2F;^#en_GB.UTF-8 UTF-8&#x2F;en_GB.UTF-8 UTF-8&#x2F;&amp;#39; &#x2F;etc&#x2F;locale.gen&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;locale-gen&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;LANG=en_GB.UTF-8&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;locale.conf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;4.2 Keymap
Write the configuration directly to &lt;code&gt;&#x2F;etc&#x2F;vconsole.conf&lt;&#x2F;code&gt;. The initramfs generation hooks read this file automatically:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# PERSIST CONSOLE KEYBOARD LAYOUT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;KEYMAP=uk&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;vconsole.conf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;4.3 Network Identity&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# SET HOSTNAME AND HOSTS ENTRIES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;arch&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;hostname&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;EOF&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; &#x2F;etc&#x2F;hosts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;127.0.0.1   localhost&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;::1         localhost&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;127.0.1.1   arch.localdomain arch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;EOF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;# ENABLE NETWORK MANAGEMENT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;systemctl enable NetworkManager&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;4.4 Initramfs
Edit &lt;code&gt;&#x2F;etc&#x2F;mkinitcpio.conf&lt;&#x2F;code&gt; and configure the &lt;code&gt;HOOKS&lt;&#x2F;code&gt; array. Placing &lt;code&gt;microcode&lt;&#x2F;code&gt; immediately after &lt;code&gt;autodetect&lt;&#x2F;code&gt; bundles CPU microcode updates directly into the main kernel initramfs image:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# MODIFY INITRAMFS HOOKS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;nvim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;mkinitcpio.conf&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensure the line reads exactly:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt lvm2 resume filesystems fsck)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Generate the boot images:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# COMPILE INITRAMFS IMAGES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkinitcpio&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -P&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Bootloader&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# INSTALL GRUB AND EFI BOOT MANAGEMENT TOOLS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; grub efibootmgr&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Retrieve the UUID of your encrypted LUKS partition:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# LOCATE LUKS PARTITION UUID&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;blkid&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;dev&#x2F;nvme0n1p3&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Edit &lt;code&gt;&#x2F;etc&#x2F;default&#x2F;grub&lt;&#x2F;code&gt; and populate the &lt;code&gt;GRUB_CMDLINE_LINUX&lt;&#x2F;code&gt; variable with the LUKS UUID and LVM volume mappings:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CONFIGURE GRUB KERNEL PARAMETERS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;nvim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;default&#x2F;grub&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Set the line as follows, substituting &lt;code&gt;&amp;lt;uuid&amp;gt;&lt;&#x2F;code&gt; with the actual string from &lt;code&gt;blkid&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;GRUB_CMDLINE_LINUX=&amp;quot;cryptdevice=UUID=&amp;lt;uuid&amp;gt;:cryptroot root=&#x2F;dev&#x2F;mapper&#x2F;vg0-root resume=&#x2F;dev&#x2F;mapper&#x2F;vg0-swap&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Install the bootloader to the EFI directory and generate the configuration file:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# INSTALL GRUB TO EFI PARTITION&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;grub-install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --target=x86_64-efi --efi-directory=&#x2F;boot&#x2F;efi \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;  --bootloader-id=GRUB --removable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# GENERATE GRUB CONFIGURATION&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;grub-mkconfig&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;boot&#x2F;grub&#x2F;grub.cfg&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;6&quot;&gt;
&lt;li&gt;User Management&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# ASSIGN ROOT PASSWORD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;passwd&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CREATE PRIMARY USER ACCOUNT WITH HARDWARE GROUPS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;useradd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -m -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -G&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; wheel,video,audio,storage,input osaigbovo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;passwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; osaigbovo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# GRANT SUDO PRIVILEGES TO WHEEL GROUP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;EDITOR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;nvim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; visudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Uncomment the &lt;code&gt;%wheel ALL=(ALL:ALL) ALL&lt;&#x2F;code&gt; line inside the sudoers file.&lt;&#x2F;p&gt;
&lt;ol start=&quot;7&quot;&gt;
&lt;li&gt;System Services
Enable required system daemons before exiting the chroot environment:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# ENABLE DISPLAY MANAGER AND HARDWARE SERVICES&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; enable ly&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; enable bluetooth&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; enable tlp&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; enable tlp-rdw&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; enable acpid&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# MASK RFKILL UNITS TO PREVENT TLP CONFLICTS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; mask systemd-rfkill.service systemd-rfkill.socket&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;PipeWire and WirePlumber operate exclusively as user session daemons. Modern Arch Linux packages configure socket activation by default. When you log in as &lt;code&gt;osaigbovo&lt;&#x2F;code&gt; for the first time, systemd automatically initiates the audio server and desktop portal infrastructure without requiring manual intervention.&lt;&#x2F;p&gt;
&lt;p&gt;7.1 Niri Configuration
Create the Niri configuration directory and file under your standard user account after first boot:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CREATE NIRI CONFIGURATION DIRECTORY&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;mkdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ~&#x2F;.config&#x2F;niri&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;nvim&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ~&#x2F;.config&#x2F;niri&#x2F;config.kdl&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Populate &lt;code&gt;config.kdl&lt;&#x2F;code&gt; with your environment variables, background, locker, idle management, and status bar configurations:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;kdl&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F; CONFIGURE WAYLAND ENVIRONMENT VARIABLES FOR INTEL GRAPHICS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;environment&lt;&#x2F;span&gt;&lt;span&gt; {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;    LIBVA_DRIVER_NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;iHD&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;    XDG_SESSION_TYPE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;wayland&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;    XDG_SESSION_DESKTOP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;niri&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;    XDG_CURRENT_DESKTOP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;niri&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;    QT_QPA_PLATFORM&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;wayland&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;    MOZ_ENABLE_WAYLAND&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;1&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;&#x2F;&#x2F; SPAWN SESSION DAEMONS AND UTILITIES AT STARTUP&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;spawn-at-startup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&#x2F;usr&#x2F;lib&#x2F;polkit-gnome&#x2F;polkit-gnome-authentication-agent-1&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;spawn-at-startup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;mako&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;spawn-at-startup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;waybar&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;spawn-at-startup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;swaybg&amp;quot; &amp;quot;-m&amp;quot; &amp;quot;fill&amp;quot; &amp;quot;-i&amp;quot; &amp;quot;&#x2F;home&#x2F;osaigbovo&#x2F;.config&#x2F;wallpaper.png&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #85E89D;&quot;&gt;spawn-at-startup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;swayidle&amp;quot; &amp;quot;-w&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;300&amp;quot; &amp;quot;swaylock -f&amp;quot; &amp;quot;timeout&amp;quot; &amp;quot;600&amp;quot; &amp;quot;niri msg action power-off-monitors&amp;quot; &amp;quot;resume&amp;quot; &amp;quot;niri msg action power-on-monitors&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ol start=&quot;8&quot;&gt;
&lt;li&gt;Finalisation
Exit the chroot environment, unmount all disks, deactivate the logical volumes, seal the LUKS container, and reboot the machine:&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# EXIT CHROOT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;exit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# DEACTIVATE SWAP AND UNMOUNT FILESYSTEMS&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;swapoff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -a&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;umount&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -R&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# DEACTIVATE VOLUME GROUP AND CLOSE LUKS CONTAINER&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;vgchange&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -an&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; vg0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;cryptsetup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; close cryptroot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# REBOOT SYSTEM&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;reboot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</description>
      </item>
      <item>
          <title>Linux is a Religion</title>
          <pubDate>Fri, 10 Apr 2026 23:49:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/linux-is-a-religion/</link>
          <guid>https://daesorin.xyz/posts/linux-is-a-religion/</guid>
          <description xml:base="https://daesorin.xyz/posts/linux-is-a-religion/">&lt;p&gt;Watching a digital crusade unfold in real-time on a Lemmy forum a few days ago, I was struck by a terrifying realisation. Dozens of users were locked in a fierce, polite, yet utterly unyielding holy war, each attempting to convert the heathens to their preferred Linux distribution. The rhetoric was indistinguishable from 16th-century theological debates, just heavily seasoned with acronyms. Unable to resist the gravitational pull of my own ego, I dropped a comment noting that I use Arch--a statement that effectively marks me as a fundamentalist. Seven people starred it. The dopamine hit was immediate, and deeply shameful.&lt;&#x2F;p&gt;
&lt;p&gt;There is a unique kind of dread that creeps up on you when you have spent two decades walking the earth as a committed atheist, viewing faith communities with the polite, anthropological distance of someone who considers theological devotion a cognitive defect, only to wake up one morning and realise you have accidentally joined a cult. I have become doctrinaire. I am devotional. I become quietly, irrationally furious when I see someone using &lt;code&gt;apt&lt;&#x2F;code&gt; instead of &lt;code&gt;pacman&lt;&#x2F;code&gt;. I have stumbled backward into the Linux, open-source, and privacy ecosystem and discovered a complete, all-encompassing theological system to fawn over.
&amp;lt;
Calling a subculture a &quot;religion&quot; is usually just a lazy linguistic shortcut to describe people who care a little too much about CrossFit or veganism. But a true religion does specific, heavy lifting for the human psyche. It provides a cosmology: an account of how the universe is structured and the foundational values holding it together. It produces orthodoxy, aggressively policing the boundary between correct belief and heresy. It generates an eschatology--a prophetic vision of how the world will ultimately end. It relies on highly specific rituals to mark the initiate against the uninitiated. Finally, it reproduces itself through conversion experiences that believers inevitably describe as &quot;seeing the light.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;The Linux community executes every single one of these functions with terrifying, structural precision.&lt;&#x2F;p&gt;
&lt;p&gt;Every religion requires a Genesis myth and a pantheon of prophets. Our foundational cosmology is the free software philosophy, and like all cosmologies worth dying for, it is a moral position disguised as a technical one. In the beginning, the code was closed, and darkness was upon the face of the mainframe. Then came Richard Stallman.&lt;&#x2F;p&gt;
&lt;p&gt;Stallman did not launch the GNU Project in 1983 because he crunched the numbers and calculated that open-source collaboration would yield fewer bugs. He launched it because he experienced a profound moral revulsion at the idea of proprietary software. To Stallman, a world where humans could not read, modify, and share the tools they depended on was a world where human autonomy had been fatally violated. He once wrote that he could have amused himself writing code for money, but knew that at the end of his career, he would look back on &quot;years of building walls to divide people.&quot; That is pure, unadulterated Old Testament prophet energy. Stallman views proprietary software the way an exorcist views a demon. To him, the General Public License (GPL) is an unbreakable covenant holding the forces of corporate enclosure at bay. &quot;Free as in speech, not as in beer.&quot; That distinction is the rock upon which the church is built.&lt;&#x2F;p&gt;
&lt;p&gt;Then came Linus Torvalds, the architect of the kernel itself. Torvalds is the New Testament pragmatist. He does not share Stallman’s rigid theology, once famously quipping, &quot;Talk is cheap. Show me the code.&quot; Torvalds is interested in what actually works, what compiles, and what scales, rather than maintaining absolute doctrinal purity.&lt;&#x2F;p&gt;
&lt;p&gt;The tension between the Stallmanite moralists and the Torvalds pragmatists is the defining schism of the ecosystem. It is a disagreement over the fundamental nature of the shared project: What are we building this for? Who does it serve? What compromises will condemn our souls to the corporate abyss? Consequently, every single Linux distribution is forced to take a position in this theological landscape.&lt;&#x2F;p&gt;
&lt;p&gt;Debian is the ancient orthodox church. Its commitment to free software purity is absolute. The installation is archaic, the packages are old, and the aesthetic is unforgiving, but it is ideologically flawless. Debian’s willingness to make your life difficult in exchange for ideological consistency is a pure confession of faith.&lt;&#x2F;p&gt;
&lt;p&gt;Ubuntu is the megachurch. It has the fog machines, the coffee shop in the lobby, and the charismatic pastor wearing trainers. Ubuntu looked at the masses and decided that the church had to grow, even if it meant shipping proprietary drivers and pushing Snap packages onto the congregation. In doctrinal terms, Ubuntu made concessions to the secular world, making an easy path available--a move the orthodox view as an unforgivable temptation.&lt;&#x2F;p&gt;
&lt;p&gt;Rocky Linux and the broader Red Hat Enterprise ecosystem sit in the Benedictine tradition. They are the enterprise monks: conservative, stable, and deeply uninterested in whatever shiny new toy the desktop users are arguing about. They patch what is known, certify what is tested, and serve massive financial institutions whose only prayer is five nines of uptime. I run Rocky in an Incus virtual machine right now while working through my CompTIA Linux+ certification, and I say this with reverence: there is deep, quiet dignity in an operating system that is exactly what it promises to be, and absolutely nothing else.&lt;&#x2F;p&gt;
&lt;p&gt;Alpine is the monastery clinging to the side of a frozen mountain. Ascetic to the point of near-invisibility, it uses &lt;code&gt;musl&lt;&#x2F;code&gt; instead of &lt;code&gt;glibc&lt;&#x2F;code&gt; and &lt;code&gt;BusyBox&lt;&#x2F;code&gt; instead of GNU coreutils. The container world reveres Alpine because it boots in milliseconds, occupies five megabytes of disk space, and does precisely what it is told without ever speaking out of turn. It simply exists, minimal and correct, like a hermit who has transcended the need for human language.&lt;&#x2F;p&gt;
&lt;p&gt;Of course, no religion is complete without a vividly imagined Hell, and our world is well supplied with heretics and demons.&lt;&#x2F;p&gt;
&lt;p&gt;The deepest, most fiery pit of Hell is Windows. Windows is Babylon. It is a corrupted, bloated leviathan powered by telemetry, forced updates, and corporate surveillance. To use Windows is to willingly sign over your digital sovereignty to a faceless corporation that views you not as a user, but as a harvestable data crop. Every time Microsoft injects an advertisement into the Start menu, a Linux user gets their wings.&lt;&#x2F;p&gt;
&lt;p&gt;macOS occupies a much more complex theological space: Limbo, or perhaps an exceptionally well-decorated Purgatory. It shares ancient Unix genetic material with the faithful, allowing you to open a terminal and use &lt;code&gt;grep&lt;&#x2F;code&gt;, &lt;code&gt;awk&lt;&#x2F;code&gt;, and &lt;code&gt;sed&lt;&#x2F;code&gt; just like the prophets intended. But the ecosystem is a gilded cage. It is utterly closed, unmodifiable, and strictly controlled by a trillion-dollar corporation with very aggressive opinions about what you are allowed to do with hardware you supposedly own. The people trapped in the Apple ecosystem are capable individuals who have simply chosen aesthetic comfort over freedom.&lt;&#x2F;p&gt;
&lt;p&gt;I say this with the sheepish awareness of someone who actually discovered the command line on a 2018 MacBook Air. That machine was my gateway drug. I found the terminal, realised it was just a &lt;code&gt;zsh&lt;&#x2F;code&gt; emulator, and discovered it could be modified. That tiny distinction--realising the interface was just a mask over the machine--cracked my entire reality open.&lt;&#x2F;p&gt;
&lt;p&gt;My conversion began in earnest last August. Looking at my university degree and the catastrophic state of the Nigerian economy, I concluded that my current trajectory was not going to produce a liveable income. I discovered the concept of DevOps, and subsequently fell headfirst into the Linux rabbit hole. These two events are linked in the same way a first sip of whiskey is linked to waking up in a different state.&lt;&#x2F;p&gt;
&lt;p&gt;I started on that MacBook Air, copying someone&#x27;s &lt;code&gt;zshrc&lt;&#x2F;code&gt; configuration from GitHub. I tweaked it, broke it, fixed it, and eventually built a highly customised terminal environment I pretentiously named &lt;em&gt;Aethria Systems&lt;&#x2F;em&gt;. Every time I added a new alias or changed the colour scheme, I versioned it, eventually stopping at version 2.1. It was an objectively absurd amount of emotional and intellectual investment poured into a text configuration file, and I regret absolutely nothing.&lt;&#x2F;p&gt;
&lt;p&gt;My secondary machine was a Lenovo ThinkPad bloated with Windows. I discovered the Windows Subsystem for Linux (WSL2), spent weeks learning the basic incantations of the command line, and eventually grew disgusted by the layer of Microsoft abstraction. I moved to VirtualBox, successfully installed Ubuntu, and decided that was what I would eventually install on bare metal.&lt;&#x2F;p&gt;
&lt;p&gt;Then, a friend intervened. He told me to use Arch.&lt;&#x2F;p&gt;
&lt;p&gt;He delivered the recommendation with the wild-eyed, terrifying conviction of a man who had just returned from the mountaintop with stone tablets. He was relentless. I deleted my Ubuntu ISOs, ordered a blank USB stick, and spent the seven days before its arrival in a state of monastic preparation. I installed, wiped, and reinstalled Arch Linux inside VirtualBox dozens of times, memorising disk partitioning commands and learning to mount file systems. When the stick arrived, I wiped the ThinkPad and installed Arch on bare metal. By November, I had abandoned traditional desktop environments entirely, moving to Hyprland--a dynamic tiling window manager that operates entirely on keyboard shortcuts and requires forty hours of writing C++ configuration files to make it beautiful.&lt;&#x2F;p&gt;
&lt;p&gt;In this religion, the installation is the initiation ritual. Most consumer distributions feature graphical installers that hold your hand, make complex partitioning decisions on your behalf, and deposit you gently into a working desktop. This is pragmatically wonderful and theologically bankrupt. The person who clicks &quot;Next&quot; six times knows they are using Linux; the person who manually formats their EFI partition, compiles their bootloader, and spends a week wrestling with Wayland compositors &lt;em&gt;knows their machine&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;These are profoundly different states of knowledge, and the community treats them as such. Outsiders experience this dynamic as toxic gatekeeping; insiders experience it as necessary discernment. You cannot appreciate the cathedral if you did not haul the stones. The Arch Wiki serves as our scripture--vast, exhaustively accurate, and completely unforgiving. It punishes lazy reading and rewards deep meditation. During my initiation, I wrote a comprehensive, step-by-step installation guide based on my own agonising trial and error.&lt;&#x2F;p&gt;
&lt;p&gt;Months later, the very friend who had aggressively evangelised Arch to me decided he was finally ready to install it on his own machine. I went to his house to gloat about my Hyprland workflow, feeling like a twenty-four-year-old wizard manipulating the fabric of the digital universe. I opened his laptop and discovered he was running Manjaro.&lt;&#x2F;p&gt;
&lt;p&gt;Manjaro occupies a highly contested category. It is an Arch-derivative--close enough to the real thing that pure Arch users take its existence as a personal insult. My friend confessed he had attempted to install pure Arch using ChatGPT as his spiritual guide. It had been a bloodbath of hallucinated commands and destroyed partition tables. In a moment of weakness, he downloaded the Manjaro graphical installer and clicked his way to a working desktop.&lt;&#x2F;p&gt;
&lt;p&gt;I offered absolutely no charity. I mocked him with the zeal of a medieval inquisitor.&lt;&#x2F;p&gt;
&lt;p&gt;Later that evening, overcome with guilt, he called me. He was going to wipe the drive and attempt the true path again. He complained the official wiki was too dense, so I sent him my personal guide. An hour later, he called back in despair, staring at a black screen. He had forgotten to install the GRUB bootloader, and informed me that my guide--heavy on rambling philosophical tangents--was actually worse than the wiki. He returned to his AI companion, and they finished the installation together. The deeply unnatural relationship between my friend and his large language model is a matter I refuse to comment on further.&lt;&#x2F;p&gt;
&lt;p&gt;Eventually, I went back to his house and we wiped the machine one last time. I wrote a physical list of checkpoints on a piece of paper. We moved through the ritual manually: Partitioning. Base install. Fstab. Chroot. Bootloader. NetworkManager. Every time we cleared a hurdle, I placed a tick on the paper. He finally achieved a working, pure Arch installation. His soul was saved.&lt;&#x2F;p&gt;
&lt;p&gt;Which brings me back to Lemmy. A few weeks after saving my friend&#x27;s soul, I saw a new user asking for a graphical user interface to install packages on Arch. Without a second thought, I typed: &lt;em&gt;If you need a GUI to install packages on Arch, perhaps you should not be using Arch.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;My cursor blinked. When exactly did I become this person? When did I mutate into the insufferable gatekeeper standing at the threshold of the temple, demanding purity tests from the peasants?&lt;&#x2F;p&gt;
&lt;p&gt;I hit reply anyway. &lt;code&gt;pacman&lt;&#x2F;code&gt; is the greatest package manager ever coded, and I stand by the architectural substance of the comment. The elitist tone is something I am still unpacking in my quieter moments.&lt;&#x2F;p&gt;
&lt;p&gt;Evangelism is the specific feature of religious communities that generates the maximum amount of friction with the secular world, but it is worth examining why it happens. It is the inescapable consequence of a cosmology that includes a definitive theory of the good life. If you genuinely believe that software freedom matters--that understanding the tools mediating your reality is a moral imperative--then telling your family about Linux is not enthusiasm. It is an act of deep concern. To the outsider, the Linux evangelist is offering incredibly annoying advice about a software preference. To the insider, it is a desperate moral intervention to save a loved one from the Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;And like all faiths, we have an eschatology. We call it the &quot;Year of the Linux Desktop.&quot; It is the most affectionate, enduring joke in the community because it is also the most sincere, desperate hope. Every year, a prophet emerges to announce that the mainstream breakthrough is imminent. Every year, the rapture is delayed. Yet the hope is never fully abandoned. Valve’s Steam Deck has done more to advance desktop adoption in three years than a decade of screaming advocacy. The hardware compatibility nightmare is largely over.&lt;&#x2F;p&gt;
&lt;p&gt;We keep building. We keep writing exhaustive documentation. Another teenager discovers the terminal. Another person wipes Windows and installs Arch. You do not abandon the faith just because the timeline slipped again; you continue because the work itself is the justification.&lt;&#x2F;p&gt;
&lt;p&gt;I have watched communities close themselves off in the name of rigid orthodoxy. I have watched the pastoral function of religion get weaponised into raw political control. I have spent my life rolling my eyes at zealots.&lt;&#x2F;p&gt;
&lt;p&gt;And then I found an operating system. I developed a cosmology, a theory of the good life, and a set of digital values I will absolutely refuse to compromise. I sit in my room writing scripts to automate things that do not need to be automated. I walk friends through ancient initiation rituals, checkbox by checkbox. I post arrogant, gatekeeping comments on decentralised forums and feel a rush of righteous adrenaline when I do.&lt;&#x2F;p&gt;
&lt;p&gt;I have walked this world irreligious, and I have found a religion. Both of these facts are true, and I have finally made my peace with the contradiction.&lt;&#x2F;p&gt;
&lt;p&gt;Use whatever distribution actually serves your needs. But read the wiki. Always read the wiki.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Tmux</title>
          <pubDate>Thu, 09 Apr 2026 05:22:13 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/tmux/</link>
          <guid>https://daesorin.xyz/posts/tmux/</guid>
          <description xml:base="https://daesorin.xyz/posts/tmux/">&lt;h1 id=&quot;tmux-cheatsheet-prefix-c-b&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#tmux-cheatsheet-prefix-c-b&quot; aria-label=&quot;Anchor link for: tmux-cheatsheet-prefix-c-b&quot;&gt;🔗&lt;&#x2F;a&gt;TMUX CHEATSHEET (PREFIX: C-b)&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;server-and-clients&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#server-and-clients&quot; aria-label=&quot;Anchor link for: server-and-clients&quot;&gt;🔗&lt;&#x2F;a&gt;SERVER AND CLIENTS&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command &#x2F; Binding&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;start new unnamed session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux -L &amp;lt;socket&amp;gt; new&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;start server with isolated custom socket&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux -S &#x2F;path&#x2F;to&#x2F;sock&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;start server with specific socket path&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux kill-server&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;kill server and all attached sessions&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux list-clients&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;show all connected users&#x2F;clients&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux detach-client -a&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;detach all clients except the current one&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux suspend-client&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;suspend the current client&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b d&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;detach from current session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b D&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;choose which client to detach interactively&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;session-management&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#session-management&quot; aria-label=&quot;Anchor link for: session-management&quot;&gt;🔗&lt;&#x2F;a&gt;SESSION MANAGEMENT&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command &#x2F; Binding&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux new -s &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;start new named session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux new -s &amp;lt;name&amp;gt; -d&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;start session in background (detached)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux new -s &amp;lt;name&amp;gt; -c &amp;lt;dir&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;start session with specific working directory&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux new -t &amp;lt;target&amp;gt; -s &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;create grouped session (shared windows)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux a&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;attach to most recently used session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux a -t &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;attach to named session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux a -d -t &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;detach others, then attach to session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux ls&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;list active sessions&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux rename-session -t &amp;lt;old&amp;gt; &amp;lt;new&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;rename session from cli&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux kill-session -t &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;kill specific session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux kill-session -a&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;kill all sessions except current&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b s&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;interactive session tree (switch&#x2F;kill)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b $&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;rename current session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b (&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;C-b )&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;switch to previous &#x2F; next session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b L&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;switch to last used session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;window-management&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#window-management&quot; aria-label=&quot;Anchor link for: window-management&quot;&gt;🔗&lt;&#x2F;a&gt;WINDOW MANAGEMENT&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command &#x2F; Binding&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b c&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;new window (inherits cwd)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b ,&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;rename current window&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b n&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;C-b p&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;next &#x2F; previous window&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b 1-9&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;go to window by index (base 1)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b w&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;interactive window list&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b &amp;amp;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;kill window (prompts)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b .&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;move window to new index interactively&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b f&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;find window by name&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux new-window -n &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;create named window from cli&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux select-window -t &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;switch to specific window&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux move-window -s &amp;lt;src&amp;gt; -t &amp;lt;dst&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;move window to new index or session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux swap-window -s &amp;lt;1&amp;gt; -t &amp;lt;2&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;swap positions of two windows&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux link-window -s &amp;lt;src&amp;gt; -t &amp;lt;dst&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;link window so it appears in two sessions&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;pane-movement-and-manipulation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pane-movement-and-manipulation&quot; aria-label=&quot;Anchor link for: pane-movement-and-manipulation&quot;&gt;🔗&lt;&#x2F;a&gt;PANE MOVEMENT AND MANIPULATION&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command &#x2F; Binding&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b -&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;split horizontal (pane below, inherits cwd)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b |&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;split vertical (pane right, inherits cwd)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b h&#x2F;j&#x2F;k&#x2F;l&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;navigate left&#x2F;down&#x2F;up&#x2F;right&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b H&#x2F;J&#x2F;K&#x2F;L&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;resize left&#x2F;down&#x2F;up&#x2F;right by 5 (repeatable)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b z&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;toggle zoom (fullscreen pane)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b x&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;kill current pane (prompts)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b !&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;break pane out into its own new window&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b {&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;C-b }&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;swap pane with previous&#x2F;next&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b Space&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;cycle through layout presets&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b q&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;show pane indices (press number to jump)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b m&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;C-b M&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;mark pane for join&#x2F;swap operations &#x2F; clear mark&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b S&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;toggle synchronise-panes (send keys to all)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux split-window -h -p 30&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;split vertically, new pane takes 30% width&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux split-window -v -l 20&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;split horizontally, new pane is 20 lines high&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux split-window -f -h&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;split vertically, span full window height&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux join-pane -s &amp;lt;src&amp;gt; -t &amp;lt;dst&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;move pane from source window to target window&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux swap-pane -s &amp;lt;src&amp;gt; -t &amp;lt;dst&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;swap specific panes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux select-layout main-vertical&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;force specific layout&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;copy-mode-and-buffers-vi-wayland&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#copy-mode-and-buffers-vi-wayland&quot; aria-label=&quot;Anchor link for: copy-mode-and-buffers-vi-wayland&quot;&gt;🔗&lt;&#x2F;a&gt;COPY MODE AND BUFFERS (VI + WAYLAND)&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command &#x2F; Binding&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b [&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;enter copy mode&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b PgUp&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;enter copy mode and scroll up&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;h&lt;&#x2F;code&gt;, &lt;code&gt;j&lt;&#x2F;code&gt;, &lt;code&gt;k&lt;&#x2F;code&gt;, &lt;code&gt;l&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;navigate cursor&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;w&lt;&#x2F;code&gt;, &lt;code&gt;b&lt;&#x2F;code&gt;, &lt;code&gt;e&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;word forward, back, end of word&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;0&lt;&#x2F;code&gt;, &lt;code&gt;$&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;start of line, end of line&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;g&lt;&#x2F;code&gt;, &lt;code&gt;G&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;top of buffer, bottom of buffer&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-u&lt;&#x2F;code&gt;, &lt;code&gt;Ctrl-d&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;page up, page down&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&#x2F;&lt;&#x2F;code&gt;, &lt;code&gt;?&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;search forward, search backward&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;n&lt;&#x2F;code&gt;, &lt;code&gt;N&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;next match, previous match&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;begin character selection&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;V&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;begin line selection&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;Ctrl-v&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;toggle block&#x2F;rectangle selection&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;o&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;swap cursor to other end of selection&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;y&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;copy to wayland clipboard (wl-copy) &amp;amp; exit&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;q&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;Escape&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;exit copy mode&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b ]&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;paste from most recent tmux buffer&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b =&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;choose buffer interactively to paste&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b -&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;delete most recent buffer&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b #&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;list all paste buffers&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux show-buffer&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;print most recent buffer to stdout&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux save-buffer &amp;lt;file&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;write paste buffer to disk&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux set-buffer &quot;text&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;inject text into tmux buffer&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux delete-buffer -b &amp;lt;name&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;delete specific buffer&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;options-and-environment&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#options-and-environment&quot; aria-label=&quot;Anchor link for: options-and-environment&quot;&gt;🔗&lt;&#x2F;a&gt;OPTIONS AND ENVIRONMENT&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command &#x2F; Binding&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b :&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;enter command mode&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b r&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;reload ~&#x2F;.tmux.conf&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b ?&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;list all key bindings&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux set -g &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;set global session option&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux set -s &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;set server option&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux set -w &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;set window option&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux set -p &amp;lt;option&amp;gt; &amp;lt;value&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;set pane option&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux show-options -g&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;view all global options&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux show-environment&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;view variables passed to tmux&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux set-environment &amp;lt;var&amp;gt; &amp;lt;val&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;set environment variable for new panes&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;plugins-tpm-resurrect-continuum&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#plugins-tpm-resurrect-continuum&quot; aria-label=&quot;Anchor link for: plugins-tpm-resurrect-continuum&quot;&gt;🔗&lt;&#x2F;a&gt;PLUGINS (TPM, RESURRECT, CONTINUUM)&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Binding&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b I&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;install plugins listed in config&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b U&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;update all installed plugins&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b Alt-u&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;uninstall plugins removed from config&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b Ctrl-s&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;save session state manually (resurrect)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;C-b Ctrl-r&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;restore session state manually (resurrect)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;scripting-and-automation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#scripting-and-automation&quot; aria-label=&quot;Anchor link for: scripting-and-automation&quot;&gt;🔗&lt;&#x2F;a&gt;SCRIPTING AND AUTOMATION&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux send-keys -t &amp;lt;target&amp;gt; &quot;cmd&quot; Enter&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;send arbitrary keystrokes to pane&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux capture-pane -p -t &amp;lt;target&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;print pane scrollback to stdout&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux capture-pane -p -S -100&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;print last 100 lines of pane&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux pipe-pane -t &amp;lt;target&amp;gt; &quot;cat &amp;gt; log&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;stream pane output to file&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux display-message -p &quot;#{session_name}&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;print formatted variable to stdout&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux wait-for -S &amp;lt;channel&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;signal a wait channel&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux wait-for &amp;lt;channel&amp;gt;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;block script until channel signalled&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux if-shell &quot;condition&quot; &quot;cmd&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;run tmux command conditionally&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tmux set-hook -g after-new-window &quot;cmd&quot;&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;execute command automatically on event&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h2 id=&quot;target-syntax-reference&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#target-syntax-reference&quot; aria-label=&quot;Anchor link for: target-syntax-reference&quot;&gt;🔗&lt;&#x2F;a&gt;TARGET SYNTAX REFERENCE&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Syntax&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Target&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t session&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;session by name or index&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t session:window&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;specific window in session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t session:window.pane&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;specific pane in window&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t :&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;current session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t :.&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;current pane&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t :-&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;-t :+&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;previous &#x2F; next session&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t :^&lt;&#x2F;code&gt; &#x2F; &lt;code&gt;-t :$&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;first &#x2F; last window&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;-t !&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;last (previously active) pane&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
</description>
      </item>
      <item>
          <title>Incus</title>
          <pubDate>Thu, 02 Apr 2026 08:26:14 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/incus/</link>
          <guid>https://daesorin.xyz/posts/incus/</guid>
          <description xml:base="https://daesorin.xyz/posts/incus/">&lt;p&gt;Incus is a next-generation system container and virtual machine manager. It manages LXC containers and QEMU virtual machines through a unified command-line interface and REST API. Instances are persistent, full-system environments with their own init system, networking, and storage, distinct from the application containers that Docker and Podman manage.&lt;&#x2F;p&gt;
&lt;p&gt;Incus originates from a community fork of LXD. In 2023, Canonical transferred LXD development exclusively to its own commercial organisation and removed the project from Linux Containers governance. The Linux Containers community forked the codebase as Incus under the LXC Project umbrella. Incus is FOSS, independently governed, and carries no commercial licensing terms. It represents the correct choice for operators who require system container infrastructure without dependency on Canonical&#x27;s commercial roadmap.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;1-installation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-installation&quot; aria-label=&quot;Anchor link for: 1-installation&quot;&gt;🔗&lt;&#x2F;a&gt;1. Installation&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;arch-linux&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#arch-linux&quot; aria-label=&quot;Anchor link for: arch-linux&quot;&gt;🔗&lt;&#x2F;a&gt;Arch Linux&lt;&#x2F;h3&gt;
&lt;p&gt;Incus is available in the AUR. Install with an AUR helper:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;yay&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incus&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Or build manually:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; clone&lt;&#x2F;span&gt;&lt;span&gt; [https:&#x2F;&#x2F;aur.archlinux.org&#x2F;incus.git](&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;https:&#x2F;&#x2F;aur.archlinux.org&#x2F;incus.git&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incus&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;makepkg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -si&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Enable and start the service:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; systemctl enable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --now&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incus&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; systemctl enable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --now&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incus-user&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Add your user to the &lt;code&gt;incus-admin&lt;&#x2F;code&gt; group:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; usermod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -aG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incus-admin&lt;&#x2F;span&gt;&lt;span&gt; $USER&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;em&gt;Log out and back in for group membership to take effect.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;alpine-linux&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#alpine-linux&quot; aria-label=&quot;Anchor link for: alpine-linux&quot;&gt;🔗&lt;&#x2F;a&gt;Alpine Linux&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;apk&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; add incus incus-client&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;rc-update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; add incusd&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;rc-service&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incusd start&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;ubuntu-debian&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ubuntu-debian&quot; aria-label=&quot;Anchor link for: ubuntu-debian&quot;&gt;🔗&lt;&#x2F;a&gt;Ubuntu &#x2F; Debian&lt;&#x2F;h3&gt;
&lt;p&gt;Canonical&#x27;s repositories ship LXD, the proprietary fork. Incus requires the Zabbly repository:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;curl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -fsSL&lt;&#x2F;span&gt;&lt;span&gt; [https:&#x2F;&#x2F;pkgs.zabbly.com&#x2F;key.asc](&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;https:&#x2F;&#x2F;pkgs.zabbly.com&#x2F;key.asc&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; gpg&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --dearmor -o&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;etc&#x2F;apt&#x2F;keyrings&#x2F;zabbly.gpg&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;deb [signed-by=&#x2F;etc&#x2F;apt&#x2F;keyrings&#x2F;zabbly.gpg] [https:&#x2F;&#x2F;pkgs.zabbly.com&#x2F;incus&#x2F;stable](https:&#x2F;&#x2F;pkgs.zabbly.com&#x2F;incus&#x2F;stable) $(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;lsb_release&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -cs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;) main&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;  |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; tee &#x2F;etc&#x2F;apt&#x2F;sources.list.d&#x2F;zabbly-incus-stable.list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; apt update&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; apt install incus&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; adduser&lt;&#x2F;span&gt;&lt;span&gt; $USER&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incus-admin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;verify-installation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#verify-installation&quot; aria-label=&quot;Anchor link for: verify-installation&quot;&gt;🔗&lt;&#x2F;a&gt;Verify Installation&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; info&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;2-initial-configuration&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-initial-configuration&quot; aria-label=&quot;Anchor link for: 2-initial-configuration&quot;&gt;🔗&lt;&#x2F;a&gt;2. Initial Configuration&lt;&#x2F;h2&gt;
&lt;p&gt;Run the interactive initialisation on first use:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; incus admin init&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The wizard configures storage pools, networking, clustering, and remote access. For a minimal single-node setup, the following answers produce a functional environment:&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Question&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Recommended Answer&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Clustering&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;no&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Existing storage pool&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;no&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Storage backend&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;dir&lt;&#x2F;code&gt; (safe default) or &lt;code&gt;zfs&lt;&#x2F;code&gt; (recommended)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Remote access over network&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;no&lt;&#x2F;code&gt; (unless required)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Automatic image updates&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;yes&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;YAML output of config&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;optional&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;p&gt;For production use, ZFS provides snapshots, clones, and copy-on-write storage that the &lt;code&gt;dir&lt;&#x2F;code&gt; backend does not. Install ZFS before running &lt;code&gt;incus admin init&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Arch Linux&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; pacman&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; zfs-utils&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; modprobe zfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;3-core-architecture&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-core-architecture&quot; aria-label=&quot;Anchor link for: 3-core-architecture&quot;&gt;🔗&lt;&#x2F;a&gt;3. Core Architecture&lt;&#x2F;h2&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Component&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Definition&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Instance&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;A running container or virtual machine managed by Incus.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Image&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;A compressed file-system used as the base for new instances.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Profile&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;A named set of configuration options applied to instances. Multiple profiles stack.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Storage pool&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;A named storage backend (&lt;code&gt;zfs&lt;&#x2F;code&gt;, &lt;code&gt;btrfs&lt;&#x2F;code&gt;, &lt;code&gt;lvm&lt;&#x2F;code&gt;, &lt;code&gt;dir&lt;&#x2F;code&gt;) hosting instance disks and images.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Network&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;A managed bridge, VLAN, OVN overlay, or physical interface attached to instances.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Project&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;A namespace isolating instances, images, profiles, and storage. Useful for multi-tenant environments.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Remote&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;A reference to another Incus server or a public image registry.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;4-images&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-images&quot; aria-label=&quot;Anchor link for: 4-images&quot;&gt;🔗&lt;&#x2F;a&gt;4. Images&lt;&#x2F;h2&gt;
&lt;p&gt;Incus instances launch from images. Images are distributed via remotes. The default remotes point to Linux Containers image servers.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;default-remotes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#default-remotes&quot; aria-label=&quot;Anchor link for: default-remotes&quot;&gt;🔗&lt;&#x2F;a&gt;Default Remotes&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; remote list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Default Remote&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Content&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;images:&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Community images (Alpine, Arch, Ubuntu, Rocky, Debian, and many others)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ubuntu:&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Official Ubuntu images&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ubuntu-daily:&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Ubuntu daily builds&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;searching-for-images&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#searching-for-images&quot; aria-label=&quot;Anchor link for: searching-for-images&quot;&gt;🔗&lt;&#x2F;a&gt;Searching for Images&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image list images:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image list images: alpine&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image list images: arch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image list images:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; |&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; grep&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; rocky&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;image-properties&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#image-properties&quot; aria-label=&quot;Anchor link for: image-properties&quot;&gt;🔗&lt;&#x2F;a&gt;Image Properties&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Field&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Meaning&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ALIAS&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Friendly name for the image&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;FINGERPRINT&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;SHA-256 hash identifying the image uniquely&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;PUBLIC&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Whether the image is publicly accessible&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;DESCRIPTION&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Distribution, version, and architecture&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;TYPE&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;CONTAINER&lt;&#x2F;code&gt; or &lt;code&gt;VIRTUAL-MACHINE&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;SIZE&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Compressed image size&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;UPLOAD DATE&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;When the image was cached locally&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;managing-local-images&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#managing-local-images&quot; aria-label=&quot;Anchor link for: managing-local-images&quot;&gt;🔗&lt;&#x2F;a&gt;Managing Local Images&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Action&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image list&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;List locally cached images&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image info {alias}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Show image metadata&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image delete {fingerprint}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Remove local image&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image export {alias} {path}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Export image to file&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image import {path} --alias {name}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Import image from file&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image copy images:{alias} local: --alias {name}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Copy remote image to local cache&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image refresh&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Update cached images&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;publishing-instances-as-images&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#publishing-instances-as-images&quot; aria-label=&quot;Anchor link for: publishing-instances-as-images&quot;&gt;🔗&lt;&#x2F;a&gt;Publishing Instances as Images&lt;&#x2F;h3&gt;
&lt;p&gt;Use &lt;code&gt;incus publish&lt;&#x2F;code&gt; to save a stopped container or virtual machine as a reusable image in your local image list. You can also publish from a snapshot.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Action&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus publish {instance} --alias {alias}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Create image from instance, assign alias&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus publish {instance}&#x2F;{snapshot} --alias {alias}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Create image from a snapshot&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus publish {instance} --public --alias {alias}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Publish as a public image (visible to others)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus publish {instance} --expiry 30d&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Set image to expire after 30 days&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus publish {instance} --reuse&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Replace existing image with same alias&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Publish a stopped container called &amp;quot;web-backup&amp;quot; as &amp;quot;my-website:1.0&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; publish web-backup&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --alias&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; my-website:1.0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Publish from a snapshot&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; publish web-backup&#x2F;snap0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --alias&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; my-website:snap0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# List your published images&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;em&gt;Note: The source instance should be stopped unless you use &lt;code&gt;--force&lt;&#x2F;code&gt;, but forcing may produce inconsistent file-systems.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;managing-image-aliases&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#managing-image-aliases&quot; aria-label=&quot;Anchor link for: managing-image-aliases&quot;&gt;🔗&lt;&#x2F;a&gt;Managing Image Aliases&lt;&#x2F;h3&gt;
&lt;p&gt;Aliases give human-friendly names to image fingerprints. Use them to reference images in &lt;code&gt;incus launch&lt;&#x2F;code&gt;, &lt;code&gt;incus copy&lt;&#x2F;code&gt;, etc. without typing the full hash.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Command&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Action&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image alias list&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;List all aliases on the local server&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image alias list images:&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;List aliases on a remote (e.g., &lt;code&gt;images:&lt;&#x2F;code&gt;)&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image alias create {alias} {fingerprint}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Assign an alias to an existing image&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image alias delete {alias}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Remove an alias&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;incus image alias rename {old} {new}&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Rename an existing alias&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# List aliases you have defined locally&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image alias list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Create an alias &amp;quot;ubuntu-jammy&amp;quot; for image with fingerprint abc123...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image alias create ubuntu-jammy abc123...&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Delete an alias&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image alias delete my-old-alias&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Rename an alias&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image alias rename my-website my-website:stable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;You can also assign aliases during &lt;code&gt;incus publish&lt;&#x2F;code&gt;, &lt;code&gt;incus copy&lt;&#x2F;code&gt;, or &lt;code&gt;incus image import&lt;&#x2F;code&gt; using the &lt;code&gt;--alias&lt;&#x2F;code&gt; flag:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; publish my-container&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --alias&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; my-container:v1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;incus&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; image copy local:my-container:v1 images:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --alias&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; public-container&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;building-custom-images&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#building-custom-images&quot; aria-label=&quot;Anchor link for: building-custom-images&quot;&gt;🔗&lt;&#x2F;a&gt;Building Custom Images&lt;&#x2F;h3&gt;
&lt;p&gt;Incus accepts tarballs in its image format. The minimal structure requires a &lt;code&gt;metadata.yaml&lt;&#x2F;code&gt; and a root file-system tarball.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# BUILD A MINIMAL ALPINE IMAGE FOR IMPORT&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;mkdir -p rootfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# populate rootfs with a base alpine system, then archive it&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;tar -czf rootfs.tar.gz -C rootfs .&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# create metadata file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;cat &amp;gt; metadata.yaml &amp;lt;&amp;lt;EOF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;architecture: x86_64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;creation_date: $(date +%s)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;properties:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  description: Custom Alpine minimal&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  os: Alpine&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  release: edge&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;EOF&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# bundle metadata and rootfs into an incus image tarball&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;tar -czf custom-alpine.tar.gz metadata.yaml rootfs.tar.gz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# import image into local cache with alias&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;incus image import custom-alpine.tar.gz --alias custom-alpine&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</description>
      </item>
      <item>
          <title>Git</title>
          <pubDate>Fri, 16 Jan 2026 23:25:51 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/git/</link>
          <guid>https://daesorin.xyz/posts/git/</guid>
          <description xml:base="https://daesorin.xyz/posts/git/">&lt;h2 id=&quot;1-core-architecture-configuration&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-core-architecture-configuration&quot; aria-label=&quot;Anchor link for: 1-core-architecture-configuration&quot;&gt;🔗&lt;&#x2F;a&gt;1. Core Architecture &amp;amp; Configuration&lt;&#x2F;h2&gt;
&lt;p&gt;Git is a &lt;strong&gt;content-addressed, distributed version control system&lt;&#x2F;strong&gt; modeled as an immutable &lt;strong&gt;directed acyclic graph (DAG)&lt;&#x2F;strong&gt; of snapshots.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-three-trees-state-transitions&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-three-trees-state-transitions&quot; aria-label=&quot;Anchor link for: the-three-trees-state-transitions&quot;&gt;🔗&lt;&#x2F;a&gt;The Three Trees &amp;amp; State Transitions&lt;&#x2F;h3&gt;
&lt;p&gt;Every major Git operation transforms one or more of the three managed file collections:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Working Tree:&lt;&#x2F;strong&gt; The local filesystem checkout where files are edited.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Index (Staging Area):&lt;&#x2F;strong&gt; A binary cache (&lt;code&gt;.git&#x2F;index&lt;&#x2F;code&gt;) representing the exact content of the &lt;em&gt;next&lt;&#x2F;em&gt; commit.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Repository (&lt;code&gt;HEAD&lt;&#x2F;code&gt;):&lt;&#x2F;strong&gt; The immutable, committed history in the object database.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[Working Tree]  &amp;lt;---(git restore &amp;lt;file&amp;gt;)---  [Index]  &amp;lt;---(git restore --staged)---  [Repository (HEAD)]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      |                                         ^                                           ^&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      +-------------(git add &amp;lt;file&amp;gt;)------------+                                           |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      |                                                                                     |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;      +------------------------(git commit -a) &#x2F; (git commit)-------------------------------+&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;essential-global-configuration-gitconfig&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#essential-global-configuration-gitconfig&quot; aria-label=&quot;Anchor link for: essential-global-configuration-gitconfig&quot;&gt;🔗&lt;&#x2F;a&gt;Essential Global Configuration (&lt;code&gt;~&#x2F;.gitconfig&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;Apply these settings to enforce cryptographic integrity, accurate diffs, and automated conflict resolution:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[user]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    name&lt;&#x2F;span&gt;&lt;span&gt; = Your Name&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    email&lt;&#x2F;span&gt;&lt;span&gt; = you@example.com&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    signingkey&lt;&#x2F;span&gt;&lt;span&gt; = ~&#x2F;.ssh&#x2F;id_ed25519.pub&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[core]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    editor&lt;&#x2F;span&gt;&lt;span&gt; = vim&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    autocrlf&lt;&#x2F;span&gt;&lt;span&gt; = input      &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Convert CRLF to LF on input (Linux&#x2F;macOS)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    pager&lt;&#x2F;span&gt;&lt;span&gt; = less -FRX&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    fsmonitor&lt;&#x2F;span&gt;&lt;span&gt; = true      &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Enable filesystem event watcher integration&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    untrackedCache&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[init]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    defaultBranch&lt;&#x2F;span&gt;&lt;span&gt; = main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[pull]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    rebase&lt;&#x2F;span&gt;&lt;span&gt; = false        &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Default to merge on pull; set to true for linear workflows&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[push]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    default&lt;&#x2F;span&gt;&lt;span&gt; = simple&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    autoSetupRemote&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    followTags&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[fetch]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    prune&lt;&#x2F;span&gt;&lt;span&gt; = true          &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Delete tracking references for removed remote branches&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    prunetags&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    writeCommitGraph&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[diff]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    algorithm&lt;&#x2F;span&gt;&lt;span&gt; = histogram &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Accurate diff algorithm for code block movements&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[merge]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    conflictstyle&lt;&#x2F;span&gt;&lt;span&gt; = zdiff3 &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Show common ancestor (|||||||) in merge conflicts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    tool&lt;&#x2F;span&gt;&lt;span&gt; = vimdiff&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[rerere]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    enabled&lt;&#x2F;span&gt;&lt;span&gt; = true        &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Reuse Recorded Resolution for recurring conflicts&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    autoupdate&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[gpg]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    format&lt;&#x2F;span&gt;&lt;span&gt; = ssh          &lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Use SSH keys for signing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[commit]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    gpgsign&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[tag]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;    gpgsign&lt;&#x2F;span&gt;&lt;span&gt; = true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;high-leverage-global-aliases&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#high-leverage-global-aliases&quot; aria-label=&quot;Anchor link for: high-leverage-global-aliases&quot;&gt;🔗&lt;&#x2F;a&gt;High-Leverage Global Aliases&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.st status&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.co checkout&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.br &amp;quot;branch -vv&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.lg &amp;quot;log --oneline --graph --decorate --all&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.last &amp;quot;log -1 HEAD --stat&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.unstage &amp;quot;restore --staged&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.undo &amp;quot;reset --soft HEAD~1&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --global&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; alias.branches &amp;quot;for-each-ref --sort=-committerdate refs&#x2F;heads&#x2F; --format=&amp;#39;%(refname:short) %(committerdate:relative) %(authorname)&amp;#39;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;2-object-model-internals&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-object-model-internals&quot; aria-label=&quot;Anchor link for: 2-object-model-internals&quot;&gt;🔗&lt;&#x2F;a&gt;2. Object Model &amp;amp; Internals&lt;&#x2F;h2&gt;
&lt;p&gt;Every piece of data in Git is stored in &lt;code&gt;.git&#x2F;objects&#x2F;&lt;&#x2F;code&gt; as one of four immutable, content-addressed object types.&lt;&#x2F;p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Object Type&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Description&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Internal Structure &#x2F; Metadata Stored&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;code&gt;blob&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Raw file bytes.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Pure content. No filenames, modes, or timestamps.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;code&gt;tree&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Directory listing.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Array of entries containing file mode (&lt;code&gt;100644&lt;&#x2F;code&gt;, &lt;code&gt;100755&lt;&#x2F;code&gt;, &lt;code&gt;040000&lt;&#x2F;code&gt;), name, and object SHA-1&#x2F;SHA-256 hash.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;code&gt;commit&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Snapshot reference.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Root tree hash, parent commit hash(es), author&#x2F;committer timestamps, commit message.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;&lt;code&gt;tag&lt;&#x2F;code&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Annotated reference.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Hash of target object, tagger name&#x2F;timestamp, tag message, GPG&#x2F;SSH signature.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[Commit Object: a1b2c3] ---&amp;gt; [Root Tree: d4e5f6] ---&amp;gt; [Blob: g7h8i9] (README.md)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  |                                           |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  | (Parent)                                  +---&amp;gt; [Subtree: j0k1l2] (src&#x2F;) ---&amp;gt; [Blob: m3n4o5] (main.py)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  v&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[Commit Object: p6q7r8]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;low-level-object-inspection-cat-file-hash-object&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#low-level-object-inspection-cat-file-hash-object&quot; aria-label=&quot;Anchor link for: low-level-object-inspection-cat-file-hash-object&quot;&gt;🔗&lt;&#x2F;a&gt;Low-Level Object Inspection (&lt;code&gt;cat-file&lt;&#x2F;code&gt; &amp;amp; &lt;code&gt;hash-object&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Compute object hash from local file without writing to database&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; hash-object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;fil&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Compute hash and store the object in .git&#x2F;objects&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; hash-object&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -w&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;fil&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Print object type (blob, tree, commit, tag)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; cat-file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;has&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Print raw object content &#x2F; metadata&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; cat-file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;has&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Print byte size of stored object&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; cat-file&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;has&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# List all files and tree entries in a specific commit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ls-tree&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Verify database integrity and connectivity&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; fsck&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --full&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;3-daily-operations-navigation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-daily-operations-navigation&quot; aria-label=&quot;Anchor link for: 3-daily-operations-navigation&quot;&gt;🔗&lt;&#x2F;a&gt;3. Daily Operations &amp;amp; Navigation&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;staging-committing-inspecting-state&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#staging-committing-inspecting-state&quot; aria-label=&quot;Anchor link for: staging-committing-inspecting-state&quot;&gt;🔗&lt;&#x2F;a&gt;Staging, Committing &amp;amp; Inspecting State&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Interactively stage diff hunks (y = stage, n = skip, s = split, e = edit)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; add&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Commit staged changes with GPG&#x2F;SSH signature&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -S -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;feat(module): descriptive subject&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Stage all tracked modified files and commit simultaneously&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -a -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;message&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Replace tip commit with new commit object (use --no-edit to keep message)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; commit&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --amend&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# View working tree and staging area status (short two-column format)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; status&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Show diff between working tree and staging area (unstaged changes)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; diff&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Show diff between staging area and HEAD (staged changes)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; diff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --staged&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Show line-by-line attribution and commit hash for a specific file range&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; blame&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -L&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; 20,40 src&#x2F;main.py&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;branch-reference-manipulation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#branch-reference-manipulation&quot; aria-label=&quot;Anchor link for: branch-reference-manipulation&quot;&gt;🔗&lt;&#x2F;a&gt;Branch &amp;amp; Reference Manipulation&lt;&#x2F;h3&gt;
&lt;p&gt;A branch is a 41-byte text file in &lt;code&gt;.git&#x2F;refs&#x2F;heads&#x2F;&lt;&#x2F;code&gt; containing a 40-character commit hash.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# List local branches with upstream tracking and ahead&#x2F;behind metrics&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -vv&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Create and switch to a new branch in a single atomic operation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; switch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -c&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;branch-nam&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Switch to the previously checked-out branch (reads @{-1})&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; switch -&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Explicitly detach HEAD to inspect a tag or commit directly&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; switch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --detach&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;hash-or-ta&lt;&#x2F;span&gt;&lt;span&gt;g&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Delete a branch (fails if unmerged); use -D to force deletion&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;branch-nam&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Rename current branch and update tracking upstream&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;old-nam&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;new-nam&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;stashing&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#stashing&quot; aria-label=&quot;Anchor link for: stashing&quot;&gt;🔗&lt;&#x2F;a&gt;Stashing&lt;&#x2F;h3&gt;
&lt;p&gt;Stashes are stored as 2-3 commit objects under &lt;code&gt;refs&#x2F;stash&lt;&#x2F;code&gt; recording the index, working tree, and untracked files.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Stash working tree and index changes with descriptive identifier&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; stash push&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -m&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;WIP: login feature&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Stash changes including untracked files&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; stash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -u&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Apply most recent stash and remove entry from stash list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; stash pop&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Apply a specific stash entry without deleting it from stash reflog&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; stash apply stash@{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;4-history-manipulation-integration&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-history-manipulation-integration&quot; aria-label=&quot;Anchor link for: 4-history-manipulation-integration&quot;&gt;🔗&lt;&#x2F;a&gt;4. History Manipulation &amp;amp; Integration&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;merging-vs-rebasing&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#merging-vs-rebasing&quot; aria-label=&quot;Anchor link for: merging-vs-rebasing&quot;&gt;🔗&lt;&#x2F;a&gt;Merging vs. Rebasing&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Merge:&lt;&#x2F;strong&gt; Preserves divergent history by creating a new commit with multiple parents.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Rebase:&lt;&#x2F;strong&gt; Replays commits onto a new base commit, generating new commit objects with linear parentage. &lt;strong&gt;Never rebase commits pushed to shared remote branches&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Perform a merge without fast-forwarding (creates merge commit for audit trail)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; merge&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --no-ff&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;branc&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Rebase current branch onto target branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; rebase main&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Rebase a range of commits, transplanting feature away from old-base onto new-base&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --onto&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;new-bas&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;old-bas&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;feature-branc&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Interactively rebase last N commits (pick, reword, edit, squash, fixup, drop, exec)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; rebase&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; HEAD~4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Apply specific commit(s) from another branch as new commit objects&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; cherry-pick&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;has&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;the-three-reset-modes-git-reset&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-three-reset-modes-git-reset&quot; aria-label=&quot;Anchor link for: the-three-reset-modes-git-reset&quot;&gt;🔗&lt;&#x2F;a&gt;The Three Reset Modes (&lt;code&gt;git reset&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;code&gt;git reset&lt;&#x2F;code&gt; moves the current branch pointer (&lt;code&gt;HEAD&lt;&#x2F;code&gt;) backward in the graph.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               [Commit A] &amp;lt;--- [Commit B] &amp;lt;--- [Commit C] (HEAD -&amp;gt; main)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                   ^&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                         (git reset HEAD~1)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                   |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               +-----------------------------------+&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               |&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;               v&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; [Mode: --soft]  ---&amp;gt; Branch pointer moves to B. Index &amp;amp; Working Tree stay at C (changes staged).&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; [Mode: --mixed] ---&amp;gt; Branch pointer &amp;amp; Index move to B. Working Tree stays at C (changes unstaged).&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt; [Mode: --hard]  ---&amp;gt; Branch pointer, Index &amp;amp; Working Tree move to B. (Uncommitted changes lost!)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Undo last commit; leave changes staged in Index&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --soft&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; HEAD~1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Undo last commit; unstage changes into Working Tree (Default mode)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --mixed&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; HEAD~1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Reset branch, Index, and Working Tree to target commit (OVERWRITES WORKING TREE)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --hard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; HEAD~1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Safely create an inverse commit that undoes the changes of target commit&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; revert&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;has&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;advanced-conflict-resolution&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#advanced-conflict-resolution&quot; aria-label=&quot;Anchor link for: advanced-conflict-resolution&quot;&gt;🔗&lt;&#x2F;a&gt;Advanced Conflict Resolution&lt;&#x2F;h3&gt;
&lt;p&gt;When a three-way merge conflicts, Git populates the Index with stage numbers: Stage 1 (&lt;code&gt;common ancestor&lt;&#x2F;code&gt;), Stage 2 (&lt;code&gt;ours&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;HEAD&lt;&#x2F;code&gt;), and Stage 3 (&lt;code&gt;theirs&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;incoming&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# List all unmerged (conflicted) files in the index with stage numbers&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ls-files&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -u&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Extract specific stage versions of a conflicted file for inspection&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; show :1:file.py&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ancestor.py&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; show :2:file.py&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ours.py&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; show :3:file.py&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; theirs.py&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Accept only our branch version or incoming branch version during resolution&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --ours&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; file.py&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; checkout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --theirs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; file.py&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;5-distributed-workflows-remotes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#5-distributed-workflows-remotes&quot; aria-label=&quot;Anchor link for: 5-distributed-workflows-remotes&quot;&gt;🔗&lt;&#x2F;a&gt;5. Distributed Workflows &amp;amp; Remotes&lt;&#x2F;h2&gt;
&lt;p&gt;A remote is a named URL reference stored in &lt;code&gt;.git&#x2F;config&lt;&#x2F;code&gt;. Communication relies on &lt;strong&gt;Refspecs&lt;&#x2F;strong&gt; formatted as &lt;code&gt;+&amp;lt;src&amp;gt;:&amp;lt;dst&amp;gt;&lt;&#x2F;code&gt;, which map remote references to local tracking branches in &lt;code&gt;refs&#x2F;remotes&#x2F;&amp;lt;remote&amp;gt;&#x2F;&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Add a remote repository URL&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; remote add origin git@github.com:user&#x2F;repo.git&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Download objects and refs from remote; prune deleted tracking branches&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; fetch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --prune&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; origin&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Push current branch and set upstream tracking reference in .git&#x2F;config&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; push&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; origin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;branch-nam&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Safely force-push: rejects push if remote branch was updated by another user&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; push&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --force-with-lease&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; origin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;branch-nam&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Delete a branch on the remote server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; push origin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --delete&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;branch-nam&lt;&#x2F;span&gt;&lt;span&gt;e&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Push branch along with all reachable annotated tags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; push&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --follow-tags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;6-emergency-recovery-disaster-management&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#6-emergency-recovery-disaster-management&quot; aria-label=&quot;Anchor link for: 6-emergency-recovery-disaster-management&quot;&gt;🔗&lt;&#x2F;a&gt;6. Emergency Recovery &amp;amp; Disaster Management&lt;&#x2F;h2&gt;
&lt;p&gt;Because Git commits are immutable snapshots, &quot;destructive&quot; operations (&lt;code&gt;reset&lt;&#x2F;code&gt;, &lt;code&gt;rebase&lt;&#x2F;code&gt;, &lt;code&gt;branch -d&lt;&#x2F;code&gt;) merely move references away from commits. The unreferenced commit objects remain in &lt;code&gt;.git&#x2F;objects&#x2F;&lt;&#x2F;code&gt; until garbage collection (&lt;code&gt;git gc&lt;&#x2F;code&gt;) prunes them (default grace period: 30 days for unreachable reflog entries; 2 weeks for unreachable objects).&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[Incident Occurs] ---&amp;gt; 1. STOP! Do not run clean&#x2F;gc.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                  ---&amp;gt; 2. Locate lost hash via `git reflog` or `git fsck --lost-found`.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                  ---&amp;gt; 3. Anchor object: `git branch recovery &amp;lt;hash&amp;gt;` or `git reset --hard &amp;lt;hash&amp;gt;`.&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;disaster-recovery-runbook&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#disaster-recovery-runbook&quot; aria-label=&quot;Anchor link for: disaster-recovery-runbook&quot;&gt;🔗&lt;&#x2F;a&gt;Disaster Recovery Runbook&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 1. Inspect Reference Movements (The Reflog)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Shows history of all HEAD movements, checkouts, resets, and rebases&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; reflog&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --all&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 2. Recover from Accidental Hard Reset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Move branch pointer back to the reflog position prior to the reset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --hard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; HEAD@{&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 3. Undo a Problematic Merge or Rebase Instantly&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# ORIG_HEAD records the pre-rebase &#x2F; pre-merge tip of the branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; reset&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --hard&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ORIG_HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 4. Recover a Deleted Branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Find the branch&amp;#39;s last commit hash in reflog, then re-create reference&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; branch&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;recovered-branc&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;hash-from-reflo&lt;&#x2F;span&gt;&lt;span&gt;g&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 5. Recover Lost Commits from Detached HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Locate commit hashes generated in detached state, then anchor to a new branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; branch saved-work&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;detached-has&lt;&#x2F;span&gt;&lt;span&gt;h&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# 6. Locate Unreachable Objects (When Reflog is Cleared&#x2F;Expired)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Scans object database for orphaned commits not reachable from any ref&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; fsck&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --unreachable --no-reflogs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Write orphaned blobs and commits into .git&#x2F;lost-found&#x2F;commit&#x2F; and &#x2F;other&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; fsck&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --lost-found&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;7-advanced-administration-tools&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#7-advanced-administration-tools&quot; aria-label=&quot;Anchor link for: 7-advanced-administration-tools&quot;&gt;🔗&lt;&#x2F;a&gt;7. Advanced Administration &amp;amp; Tools&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;worktrees-git-worktree&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#worktrees-git-worktree&quot; aria-label=&quot;Anchor link for: worktrees-git-worktree&quot;&gt;🔗&lt;&#x2F;a&gt;Worktrees (&lt;code&gt;git worktree&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;Maintain multiple simultaneous working tree checkouts attached to a single shared &lt;code&gt;.git&lt;&#x2F;code&gt; object database.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Create a new working tree directory checked out to a specific branch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; worktree add ..&#x2F;project-hotfix hotfix&#x2F;1.1.1&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# List active worktrees associated with the repository&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; worktree list&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Remove worktree directory and prune tracking metadata&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; worktree remove ..&#x2F;project-hotfix&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;automated-debugging-git-bisect&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#automated-debugging-git-bisect&quot; aria-label=&quot;Anchor link for: automated-debugging-git-bisect&quot;&gt;🔗&lt;&#x2F;a&gt;Automated Debugging (&lt;code&gt;git bisect&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;Perform binary searches through DAG history in $O(\log n)$ steps to isolate regression-introducing commits.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Start bisect session and mark known bad&#x2F;good boundaries&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; bisect start&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; bisect bad HEAD&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; bisect good v1.0&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Automate binary search using an executable test script (exit 0 = good, non-zero = bad)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; bisect run .&#x2F;test-regression.sh&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Terminate bisect session and restore original HEAD checkout&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; bisect reset&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;large-scale-history-rewriting-git-filter-repo&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#large-scale-history-rewriting-git-filter-repo&quot; aria-label=&quot;Anchor link for: large-scale-history-rewriting-git-filter-repo&quot;&gt;🔗&lt;&#x2F;a&gt;Large Scale History Rewriting (&lt;code&gt;git filter-repo&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;Requires Python tool: &lt;code&gt;pip install git-filter-repo&lt;&#x2F;code&gt;. Replaces legacy &lt;code&gt;filter-branch&lt;&#x2F;code&gt;.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Purge a sensitive file or secret from every commit in repository history&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; filter-repo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; secret.env&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --invert-paths&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Extract a specific subdirectory into an independent, isolated repository&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; filter-repo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --subdirectory-filter&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; services&#x2F;auth&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;monorepo-performance-optimization&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#monorepo-performance-optimization&quot; aria-label=&quot;Anchor link for: monorepo-performance-optimization&quot;&gt;🔗&lt;&#x2F;a&gt;Monorepo &amp;amp; Performance Optimization&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Perform a partial clone: download trees&#x2F;commits, defer blob fetches until access&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; clone&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --filter=blob:none&lt;&#x2F;span&gt;&lt;span&gt; [https:&#x2F;&#x2F;github.com&#x2F;org&#x2F;repo.git](&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;org&#x2F;repo.git&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Enable sparse checkout in high-speed cone mode (limits working tree files)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sparse-checkout init&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --cone&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sparse-checkout set services&#x2F;api&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Generate commit-graph and multi-pack index (MIDX) to accelerate DAG traversals&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; commit-graph write&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --reachable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; multi-pack-index write&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Repack loose objects into a single optimized packfile with reachability bitmaps&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; repack&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -a -d --write-bitmap-index&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Schedule automated background repository optimization tasks (Git 2.29+)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; maintenance start&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</description>
      </item>
      <item>
          <title>Filen</title>
          <pubDate>Fri, 16 Jan 2026 22:28:33 +0100</pubDate>
          <author>Unknown</author>
          <link>https://daesorin.xyz/posts/filen/</link>
          <guid>https://daesorin.xyz/posts/filen/</guid>
          <description xml:base="https://daesorin.xyz/posts/filen/">&lt;h2 id=&quot;1-installation-environment&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#1-installation-environment&quot; aria-label=&quot;Anchor link for: 1-installation-environment&quot;&gt;🔗&lt;&#x2F;a&gt;1. Installation &amp;amp; Environment&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Install CLI (places binary in PATH)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;curl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -sL&lt;&#x2F;span&gt;&lt;span&gt; [https:&#x2F;&#x2F;filen.io&#x2F;cli.sh](&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;https:&#x2F;&#x2F;filen.io&#x2F;cli.sh&lt;&#x2F;span&gt;&lt;span&gt;) &lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;|&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Verify installation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --version&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --help&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Version management&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; install latest&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; install canary&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; install&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;versio&lt;&#x2F;span&gt;&lt;span&gt;n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Override data directory ($XDG_CONFIG_HOME&#x2F;filen-cli or ~&#x2F;.config&#x2F;filen-cli by default)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --data-dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;path&#x2F;to&#x2F;dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;cm&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FILEN_CLI_DATA_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&#x2F;path&#x2F;to&#x2F;dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;cm&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;2-authentication&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#2-authentication&quot; aria-label=&quot;Anchor link for: 2-authentication&quot;&gt;🔗&lt;&#x2F;a&gt;2. Authentication&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Interactive login&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CLI flags authentication&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --email&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;emai&lt;&#x2F;span&gt;&lt;span&gt;l&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --password&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;passwor&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --two-factor-code&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;2f&lt;&#x2F;span&gt;&lt;span&gt;a&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Environment variable authentication&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;FILEN_EMAIL&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;email&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; FILEN_PASSWORD&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;pwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span&gt; FILEN_2FA_CODE&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;2fa&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt; filen&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Account management&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; whoami&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                 # Show authenticated account&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; logout&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                 # Remove saved credentials&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; export-auth-config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     # Export unencrypted auth config (avoids rate limits in clustered setups)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; export-api-key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;         # Export API key for Filen Rclone integration&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;3-remote-filesystem-metadata&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#3-remote-filesystem-metadata&quot; aria-label=&quot;Anchor link for: 3-remote-filesystem-metadata&quot;&gt;🔗&lt;&#x2F;a&gt;3. Remote Filesystem &amp;amp; Metadata&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Listing and inspection&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ls&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                     # List root directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ls &#x2F;Documents&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;          # List specific remote path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; ls&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --long&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;Documents&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;   # List with detailed metadata (size, modified date)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; stat &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # Show metadata for a file or directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; statfs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                 # Show cloud drive storage information&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Reading file contents&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; cat &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;   # Print entire file contents&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; head &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -n 20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # Print first 20 lines&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; tail &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -n 20&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # Print last 20 lines&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Drive navigation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; recents&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                # View recently used files and directories&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; favorites&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;              # View all favourited items&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;4-transfer-operations&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#4-transfer-operations&quot; aria-label=&quot;Anchor link for: 4-transfer-operations&quot;&gt;🔗&lt;&#x2F;a&gt;4. Transfer Operations&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Uploading&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; upload localfile.txt &#x2F;remote&#x2F;path&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                       # Upload file to remote directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; upload report.pdf &#x2F;Documents&#x2F;Q1-Report.pdf&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;               # Upload and rename remote file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; upload&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; *&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;.log &#x2F;Logs&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                      # Upload multiple files via glob pattern&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; write &#x2F;remote&#x2F;notes.txt &amp;quot;some content here&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;              # Write plain text directly to remote file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Downloading&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; download &#x2F;remote&#x2F;file.txt .&#x2F;localfile.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                # Download single remote file&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; download &#x2F;Backups&#x2F;project .&#x2F;local-project&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                # Download entire remote directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; download &#x2F;Documents&#x2F;notes.md .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                           # Download to current working directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;5-file-management-notes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#5-file-management-notes&quot; aria-label=&quot;Anchor link for: 5-file-management-notes&quot;&gt;🔗&lt;&#x2F;a&gt;5. File Management &amp;amp; Notes&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Directory and file manipulation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; mkdir &#x2F;remote&#x2F;newdir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                     # Create remote directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; rm &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                      # Move file or directory to trash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; rm &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --no-trash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                           # Permanently delete (bypasses trash)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; mv &#x2F;remote&#x2F;old-name.txt &#x2F;remote&#x2F;new-name.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;             # Move or rename file&#x2F;directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; cp &#x2F;remote&#x2F;source.txt &#x2F;remote&#x2F;backup.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                 # Copy file or directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Item states and local editing&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; favorite &#x2F;remote&#x2F;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                    # Favourite an item&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; unfavorite &#x2F;remote&#x2F;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                  # Unfavourite an item&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; open &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                    # Open remote file locally&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; edit &#x2F;remote&#x2F;file.txt&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                    # Edit locally (re-uploads on save and close)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; export-notes ~&#x2F;filen-notes&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                               # Export all notes to local directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;6-synchronisation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#6-synchronisation&quot; aria-label=&quot;Anchor link for: 6-synchronisation&quot;&gt;🔗&lt;&#x2F;a&gt;6. Synchronisation&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;modes-abbreviations&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#modes-abbreviations&quot; aria-label=&quot;Anchor link for: modes-abbreviations&quot;&gt;🔗&lt;&#x2F;a&gt;Modes &amp;amp; Abbreviations&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Mode&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Abbreviation&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Behaviour&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;twoWay&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;tw&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Changes on either side propagate to the other&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;localToCloud&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ltc&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Local changes pushed to cloud; cloud-only files untouched&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;localBackup&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;lb&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Local to cloud; remote deletions not propagated&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;cloudToLocal&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;ctl&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Cloud changes pulled to local; local-only files untouched&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;cloudBackup&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;cb&lt;&#x2F;code&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Cloud to local; local deletions not propagated&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# CLI execution&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync &#x2F;local&#x2F;path:&#x2F;cloud&#x2F;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                             # Basic pair (defaults to two-way)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync &#x2F;local1:twoWay:&#x2F;cloud1 &#x2F;local2:ltc:&#x2F;cloud2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;          # Explicit modes and multiple pairs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync &#x2F;local&#x2F;path:&#x2F;cloud&#x2F;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --continuous&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                # Continuous loop synchronisation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync &#x2F;local&#x2F;path:&#x2F;cloud&#x2F;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --disable-local-trash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;       # Disable local trash during sync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Configured sync pairs (~&#x2F;.config&#x2F;filen-cli&#x2F;syncPairs.json)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                                     # Run all configured pairs from default JSON&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync docs&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                                # Run specific configured pair by alias&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync &#x2F;path&#x2F;to&#x2F;custom-pairs.json&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                          # Run pairs from custom JSON configuration&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;sync-pairs-configuration-config-filen-cli-syncpairs-json&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#sync-pairs-configuration-config-filen-cli-syncpairs-json&quot; aria-label=&quot;Anchor link for: sync-pairs-configuration-config-filen-cli-syncpairs-json&quot;&gt;🔗&lt;&#x2F;a&gt;Sync Pairs Configuration (&lt;code&gt;~&#x2F;.config&#x2F;filen-cli&#x2F;syncPairs.json&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;json&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;[&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  {&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;local&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&#x2F;home&#x2F;user&#x2F;Documents&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;remote&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;&#x2F;Backups&#x2F;Documents&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;syncMode&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;localToCloud&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;alias&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;docs&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;disableLocalTrash&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; false&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;excludeDotFiles&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;:&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;    &amp;quot;ignore&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;: [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;*.tmp&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;node_modules&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  }&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;7-mounting-servers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#7-mounting-servers&quot; aria-label=&quot;Anchor link for: 7-mounting-servers&quot;&gt;🔗&lt;&#x2F;a&gt;7. Mounting &amp;amp; Servers&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Network Drive Mount (Requires FUSE3: pacman -S fuse3 &#x2F; apt install fuse3)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; mount&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                                    # Mount at default path (&#x2F;tmp&#x2F;filen on Linux)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; mount &#x2F;mnt&#x2F;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                         # Mount at custom path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;fusermount3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; -u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &#x2F;mnt&#x2F;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                                      # Unmount filesystem (Linux)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# WebDAV Server (Single-User Mode)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; webdav&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-password&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                   # Default server (0.0.0.0:80&#x2F;443)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; webdav&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-password&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-https&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;         # HTTPS with self-signed certificate&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; webdav&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-password&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-threads 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     # Enable clustering (0 = one thread per core)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; webdav&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;u&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-password&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;?&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-auth-scheme&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; basic&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt; # Auth scheme: basic or digest&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# WebDAV Server (Proxy Mode - Multi-User)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; webdav-proxy&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --w-port 1900&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                               # Users authenticate with own credentials&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Password format: password=secret&amp;amp;twoFactorAuthentication=&amp;lt;OTP_OR_RECOVERY_CODE&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# S3-Compatible Server (Set client s3ForcePathStyle=true and region=&amp;quot;filen&amp;quot;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; s3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-access-key-id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-secret-access-key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;ke&lt;&#x2F;span&gt;&lt;span&gt;y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;  # Start S3 server (0.0.0.0:80&#x2F;443)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; s3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-access-key-id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-secret-access-key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;ke&lt;&#x2F;span&gt;&lt;span&gt;y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-https&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;   # HTTPS S3 server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; s3&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-access-key-id&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;i&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-secret-access-key&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;ke&lt;&#x2F;span&gt;&lt;span&gt;y&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --s3-threads 0&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt; # Clustered S3 server&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;8-trash-public-links&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#8-trash-public-links&quot; aria-label=&quot;Anchor link for: 8-trash-public-links&quot;&gt;🔗&lt;&#x2F;a&gt;8. Trash &amp;amp; Public Links&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Trash management&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; trash&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                  # List all trash items&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; trash restore&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;          # Restore a specific trash item&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; trash delete&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;           # Permanently delete a specific trash item&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; trash empty&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;            # Permanently delete all trash items&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Public links&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; links&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                  # List all public links&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; links &#x2F;remote&#x2F;path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;     # Create, view, edit, or delete a link for a path&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;9-updates-execution-flags&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#9-updates-execution-flags&quot; aria-label=&quot;Anchor link for: 9-updates-execution-flags&quot;&gt;🔗&lt;&#x2F;a&gt;9. Updates &amp;amp; Execution Flags&lt;&#x2F;h2&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Update behaviour flags&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --force-update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;cm&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;   # Force check (bypasses 10-minute cache)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --skip-update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;cm&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    # Skip update check entirely&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --auto-update&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt; &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;cm&lt;&#x2F;span&gt;&lt;span&gt;d&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;&amp;gt;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;    # Update binary without confirmation prompt&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Canary channel&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; canary&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;                 # Toggle canary release channel&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;hr &#x2F;&gt;
&lt;h2 id=&quot;10-automation-scripting&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#10-automation-scripting&quot; aria-label=&quot;Anchor link for: 10-automation-scripting&quot;&gt;🔗&lt;&#x2F;a&gt;10. Automation &amp;amp; Scripting&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;daily-backup-script&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#daily-backup-script&quot; aria-label=&quot;Anchor link for: daily-backup-script&quot;&gt;🔗&lt;&#x2F;a&gt;Daily Backup Script&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;#!&#x2F;bin&#x2F;bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;set -e&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;TIMESTAMP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;date&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; +%Y-%m-%d&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;LOCAL_PATH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&#x2F;Documents&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;REMOTE_PATH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&#x2F;Backups&#x2F;Documents&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;$TIMESTAMP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;Starting Filen backup: &lt;&#x2F;span&gt;&lt;span&gt;$TIMESTAMP&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;filen&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; sync &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$LOCAL_PATH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;:localToCloud:&lt;&#x2F;span&gt;&lt;span&gt;$REMOTE_PATH&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; &amp;quot;Backup complete.&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;systemd-continuous-sync-service-config-systemd-user-filen-sync-service&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#systemd-continuous-sync-service-config-systemd-user-filen-sync-service&quot; aria-label=&quot;Anchor link for: systemd-continuous-sync-service-config-systemd-user-filen-sync-service&quot;&gt;🔗&lt;&#x2F;a&gt;Systemd Continuous Sync Service (&lt;code&gt;~&#x2F;.config&#x2F;systemd&#x2F;user&#x2F;filen-sync.service&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Unit]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Description&lt;&#x2F;span&gt;&lt;span&gt;=Filen Cloud Sync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;After&lt;&#x2F;span&gt;&lt;span&gt;=network-online.target&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Service]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Type&lt;&#x2F;span&gt;&lt;span&gt;=simple&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;ExecStart&lt;&#x2F;span&gt;&lt;span&gt;=&#x2F;usr&#x2F;bin&#x2F;env filen sync %h&#x2F;Documents:localToCloud:&#x2F;Backups&#x2F;Documents --continuous&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Restart&lt;&#x2F;span&gt;&lt;span&gt;=on-failure&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;RestartSec&lt;&#x2F;span&gt;&lt;span&gt;=30&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Install]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WantedBy&lt;&#x2F;span&gt;&lt;span&gt;=default.target&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;systemd-timer-config-systemd-user-filen-sync-timer&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#systemd-timer-config-systemd-user-filen-sync-timer&quot; aria-label=&quot;Anchor link for: systemd-timer-config-systemd-user-filen-sync-timer&quot;&gt;🔗&lt;&#x2F;a&gt;Systemd Timer (&lt;code&gt;~&#x2F;.config&#x2F;systemd&#x2F;user&#x2F;filen-sync.timer&lt;&#x2F;code&gt;)&lt;&#x2F;h3&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;ini&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Unit]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Description&lt;&#x2F;span&gt;&lt;span&gt;=Run Filen Sync every 6 hours&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Timer]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;OnBootSec&lt;&#x2F;span&gt;&lt;span&gt;=5min&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;OnUnitActiveSec&lt;&#x2F;span&gt;&lt;span&gt;=6h&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;Persistent&lt;&#x2F;span&gt;&lt;span&gt;=true&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;[Install]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #F97583;&quot;&gt;WantedBy&lt;&#x2F;span&gt;&lt;span&gt;=timers.target&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;pre class=&quot;giallo&quot; style=&quot;color: #E1E4E8; background-color: #24292E;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# Enable and start systemd automation&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; daemon-reload&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; enable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --now&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; filen-sync.timer&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #B392F0;&quot;&gt;systemctl&lt;&#x2F;span&gt;&lt;span style=&quot;color: #79B8FF;&quot;&gt; --user&lt;&#x2F;span&gt;&lt;span style=&quot;color: #9ECBFF;&quot;&gt; status filen-sync.timer&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</description>
      </item>
    </channel>
</rss>
