<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Osaigbovo Omere</title><link>https://osaigbovo.xyz/</link><description>Recent posts from Osaigbovo Omere</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><managingEditor>mail@osaigbovo.xyz (Osaigbovo Omere)</managingEditor><webMaster>mail@osaigbovo.xyz (Osaigbovo Omere)</webMaster><lastBuildDate>Thu, 14 May 2026 14:52:11 +0100</lastBuildDate><atom:link href="https://osaigbovo.xyz/index.xml" rel="self" type="application/rss+xml"/><item><title>Tiling Engine Hot-Swapping in Hyprland</title><link>https://osaigbovo.xyz/runbooks/tiling-engine-hot-swapping-in-hyprland/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/runbooks/tiling-engine-hot-swapping-in-hyprland/</guid><description>&lt;p&gt;For a long time, I treated Hyprland’s default layout engine, Dwindle, as an unquestioned standard. It worked. You open a window, it splits the screen. You open another, it splits again. It is organic, fractal, and chaotic.&lt;/p&gt;
&lt;p&gt;Recently, while building a landing page for a friend, that chaos became a liability. I needed a highly specific, static geometry: the browser dead centre, my terminal on the right, and my notes on the left. While you can manually resize and shove windows into a semblance of this layout using Dwindle, it lacks mathematical permanence. The moment you open a fourth window to check a reference, the fractal algorithm kicks in and destroys your geometry.&lt;/p&gt;
&lt;p&gt;I needed mathematical accuracy. I needed the system to enforce the layout, rather than fighting the system to maintain it.&lt;/p&gt;
&lt;p&gt;This led me to abandon Dwindle for structured work and adopt Hyprland&amp;rsquo;s Master layout, specifically configured for a centred orientation.&lt;/p&gt;
&lt;h3 id="the-centred-master"&gt;The Centred Master&lt;/h3&gt;
&lt;p&gt;The Master layout enforces a strict visual hierarchy. It designates a primary &amp;ldquo;master&amp;rdquo; zone that occupies a fixed mathematical percentage of the screen, and relegates all subsequent windows into subservient &amp;ldquo;stack&amp;rdquo; columns.&lt;/p&gt;
&lt;p&gt;By setting the orientation to &lt;code&gt;center&lt;/code&gt;, the master window is locked in the middle of the monitor, while the stacks form neat pillars in your peripheral vision on the left and right.&lt;/p&gt;
&lt;p&gt;&lt;img src="202605010837.png" alt="202605010837.png"&gt;&lt;br&gt;
&lt;em&gt;A mathematically precise workspace: 50% central focus, 25% peripheral reference columns.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="workspace-engine-swapping"&gt;Workspace Engine Swapping&lt;/h3&gt;
&lt;p&gt;I realised I did not have to choose between the predictable structure of the Master layout and the organic chaos of Dwindle. Hyprland allows you to declare global layout overrides on a per-workspace basis.&lt;/p&gt;
&lt;p&gt;I hardcoded my environment to swap engines dynamically. The odd workspaces (1, 3, 5, 7, 9) are strictly governed by the Master layout for development and writing. The even workspaces (2, 4, 6, 8, 10) default to Dwindle for ad-hoc browsing and terminal tasks.&lt;/p&gt;
&lt;p&gt;&lt;img src="202605010837-1.png" alt="202605010837-1.png"&gt;&lt;br&gt;
&lt;em&gt;The Dwindle engine running on an even workspace, dividing space recursively.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="the-configuration"&gt;The Configuration&lt;/h3&gt;
&lt;p&gt;Below is the exact &lt;code&gt;appearance.conf&lt;/code&gt; required to achieve this environment. It enforces the centred master, dictates the workspace rules, and strips out all visual noise&amp;ndash;no rounding, no blur, no drop shadows. Just functional geometry snapping into place.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# GENERAL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;general {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;gaps_in&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; gaps_out = 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; border_size = 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;col.active_border&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;$foreground
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; col.inactive_border = $background&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;layout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# DECORATION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;decoration {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;rounding&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;blur {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;shadow {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;false
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; }&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ANIMATIONS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;animations {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; bezier = sharp, 0.25, 1, 0.5, 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; animation = windows, 1, 4, sharp, slide
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; animation = windowsOut, 1, 4, sharp, slide
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; animation = border, 1, 10, default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; animation = fade, 1, 5, default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; animation = workspaces, 1, 5, sharp, slide&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# LAYOUT ENGINES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;master {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;mfact&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;0.50
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; orientation = center
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; new_on_top = true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; new_status = master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;dwindle {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;pseudotile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; preserve_split = yes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# WORKSPACES&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# odds: master layout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;1, layout:master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;3, layout:master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;5, layout:master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;7, layout:master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;9, layout:master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# evens: dwindle layout&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;2, layout:dwindle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;4, layout:dwindle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;6, layout:dwindle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;8, layout:dwindle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;workspace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;10, layout:dwindle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# MISCELLANEOUS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;misc {&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="na"&gt;force_default_wallpaper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt; disable_hyprland_logo = true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Categorical Collapse</title><link>https://osaigbovo.xyz/archive/categorical-collapse/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/categorical-collapse/</guid><description>&lt;p&gt;My timeline regularly fills with an absolutism that genuinely vexes me. People typing out rigid, marketable definitions of highly complex human states with the unearned certainty of a prophet. &amp;ldquo;Happiness comes from caring more about people.&amp;rdquo; &amp;ldquo;Happiness is choosing to see light.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;It is all bullshit.&lt;/p&gt;
&lt;p&gt;They deliberately corrupt the category out of pure terror. Stripped of poetic nonsense and religious overlay, happiness, joy, or release is strictly mechanical. It occurs when an organism successfully executes its specific drive state and unburdens its tension.&lt;/p&gt;
&lt;p&gt;To a nymphomaniac, sex is happiness. To a true academic, learning is happiness. To a semi-brainwashed human, reproducing is happiness. To a psychopath, killing is happiness. To a systems administrator, a perfectly structured environment is happiness.&lt;/p&gt;
&lt;p&gt;The inputs cross every conceivable moral boundary. The mechanical result remains identical. An immediate, overwhelming release for the actor.&lt;/p&gt;
&lt;p&gt;People hate this. Acknowledging that biology lacks a built-in moral compass leaves them completely alone in the void, forced to define their own existence without the comfort of a universal scorecard. To escape that terrifying autonomy, they smash a subjective chemical state into a thought-terminating cliché, package it as a pro-social achievement, and lock themselves securely inside it. Mass-produced cowardice masquerading as wisdom.&lt;/p&gt;</description></item><item><title>Firmware of Ruins</title><link>https://osaigbovo.xyz/archive/firmware-of-ruins/</link><pubDate>Thu, 30 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/firmware-of-ruins/</guid><description>&lt;p&gt;Watching an African fiercely defend the ideological software used to subjugate his own bloodline induces a very specific, exhausting nausea. You scroll through the timelines and watch them twist themselves into pathetic intellectual knots. They deploy frantic apologist acrobatics, claiming the text is merely a neutral hammer that was unfortunately misused. They point desperately to ancient, isolated sects in Ethiopia, as if a geographical technicality in the Horn of Africa somehow erases the brutal reality of the European gunships, slave ports, and missionaries that anchored on the western coast. It is the absolute highest form of subservience, paid by the asset to the extraction firm. You are watching a conquered people aggressively protect the monuments of their conquerors. They bare their teeth to defend the very chains that bind them.&lt;/p&gt;
&lt;p&gt;Eventually, the pure anger burns out. What replaces it is a cold, heavy tragedy. You look at these people and realise you are not arguing with conscious, autonomous actors. You are observing a self-replicating script.&lt;/p&gt;
&lt;p&gt;They have been intellectually hollowed out by a multi-generational formatting of their psychological hard drives. To simply call them fools feels insufficient, because a fool implies a poorly made choice. They made no choice. Their ontological framework was hijacked centuries ago. They defend this imported, alien god with such viciousness because they possess a profound, basal terror of the void. If they admit that the religion is a colonial implant&amp;ndash;a weapon rather than a universal truth&amp;ndash;the entire architecture of their reality collapses. They cling to the cross and the lockets because they have been meticulously conditioned to believe they cannot walk without them. They look at the absolute ruin of their environment and genuinely believe that discarding the white man&amp;rsquo;s mythology would somehow make them poorer. They are trapped in a psychological cell, and they absolutely love the walls.&lt;/p&gt;
&lt;p&gt;To understand how a mind becomes this broken, we have to examine the cold mechanics of why the monsters brought this specific religion to the continent in the first place.&lt;/p&gt;
&lt;p&gt;The invasion of Africa was never about saving souls. It was a brutal, sprawling logistical operation designed to feed the industrial engines of Europe. But extracting wealth through continuous physical violence is incredibly inefficient. Bullets cost money. Suppressing endless, bloody rebellion across a massive continent burns vast amounts of capital and manpower. A global extraction engine cannot function optimally if it has to continuously fight the labourers. The colonisers needed a frictionless mechanism to pacify the human substrate.&lt;/p&gt;
&lt;p&gt;They needed to introduce a virus.&lt;/p&gt;
&lt;p&gt;They imported a theology perfectly engineered to active pacification. The core mechanic of this software is delayed gratification weaponised at a geopolitical scale. You teach a population that poverty is holy. You teach them that the meek shall inherit the earth, conveniently leaving the present, physical earth entirely to the monsters who brought the book. You replace their indigenous, material-focused spiritualities with a system that completely divorces reward from physical reality. You convince an entire continent that physical suffering and the theft of their material resources is simply a down payment for an invisible mansion in the sky.&lt;/p&gt;
&lt;p&gt;It was the most devastating psychological heist in human history. The colonisers smashed the local frameworks, hypocritically branding indigenous practices as &amp;ldquo;idol worship&amp;rdquo; whilst simultaneously demanding absolute reverence for Roman torture devices, holy water, and the ritualistic consumption of a foreign deity&amp;rsquo;s flesh. They executed a hostile takeover of the spiritual market because an indoctrinated slave is infinitely cheaper to maintain than a chained one. Fighting a colonial administrator or a corrupt governor becomes completely irrational when your actual, promised reward only activates after your biological processes cease.&lt;/p&gt;
&lt;p&gt;The Europeans built physical, tangible heavens in London, Paris, and Lisbon using the blood, gold, and soil of Africa, all while convincing the Africans to patiently wait for a conceptual heaven in the clouds.&lt;/p&gt;
&lt;p&gt;And the machine is still running. The foreign administrators left, but they handed the administrative access to local politicians and prosperity pastors who run the exact same firmware. They loot a dying continent, collapse the infrastructure, and tell their congregations to pray harder and wait for divine timing. The ultimate, sickening triumph of this colonial malware is that it successfully mutated the African psyche. We have completely rebranded our absolute political cowardice as spiritual resilience. We endure infinite humiliation and call it faith. We are not strong; we are simply the easiest population on earth to oppress.&lt;/p&gt;</description></item><item><title>The Friction of Babel</title><link>https://osaigbovo.xyz/archive/the-friction-of-babel/</link><pubDate>Wed, 29 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/the-friction-of-babel/</guid><description>&lt;p&gt;&lt;img src="202604290601.png" alt="202604290601.png"&gt;&lt;/p&gt;
&lt;p&gt;I am an Edo man who struggles to speak his own language fluently. I am a Nigerian who fumbles with Pidgin, and someone who also finds English a heavy, sometimes painful exercise to speak aloud. Of all the jagged tools available for expression, English happens to be the one I wield with the least resistance. For a long time, this personal disconnect made me shy away from any grand discussions about linguistics, assuming my desire for a monolingual world was simply the byproduct of my own inability to effortlessly absorb new vocabularies.&lt;/p&gt;
&lt;p&gt;Yet, looking past that personal insecurity reveals a broader, objective reality: the fragmentation of human language is an exhausting, inefficient architecture.&lt;/p&gt;
&lt;p&gt;At its core, language is a tool designed to build bridges between minds. Its fundamental purpose is connection. However, humanity relies on thousands of incompatible bridges, and we romanticise a system that is inherently broken by its own diversity. If the purpose of a tool is to simplify a task, a fragmented tool only introduces profound friction.&lt;/p&gt;
&lt;p&gt;Consider the sheer effort we endure daily just to consume art, share information, or experience the world beyond our immediate borders. The fact that a sprawling, thousand-chapter cultivation epic must be placed on hold, leaving readers at the mercy of translators, is a tragedy of logistics. We are perpetually waiting for the rest of the world to be translated for us. When visual media is involved, the friction multiplies. Finding a brilliant foreign film often marks the beginning of a tedious hunt for subtitles. I have spent hours manually adjusting timestamps, even going so far as to write a programme to automate the synchronisation, only to realise that the true problem was the invisible barrier separating the filmmaker&amp;rsquo;s words from my understanding.&lt;/p&gt;
&lt;p&gt;It is a maddening tax we pay simply because humanity cannot agree on a single lexicon.&lt;/p&gt;
&lt;p&gt;The logical solution&amp;ndash;a unified global language&amp;ndash;would eradicate this friction instantly. It would make communication seamless. But this dream is an architectural impossibility, not because of logistics, but because of human nature. The ultimate roadblock to a monolingual world is the inevitable question: &lt;em&gt;Whose language do we choose?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Language is inherently political. It carries the immense weight of history, culture, and dominance. To mandate a single global tongue is to elevate one culture&amp;rsquo;s operating system above all others. Most people would rightfully view a mandated language as an act of subservience to whichever nation claims ownership of it. We remain fragmented because we cannot agree on who gets to rule the conversation.&lt;/p&gt;
&lt;p&gt;And so, the invisible barriers remain rigidly in place. To exist comfortably in China, one must learn Mandarin. For France, French. For Germany, German. We are forced to spend years memorising entirely new lexicons just to validate our existence across an imaginary line on a map.&lt;/p&gt;
&lt;p&gt;The world is complex enough. Communication, our primary tool for connection, has simply become another source of modern exhaustion. There is a deep, unspoken weariness in constantly navigating the translation of human thought, and perhaps it is perfectly fine to admit that the endless linguistic fragmentation of our world is profoundly tiring.&lt;/p&gt;</description></item><item><title>A Mapmaker's Lie and Other Poems of April</title><link>https://osaigbovo.xyz/archive/a-mapmaker-s-lie-and-other-poems-of-april/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/a-mapmaker-s-lie-and-other-poems-of-april/</guid><description>&lt;p&gt;&lt;strong&gt;A Mapmaker&amp;rsquo;s Lie&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am stuck in a mapmaker&amp;rsquo;s lie,&lt;br&gt;
Where the unbuilt foundations run dry.&lt;br&gt;
It&amp;rsquo;s a border of ink,&lt;br&gt;
On a ruinous brink,&lt;br&gt;
Just a corporate farm till we die.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Untitled&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To smile is a single condition,&lt;br&gt;
A heavily managed position.&lt;br&gt;
But the methods of dying,&lt;br&gt;
Of breaking and crying,&lt;br&gt;
Are endless in their repetition.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;The Fool’s Ledge&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The candles wait upon the floor,&lt;br&gt;
For steps that never cross the door.&lt;br&gt;
They light a fire meant to blind,&lt;br&gt;
To steal the silence from the mind.&lt;/p&gt;
&lt;p&gt;A mirror shows the world ahead,&lt;br&gt;
A crimson thread you learn to tread.&lt;br&gt;
But as you touch the glass to speak,&lt;br&gt;
The edges break, the wood is weak.&lt;/p&gt;
&lt;p&gt;The jester’s smile is carved in stone,&lt;br&gt;
While counting all that you have known.&lt;br&gt;
He turns his back on morning light,&lt;br&gt;
And leaves your ghost to face the night.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Untitled&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The morning arrives with a glow,&lt;br&gt;
Though progress feels heavy and slow.&lt;br&gt;
With heart in the chase,&lt;br&gt;
And steadying pace,&lt;br&gt;
The seeds that you plant start to grow.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Untitled&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There once was a man with no throne,&lt;br&gt;
Who carved out a will of his own,&lt;br&gt;
No figure to praise,&lt;br&gt;
No past to upraise,&lt;br&gt;
He stood and declared himself stone.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img src="202604280912.png" alt="202604280912.png"&gt;&lt;/p&gt;</description></item><item><title>Protocols of Ruin</title><link>https://osaigbovo.xyz/archive/protocols-of-ruin/</link><pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/protocols-of-ruin/</guid><description>&lt;p&gt;We build philosophical heuristics exactly how we build software abstractions. We construct them to protect our minds from the overwhelming, brutal complexity of the underlying machine. When the raw data of human behaviour becomes too heavy to process, we reach for a mental model to parse it for us. For decades, one of the most widely deployed of these models has been Hanlon’s Razor. It commands us to never attribute to malice that which is adequately explained by stupidity. It wears the aesthetic of profound rationality.&lt;/p&gt;
&lt;p&gt;A recent observation by Matthew Lyon caused the entire architecture of that aphorism to collapse. Lyon stated cleanly that Hanlon’s Razor itself functions as an incompetent or malicious thought-terminating cliché for dealing with rhetoric. That single sentence dredged up a visceral, unhealed memory of 2023, providing a new framework for a betrayal I had long struggled to articulate.&lt;/p&gt;
&lt;p&gt;I used Hanlon’s Razor extensively during that election year. I wielded it as a social sealant, a desperate rationalisation to justify my continued friendship with people who actively supported the ascension of an extraordinarily vile figure to the presidency. As I watched the political landscape curdle, I convinced myself that these friends were simply victims of profound cognitive failure. I forgave them by reducing their agency, deciding they were merely foolish.&lt;/p&gt;
&lt;p&gt;The elected regime then proceeded to systematically dismantle every piece of half-functioning infrastructure we had left. It took a geography that had long been pretending to be a country and formally transformed it into a dead country.&lt;/p&gt;
&lt;p&gt;In the ruins of that collapse, the truth of their support finally emerged. My friends had not been tricked by rhetoric, nor were they blinded by a lack of education. They supported the destruction because they had received private assurances. They expected to be fixed into positions where the profound failings of the government would simply bypass them. They willingly traded the architectural integrity of the nation for a promised spot in a personal bunker. I had thought them fools. They remain fools, because the political promises of immunity were ultimately empty. However, the core revelation stands. They were monsters operating in their own rational, devastating self-interest.&lt;/p&gt;
&lt;p&gt;This exposes the fatal flaw of Hanlon’s Razor. Originally designed as an informal tool to prevent paranoia, it has been entirely weaponised into an alibi for complicity. Mandating that observers must assume incompetence before malice creates a system where malicious actors are highly incentivised to adopt the camouflage of stupidity. If a politician or an institution can destroy a nation&amp;rsquo;s future and be defended by philosophers insisting they simply did not know any better, incompetence ceases to be a failure state. It functions as a highly effective legal and moral shield. Hanlon’s Razor pardons this precise brand of monstrosity by framing it as a deficit of intelligence. It demands we treat calculated, systemic selfishness as innocent incompetence.&lt;/p&gt;
&lt;p&gt;Surviving the modern era requires us to abandon the prosecution of intent. We spend an absurd amount of energy trying to peer into the hearts of corrupt administrators and failing institutions to determine their internal motivations. That distinction is a luxury we can no longer afford.&lt;/p&gt;
&lt;p&gt;We must adopt the cybernetic principle articulated by Stafford Beer. POSIWID dictates that the purpose of a system is what it does. Intentions, stated goals, and original blueprints hold absolutely no weight when evaluating a functioning architecture. In systems engineering, if a script explicitly written to secure a database instead wipes the servers clean every Sunday at midnight, the intention of the developer is structurally irrelevant. The system is a deletion engine. Leaving the system running constitutes authorisation of the deletion.&lt;/p&gt;
&lt;p&gt;Applied to human architecture&amp;ndash;governments, economies, friendships&amp;ndash;POSIWID acts as a brutal, clarifying lens. A political regime that consistently produces immiseration, extraction, and dead infrastructure must be judged exclusively by those outputs. We must stop asking if they are making mistakes. The purpose of their system is to extract and destroy. Intentions are invisible, unprovable, and easily fabricated. Consequences are physical, measurable, and inescapable. Action and result define the tool. A hammer that consistently shatters the wood rather than driving the nail must be categorised strictly as a wood-shattering device. Its identity is forged entirely in its physical friction with reality, completely divorced from the aspirations of the blacksmith who cast it.&lt;/p&gt;
&lt;p&gt;We require a new heuristic to replace the outdated comfort of Hanlon. We can establish this as Lyon’s Razor. It dictates that whenever incompetence is consistently invoked to protect a harmful system, the invocation itself constitutes an act of malice. This razor removes the luxury of pleading ignorance. It recognises that incompetence, deployed at scale, serves as a calculated operational strategy. If the direct result of a supposedly foolish action repeatedly serves the actor&amp;rsquo;s self-interest at the expense of the wider ecosystem, that foolishness functions seamlessly as a calculated weapon.&lt;/p&gt;
&lt;p&gt;Believing the world is broken simply because its administrators are stupid offers a terrifying comfort, implying the system can be fixed with education or better data. Malice, conversely, demands confrontation. I am done granting the benefit of the doubt to the architects of ruin. I am done using thought-terminating clichés to protect myself from the reality of the people around me. The razor is dull. We must now judge the machine strictly by its output.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img src="202604271125.png" alt="202604271125.png"&gt;&lt;/p&gt;</description></item><item><title>What is The Fediverse?</title><link>https://osaigbovo.xyz/archive/what-is-the-fediverse/</link><pubDate>Sat, 25 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/what-is-the-fediverse/</guid><description>&lt;p&gt;The Fediverse is a collection of independent servers communicating via a shared protocol. The primary protocol is &lt;strong&gt;ActivityPub&lt;/strong&gt;. It standardises the transmission of text, images, and user states across disparate hardware. This infrastructure eliminates the central authority of a single corporate entity, distributing server costs, moderation policies, and data ownership across the network participants.&lt;/p&gt;
&lt;p&gt;The Nigerian digital landscape currently lacks native ActivityPub infrastructure. Users operating from Nigeria rely exclusively on foreign hardware. This manual establishes the structural architecture of the Fediverse, defining the specific hierarchy required to operate within it and detailing the operational differences between its software platforms.&lt;/p&gt;
&lt;h3 id="the-structural-hierarchy"&gt;The Structural Hierarchy&lt;/h3&gt;
&lt;p&gt;The network organises into three distinct tiers: &lt;strong&gt;Domains&lt;/strong&gt;, &lt;strong&gt;Instances&lt;/strong&gt;, and &lt;strong&gt;Communities&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Domains&lt;/strong&gt; represent the foundational software platforms. Mastodon, Lemmy, and Pixelfed are Domains. They define the data structure&amp;ndash;whether the platform processes micro-blogs, threaded forum discussions, or image galleries.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Instances&lt;/strong&gt; are the physical or virtual servers running the Domain software. A Domain is a blueprint; the Instance is the deployed reality. Users register accounts on Instances, not Domains. The Instance dictates the moderation policy, the data storage limits, and the exact version of the Domain software in operation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Communities&lt;/strong&gt; exist exclusively within specific Domains&amp;ndash;primarily Lemmy and PieFed. They are categorised data hubs. An Instance hosts the overall platform, while Communities segment the users and posts into subject-specific architectures.&lt;/p&gt;
&lt;h3 id="the-protocol-interoperability-friction"&gt;The Protocol Interoperability Friction&lt;/h3&gt;
&lt;p&gt;The ActivityPub protocol enables cross-Domain communication. A user on a Mastodon Instance can follow and reply to a user on a Pixelfed Instance. The mechanical reality of this interaction is highly flawed.&lt;/p&gt;
&lt;p&gt;Interacting across Domains requires heavy protocol translation. When a Mastodon Instance processes a post from a Lemmy Instance, it attempts to map a threaded, subject-based forum structure onto a chronological micro-blogging interface. The translation strips metadata. Threaded replies flatten into a single chronological timeline. Context is destroyed. Voting mechanics&amp;ndash;such as Lemmy&amp;rsquo;s upvote and downvote system&amp;ndash;fail to register on Mastodon, which only recognises &amp;lsquo;favourites&amp;rsquo; and &amp;lsquo;boosts&amp;rsquo;.&lt;/p&gt;
&lt;p&gt;Complete functionality requires native accounts within each Domain. To interact with the Lemmy network without data degradation, a user must operate a Lemmy account. Cross-Domain federation is a baseline fallback for visibility&amp;ndash;it is not a substitute for native interaction.&lt;/p&gt;
&lt;h3 id="the-microblogging-domain"&gt;The Microblogging Domain&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Mastodon&lt;/strong&gt; is the primary microblogging Domain. It processes short-form text, links, and media attachments. It broadcasts these data packets to followers in a strict chronological feed.&lt;/p&gt;
&lt;p&gt;The core Mastodon software dictates specific limitations, leading to the creation of competing software forks. These forks operate on the same ActivityPub protocol but alter the local Instance capabilities.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Glitch-soc&lt;/strong&gt; is a modified version of Mastodon. It adds local-only posting capabilities, allowing users to broadcast messages exclusively to their Instance without federating the post to the broader network. It includes advanced text formatting options and structural modifications to the user interface.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hometown&lt;/strong&gt; is another fork, built upon Glitch-soc. It prioritises localised interaction over global federation. It allows Instance administrators to restrict specific posts from leaving the Instance server, creating isolated digital environments while maintaining the ability to read external data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Akkoma&lt;/strong&gt; and &lt;strong&gt;Pleroma&lt;/strong&gt; are lightweight microblogging alternatives to Mastodon. They demand significantly less server hardware to operate. They process data faster but feature brutalist user interfaces and lack some of Mastodon&amp;rsquo;s advanced filtering tools.&lt;/p&gt;
&lt;p&gt;Connecting to the Microblogging Domain requires client software. Users access Mastodon and its forks via dedicated applications. &lt;strong&gt;Ice Cubes&lt;/strong&gt; and &lt;strong&gt;Tusky&lt;/strong&gt; pull data from the Instance via APIs, displaying the feed on mobile devices. The client software handles the interface; the Instance handles the data storage.&lt;/p&gt;
&lt;h3 id="the-aggregation-domain"&gt;The Aggregation Domain&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Lemmy&lt;/strong&gt; structures data as threaded discussions. It is an aggregation Domain. Users submit links or text blocks, and the network ranks them based on user interactions.&lt;/p&gt;
&lt;p&gt;The Lemmy architecture introduces the &lt;strong&gt;Community&lt;/strong&gt; tier. A Community is established on a specific Lemmy Instance. Users from any Lemmy Instance can subscribe to that Community. The host Instance stores the original data; subscriber Instances cache copies of the data for local users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kbin&lt;/strong&gt; is an alternative aggregation Domain. It attempts to merge the microblogging interface of Mastodon with the threaded structure of Lemmy. It allows users to post short-form microblogs alongside long-form threaded articles. This dual-structure creates database bloat and increases the difficulty of cross-Domain federation.&lt;/p&gt;
&lt;p&gt;Client applications for the Aggregation Domain include &lt;strong&gt;Mlem&lt;/strong&gt; and &lt;strong&gt;Voyager&lt;/strong&gt;. These applications interpret the nested threading and voting mechanics specific to Lemmy and Kbin, presenting the data efficiently on mobile hardware.&lt;/p&gt;
&lt;h3 id="the-visual-domain"&gt;The Visual Domain&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Pixelfed&lt;/strong&gt; processes image galleries. It mimics the interface of centralised image-sharing platforms. It applies filters, organises media into albums, and federates these images across the ActivityPub network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PeerTube&lt;/strong&gt; processes video data. It operates a peer-to-peer distribution model. When multiple users watch a video on a PeerTube Instance, the software utilises their local network bandwidth to share the video data among them, reducing the load on the host server.&lt;/p&gt;
&lt;h3 id="infrastructure-and-deployment-in-nigeria"&gt;Infrastructure and Deployment in Nigeria&lt;/h3&gt;
&lt;p&gt;The complete absence of Nigerian Fediverse Instances creates a dependency loop. Nigerian users generate data that is stored and monetised by foreign hardware operators. Establishing sovereignty requires local deployment.&lt;/p&gt;
&lt;p&gt;Deploying an Instance requires a Virtual Private Server (VPS), a domain name, and an object storage bucket for media assets. The administrator configures a reverse proxy&amp;ndash;typically Nginx or Caddy&amp;ndash;to route incoming traffic to the ActivityPub software. The Instance stores user data in a PostgreSQL database.&lt;/p&gt;
&lt;p&gt;Instances scale through horizontal federation, but database management dictates survival. Every time an Instance user follows an external account, the local database must process and store the incoming data packets from that external Instance. Without aggressive caching limits and automated media purging, the local database will exhaust the server&amp;rsquo;s storage capacity.&lt;/p&gt;
&lt;p&gt;Security must focus on the infrastructure level. Dependency chains in software deployment present vulnerabilities. Relying on bloated package managers introduces supply chain risks. Administrators must utilise system-native build tools and restrict network access to the database layer via strict firewall configurations.&lt;/p&gt;
&lt;p&gt;Moderation is a mechanical process. Spam and malicious data propagate through federation. The administrator executes server blocks (defederation) to sever the connection between the local Instance and the offending external Instance. This drops all incoming packets from the blocked server at the protocol level.&lt;/p&gt;
&lt;h3 id="the-mechanical-failure-of-cross-domain-communication"&gt;The Mechanical Failure of Cross-Domain Communication&lt;/h3&gt;
&lt;p&gt;The assertion that the Fediverse is a single, unified social network is a marketing fiction. It is a collection of disparate software architectures forced to communicate through a lowest-common-denominator protocol.&lt;/p&gt;
&lt;p&gt;ActivityPub operates on a system of Actors, Inboxes, and Outboxes. When a user on a Mastodon Instance publishes a post, the software wraps the text and media in a JSON-LD data object. The Instance server then queries the database for every external Instance where a follower resides. It fires this JSON-LD object directly into the Inboxes of those external servers.&lt;/p&gt;
&lt;p&gt;This works efficiently within the Microblogging Domain. Mastodon to Mastodon communication is native. Mastodon to Hometown communication is near-native. The database structures expect chronological, short-form data.&lt;/p&gt;
&lt;p&gt;The structural failure occurs when data crosses Domains. Lemmy is an Aggregation Domain. It does not natively understand chronological timelines. It understands hierarchical trees&amp;ndash;a root post, followed by nested replies, ranked by numerical scores.&lt;/p&gt;
&lt;p&gt;When a Lemmy user comments on a Mastodon post, the Lemmy Instance wraps the comment in an ActivityPub object and sends it to the Mastodon Instance. Mastodon receives the object, fails to comprehend the nested threading context, strips the relational metadata, and appends the text as a flat, chronological reply.&lt;/p&gt;
&lt;p&gt;When a Mastodon user attempts to participate in a Lemmy Community, the failure is reversed. Mastodon has no concept of &amp;lsquo;Communities&amp;rsquo;&amp;ndash;it only understands &amp;lsquo;Users&amp;rsquo;. To interact with a Lemmy Community from Mastodon, the Mastodon user must address the Community as if it were a single user account (e.g., &lt;code&gt;@technology@lemmy.world&lt;/code&gt;). The Mastodon software then blasts the reply into the Lemmy Community. The Lemmy software attempts to parse this, but because the Mastodon user cannot transmit an upvote or downvote, their interaction is structurally crippled. The Mastodon user is permanently locked out of the core mechanic of the Aggregation Domain.&lt;/p&gt;
&lt;p&gt;To operate effectively across the Fediverse, users must establish separate accounts native to each Domain. A user requires a Mastodon account for microblogging, a Lemmy account for aggregation, and a Pixelfed account for image distribution. Treating ActivityPub as a universal translator destroys data fidelity.&lt;/p&gt;
&lt;h3 id="advanced-domain-analysis-microblogging"&gt;Advanced Domain Analysis: Microblogging&lt;/h3&gt;
&lt;p&gt;The Microblogging Domain is saturated with Mastodon instances. Mastodon is written in Ruby on Rails. It is notoriously resource-heavy. It requires Redis for job queuing, PostgreSQL for data storage, and Node.js for streaming connections. This hardware requirement creates a barrier to entry for independent operators.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pleroma&lt;/strong&gt; and &lt;strong&gt;Akkoma&lt;/strong&gt; solve the hardware bloat. They are written in Elixir. They require a fraction of the RAM needed by Mastodon. An Akkoma Instance can run on a single-core Virtual Private Server with 1GB of RAM, servicing dozens of users.&lt;/p&gt;
&lt;p&gt;Akkoma introduces Custom Emoji Reactions&amp;ndash;a feature absent from native Mastodon. When an Akkoma user reacts to a post with a custom emoji, the ActivityPub object transmits this reaction. If the receiving Instance is Mastodon, the Mastodon software silently drops the reaction because its database schema does not support it. This illustrates the core problem of protocol fragmentation: advanced features are trapped within specific software forks.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Misskey&lt;/strong&gt; and &lt;strong&gt;FoundKey&lt;/strong&gt; represent the hyper-interactive branch of the Microblogging Domain. They integrate complex drive storage systems, massive custom emoji integration, and widget-based dashboards. They generate extreme database traffic. A Misskey Instance federating with a standard Mastodon Instance often overwhelms the Mastodon server with reaction data and protocol requests.&lt;/p&gt;
&lt;h3 id="advanced-domain-analysis-long-form-and-audio"&gt;Advanced Domain Analysis: Long-Form and Audio&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;WriteFreely&lt;/strong&gt; and &lt;strong&gt;Plume&lt;/strong&gt; define the Publishing Domain. They process long-form text. They do not operate on chronological feeds. They structure data as static blogs. When a WriteFreely article federates to Mastodon, Mastodon truncates the text and provides a hyperlink back to the host Instance. The interaction happens on Mastodon, but the reading happens on WriteFreely.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Funkwhale&lt;/strong&gt; defines the Audio Domain. It is a decentralised audio hosting and streaming platform. Users upload music or podcasts, and the software structures the data into libraries. These libraries federate via ActivityPub. A Mastodon user can follow a Funkwhale library and receive audio tracks in their timeline, but they cannot natively browse the nested albums without accessing the Funkwhale interface directly.&lt;/p&gt;
&lt;h3 id="the-nigerian-imperative-server-sovereignty"&gt;The Nigerian Imperative: Server Sovereignty&lt;/h3&gt;
&lt;p&gt;Operating within the Fediverse without owning infrastructure is digital sharecropping. Nigerian users are currently generating data that populates European and American databases. The administrators of these foreign instances hold absolute power over the data. They can terminate accounts, purge databases, or sever federation links at their discretion.&lt;/p&gt;
&lt;p&gt;To establish digital sovereignty, Nigerian operators must deploy native infrastructure.&lt;/p&gt;
&lt;h4 id="database-architecture-and-hardware-reality"&gt;Database Architecture and Hardware Reality&lt;/h4&gt;
&lt;p&gt;Deploying an Instance is an exercise in database management. PostgreSQL is the central organ of the Fediverse. Every text post, every image link, and every follower relationship is a row in a PostgreSQL table.&lt;/p&gt;
&lt;p&gt;When an Instance connects to the wider Fediverse, the database balloons. A single user following 100 active accounts on external Instances will force the local server to download, process, and store thousands of JSON-LD objects daily.&lt;/p&gt;
&lt;p&gt;Nigerian deployments must prioritise aggressive pruning. Administrators must configure scheduled tasks (cron jobs) to delete cached media and stale posts from external Instances. Without strict retention policies, a 100GB storage volume will fill in weeks.&lt;/p&gt;
&lt;h4 id="security-and-supply-chain-isolation"&gt;Security and Supply Chain Isolation&lt;/h4&gt;
&lt;p&gt;System integrity is paramount. Relying on pre-packaged installation scripts obscures the software architecture and introduces external vulnerabilities.&lt;/p&gt;
&lt;p&gt;Administrators should compile software from source or utilize strict, minimal containerization. The avoidance of vast, unregulated package registries&amp;ndash;such as the Node Package Manager (npm)&amp;ndash;is critical for securing the server environment against supply chain poisoning. Build from the metal up. Verify the source code.&lt;/p&gt;
&lt;p&gt;Configure the server firewall to drop all incoming traffic except ports 80 (HTTP), 443 (HTTPS), and 22 (SSH). Isolate the database. Ensure PostgreSQL only listens on the localhost interface. Never expose the database to the open internet.&lt;/p&gt;
&lt;h4 id="the-moderation-mechanic"&gt;The Moderation Mechanic&lt;/h4&gt;
&lt;p&gt;The Fediverse lacks a central authority. Moderation is executed at the Instance level. It is a brutal, mechanical process.&lt;/p&gt;
&lt;p&gt;Administrators wield two primary tools: &lt;strong&gt;Silencing&lt;/strong&gt; and &lt;strong&gt;Suspending&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Silencing an external Instance hides its users from the local public timelines. The data still enters the local database, and local users can still explicitly follow those accounts, but the data is removed from public discovery.&lt;/p&gt;
&lt;p&gt;Suspending an external Instance severs the ActivityPub connection entirely. The local server drops all incoming requests from the suspended server. The database ceases to store its data. This is the ultimate defensive mechanic against spam networks and malicious domains.&lt;/p&gt;
&lt;p&gt;African instances must heavily utilize proactive suspension. The global Fediverse is saturated with automated scrapers and malicious actors. Maintaining a functional Instance requires an aggressive defederation policy. Connect only to trusted Instances. Cut the rest off at the protocol level.&lt;/p&gt;</description></item><item><title>My Arch Install</title><link>https://osaigbovo.xyz/runbooks/my-arch-install/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/runbooks/my-arch-install/</guid><description>&lt;h2 id="1-pre-flight"&gt;1. Pre-Flight&lt;/h2&gt;
&lt;p&gt;Boot the Arch live USB in UEFI mode. Confirm it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /sys/firmware/efi/efivars
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Set the keymap immediately. You will be typing a LUKS passphrase shortly, and the default US layout will silently mangle it.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;loadkeys uk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Connect to the network and synchronise the clock:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping -c &lt;span class="m"&gt;3&lt;/span&gt; archlinux.org
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# wireless if needed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iwctl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# station wlan0 scan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# station wlan0 connect &amp;lt;ssid&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl set-ntp &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;timedatectl status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="2-storage-architecture"&gt;2. Storage Architecture&lt;/h2&gt;
&lt;p&gt;The partition layout is straightforward:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Partition&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/dev/nvme0n1p1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1 GiB&lt;/td&gt;
&lt;td&gt;EFI System Partition — vfat, unencrypted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/dev/nvme0n1p2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2 GiB&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/boot&lt;/code&gt; — ext4, unencrypted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/dev/nvme0n1p3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~253 GiB&lt;/td&gt;
&lt;td&gt;LUKS2 container&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Inside the LUKS container, LVM carves out four volumes:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Volume&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;Filesystem&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vg0/swap&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;16 GiB&lt;/td&gt;
&lt;td&gt;swap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vg0/root&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;50 GiB&lt;/td&gt;
&lt;td&gt;XFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vg0/var&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;20 GiB&lt;/td&gt;
&lt;td&gt;XFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vg0/home&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;~167 GiB&lt;/td&gt;
&lt;td&gt;XFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;16 GiB of swap is twice the physical RAM. That covers hibernation without spilling.&lt;/p&gt;
&lt;h3 id="21-wipe-the-drive"&gt;2.1 Wipe the Drive&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wipefs -a /dev/nvme0n1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="22-partition"&gt;2.2 Partition&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted -s /dev/nvme0n1 mklabel gpt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted -s /dev/nvme0n1 mkpart ESP fat32 1MiB 1025MiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted -s /dev/nvme0n1 &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; esp on
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted -s /dev/nvme0n1 mkpart primary ext4 1025MiB 3073MiB
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;parted -s /dev/nvme0n1 mkpart primary 3073MiB 100%
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="23-encrypt-the-root-partition"&gt;2.3 Encrypt the Root Partition&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size &lt;span class="m"&gt;512&lt;/span&gt; /dev/nvme0n1p3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cryptsetup open /dev/nvme0n1p3 cryptroot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;/boot&lt;/code&gt; sits on its own unencrypted partition — GRUB reads it directly. &lt;code&gt;GRUB_ENABLE_CRYPTODISK&lt;/code&gt; is not needed here.&lt;/p&gt;
&lt;h3 id="24-lvm"&gt;2.4 LVM&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pvcreate /dev/mapper/cryptroot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vgcreate vg0 /dev/mapper/cryptroot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvcreate -L 16G -n swap vg0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvcreate -L 50G -n root vg0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvcreate -L 20G -n var vg0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;lvcreate -l 100%FREE -n home vg0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="25-format"&gt;2.5 Format&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.vfat -F32 /dev/nvme0n1p1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.ext4 /dev/nvme0n1p2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.xfs /dev/vg0/root
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.xfs /dev/vg0/var
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkfs.xfs /dev/vg0/home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkswap /dev/vg0/swap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="26-mount"&gt;2.6 Mount&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/vg0/root /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /mnt/&lt;span class="o"&gt;{&lt;/span&gt;boot/efi,home,var&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/nvme0n1p2 /mnt/boot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/nvme0n1p1 /mnt/boot/efi
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/vg0/var /mnt/var
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount /dev/vg0/home /mnt/home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;swapon /dev/vg0/swap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="3-base-installation"&gt;3. Base Installation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacstrap -K /mnt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; base base-devel linux linux-headers linux-firmware &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; intel-ucode &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; lvm2 cryptsetup xfsprogs e2fsprogs dosfstools &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; neovim tmux git networkmanager man-db man-pages sudo &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mesa vulkan-intel intel-media-driver &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hyprland waybar rofi-wayland &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; xdg-desktop-portal-hyprland xdg-desktop-portal-gtk &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; xdg-user-dirs polkit-gnome &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ly &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; kitty wl-clipboard grim slurp &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; hypridle hyprlock mako &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; pipewire pipewire-alsa pipewire-pulse pipewire-jack wireplumber pavucontrol &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bluez bluez-utils &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; tlp tlp-rdw acpid brightnessctl &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ttf-ibm-plex noto-fonts noto-fonts-emoji ttf-jetbrains-mono-nerd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then generate the filesystem table:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /mnt/etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="4-system-configuration"&gt;4. System Configuration&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;arch-chroot /mnt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="41-timezone-and-locale"&gt;4.1 Timezone and Locale&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -sf /usr/share/zoneinfo/Africa/Lagos /etc/localtime
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hwclock --systohc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &lt;span class="s1"&gt;&amp;#39;s/^#en_GB.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/&amp;#39;&lt;/span&gt; /etc/locale.gen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;locale-gen
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;LANG=en_GB.UTF-8&amp;#34;&lt;/span&gt; &amp;gt; /etc/locale.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="42-keymap"&gt;4.2 Keymap&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;localectl&lt;/code&gt; requires a running systemd instance. Inside &lt;code&gt;arch-chroot&lt;/code&gt; it will either fail silently or error out, leaving you with no keymap on first boot. Write directly to &lt;code&gt;vconsole.conf&lt;/code&gt; instead — the &lt;code&gt;keyboard&lt;/code&gt; and &lt;code&gt;keymap&lt;/code&gt; mkinitcpio hooks read it automatically.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;KEYMAP=uk&amp;#34;&lt;/span&gt; &amp;gt; /etc/vconsole.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="43-network-identity"&gt;4.3 Network Identity&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;arch&amp;#34;&lt;/span&gt; &amp;gt; /etc/hostname
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat &lt;span class="s"&gt;&amp;lt;&amp;lt;EOF &amp;gt; /etc/hosts
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;127.0.0.1 localhost
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;::1 localhost
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;127.0.1.1 arch.localdomain arch
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; NetworkManager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="44-initramfs"&gt;4.4 Initramfs&lt;/h3&gt;
&lt;p&gt;Edit &lt;code&gt;/etc/mkinitcpio.conf&lt;/code&gt; and set the &lt;code&gt;HOOKS&lt;/code&gt; array. The ordering is not optional — &lt;code&gt;encrypt&lt;/code&gt; must come before &lt;code&gt;lvm2&lt;/code&gt;, and &lt;code&gt;resume&lt;/code&gt; must follow &lt;code&gt;lvm2&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt lvm2 resume filesystems fsck)
&lt;/code&gt;&lt;/pre&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvim /etc/mkinitcpio.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkinitcpio -P
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="5-bootloader"&gt;5. Bootloader&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pacman -S grub efibootmgr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Get the UUID of the LUKS partition:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;blkid /dev/nvme0n1p3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Edit &lt;code&gt;/etc/default/grub&lt;/code&gt;. Set &lt;code&gt;GRUB_CMDLINE_LINUX&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;GRUB_CMDLINE_LINUX=&amp;#34;cryptdevice=UUID=&amp;lt;uuid&amp;gt;:cryptroot root=/dev/mapper/vg0-root resume=/dev/mapper/vg0-swap&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Replace &lt;code&gt;&amp;lt;uuid&amp;gt;&lt;/code&gt; with the actual string from &lt;code&gt;blkid&lt;/code&gt;. The &lt;code&gt;resume=&lt;/code&gt; parameter enables hibernation via the swap LV. Drop it if you do not need hibernation.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nvim /etc/default/grub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install and generate the config. The &lt;code&gt;--removable&lt;/code&gt; flag writes a fallback EFI entry that survives firmware resets.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grub-install --target&lt;span class="o"&gt;=&lt;/span&gt;x86_64-efi --efi-directory&lt;span class="o"&gt;=&lt;/span&gt;/boot/efi &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --bootloader-id&lt;span class="o"&gt;=&lt;/span&gt;GRUB --removable
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grub-mkconfig -o /boot/grub/grub.cfg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="6-user-management"&gt;6. User Management&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;useradd -m -s /bin/bash -G wheel,video,audio,storage,input osaigbovo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;passwd osaigbovo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# uncomment: %wheel ALL=(ALL:ALL) ALL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;EDITOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nvim visudo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;input&lt;/code&gt; group is required for Wayland input device access under Hyprland.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="7-desktop-services"&gt;7. Desktop Services&lt;/h2&gt;
&lt;p&gt;Enable everything before the first reboot:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; ly
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; bluetooth
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; tlp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; tlp-rdw
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; acpid
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# tlp manages rfkill — mask the systemd units to avoid conflicts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl mask systemd-rfkill.service systemd-rfkill.socket
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pipewire runs as a user session service, not a system service. On first login, enable it as your user:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl --user &lt;span class="nb"&gt;enable&lt;/span&gt; --now pipewire pipewire-pulse wireplumber
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl --user &lt;span class="nb"&gt;enable&lt;/span&gt; --now xdg-desktop-portal-hyprland
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="71-hyprland-configuration"&gt;7.1 Hyprland Configuration&lt;/h3&gt;
&lt;p&gt;Add these to &lt;code&gt;~/.config/hypr/hyprland.conf&lt;/code&gt; to start the essential session components:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec-once &lt;span class="o"&gt;=&lt;/span&gt; /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec-once &lt;span class="o"&gt;=&lt;/span&gt; mako
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec-once &lt;span class="o"&gt;=&lt;/span&gt; waybar
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exec-once &lt;span class="o"&gt;=&lt;/span&gt; hypridle
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The UHD 620 needs a few environment variables set for correct VA-API, cursor rendering, and Qt/Firefox Wayland compatibility:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; LIBVA_DRIVER_NAME,iHD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; WLR_NO_HARDWARE_CURSORS,1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; XDG_SESSION_TYPE,wayland
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; XDG_SESSION_DESKTOP,Hyprland
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; QT_QPA_PLATFORM,wayland
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; MOZ_ENABLE_WAYLAND,1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="8-finalisation"&gt;8. Finalisation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;swapoff -a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount -R /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vgchange -an vg0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cryptsetup close cryptroot
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On reboot: GRUB hands off to the kernel, the initramfs prompts for the LUKS passphrase, LVM activates, root mounts, &lt;code&gt;ly&lt;/code&gt; presents the login, and Hyprland takes over.&lt;/p&gt;</description></item><item><title>Cats &amp; Dogs</title><link>https://osaigbovo.xyz/archive/cats-dogs/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/cats-dogs/</guid><description>&lt;p&gt;Society aggressively markets a cartoonish narrative of the independent man, portraying him as a stoic actor moving freely through the world. History and reality tell an entirely different tale. Patriarchal systems, military hierarchies, and industrial capitalism require rigid, disposable utility. They require absolute obedience. To extract this efficiently, the governing architecture attached the entirety of the male ego to the concept of usefulness. A man is conditioned from birth to measure his exact worth by his capacity to serve the machine&amp;ndash;to produce capital, to wage war, to maintain infrastructure. When he ceases to provide measurable utility, society revokes his value. He is shamed by his peers and discarded as purposeless. Terrified of the social void awaiting those who refuse to be used, men eagerly submit to the hierarchy and furiously police their own cages.&lt;/p&gt;
&lt;p&gt;We can observe this conditioning through a brutal heuristic: men have been systematically bred for the behavioural traits of dogs, while women have been forced to adopt the survival strategies of cats.&lt;/p&gt;
&lt;p&gt;The state demands that a man obey commands, protect the property of his betters, and remain fiercely loyal to a hierarchy that routinely treats him as expendable. He marches in a straight line because his reality punishes deviation with immediate obsolescence. He equates his compliance with honour. Women, historically excluded from formal institutional power, developed a profoundly different relationship with reality. Lacking direct authority over the levers of the machine, their survival mandated intense, calculating adaptability. They had to read the room, map the shifting emotional and political dynamics of the men hoarding the resources, and manipulate their circumstances accordingly. They navigate. Men simply obey.&lt;/p&gt;</description></item><item><title>Parasites</title><link>https://osaigbovo.xyz/archive/parasites/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/parasites/</guid><description>&lt;p&gt;Kings and states have always understood that a workforce cannot be motivated by happiness. Sitting in a trench or breaking rocks in a mine is fundamentally miserable, forcing the governing architecture to invent a highly abstracted metric to keep the machine running. They called it purpose. Purpose serves as perverted happiness, an ideological software installed primarily into men to convince them to willingly defer their own release for the benefit of the state. That traditional social contract has now collapsed. The post-industrial economy no longer requires a mass of rigid, physical male utility, leaving millions of men adrift and deprived of the hierarchy that historically dictated their exact value. Panicking in the absence of orders, they desperately seek a new structure to submit to.&lt;/p&gt;
&lt;p&gt;A highly lucrative parasite class stepped effortlessly into this vacuum. The internet is currently infested with algorithmic alpha males, scammy, big-bearded, roided-up talking heads, and podcast hosts who have privatised the state&amp;rsquo;s old extraction engine. They look at a generation of men terrified of their own autonomy and sell them a manufactured purpose. These grifters deploy the rhetoric of liberation, casting themselves as rebels fighting a metaphorical Matrix while actually franchising the exact architecture of extraction they claim to oppose. They feed directly on male dread, converting the deep, historical desire for obedience and structure into course fees, engagement metrics, and premium subscriptions. They offer a cartoonish script of masculinity to men begging for someone to finally tell them what to do.&lt;/p&gt;</description></item><item><title>Linux is a Religion</title><link>https://osaigbovo.xyz/archive/linux-is-a-religion/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/linux-is-a-religion/</guid><description>&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&amp;ndash;a statement that effectively marks me as a fundamentalist. Seven people starred it. The dopamine hit was immediate, and deeply shameful.&lt;/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;/code&gt; instead of &lt;code&gt;pacman&lt;/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.&lt;/p&gt;
&lt;p&gt;Calling a subculture a &amp;ldquo;religion&amp;rdquo; 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&amp;ndash;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 &amp;ldquo;seeing the light.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The Linux community executes every single one of these functions with terrifying, structural precision.&lt;/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;/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 &amp;ldquo;years of building walls to divide people.&amp;rdquo; 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. &amp;ldquo;Free as in speech, not as in beer.&amp;rdquo; That distinction is the rock upon which the church is built.&lt;/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, &amp;ldquo;Talk is cheap. Show me the code.&amp;rdquo; Torvalds is interested in what actually works, what compiles, and what scales, rather than maintaining absolute doctrinal purity.&lt;/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;/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;/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&amp;ndash;a move the orthodox view as an unforgivable temptation.&lt;/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;/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;/code&gt; instead of &lt;code&gt;glibc&lt;/code&gt; and &lt;code&gt;BusyBox&lt;/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;/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;/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;/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;/code&gt;, &lt;code&gt;awk&lt;/code&gt;, and &lt;code&gt;sed&lt;/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;/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;/code&gt; emulator, and discovered it could be modified. That tiny distinction&amp;ndash;realising the interface was just a mask over the machine&amp;ndash;cracked my entire reality open.&lt;/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;/p&gt;
&lt;p&gt;I started on that MacBook Air, copying someone&amp;rsquo;s &lt;code&gt;zshrc&lt;/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;/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;/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;/p&gt;
&lt;p&gt;Then, a friend intervened. He told me to use Arch.&lt;/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&amp;ndash;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;/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 &amp;ldquo;Next&amp;rdquo; 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;/em&gt;.&lt;/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&amp;ndash;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;/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;/p&gt;
&lt;p&gt;Manjaro occupies a highly contested category. It is an Arch-derivative&amp;ndash;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;/p&gt;
&lt;p&gt;I offered absolutely no charity. I mocked him with the zeal of a medieval inquisitor.&lt;/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&amp;ndash;heavy on rambling philosophical tangents&amp;ndash;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;/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;/p&gt;
&lt;p&gt;Which brings me back to Lemmy. A few weeks after saving my friend&amp;rsquo;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;/em&gt;&lt;/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;/p&gt;
&lt;p&gt;I hit reply anyway. &lt;code&gt;pacman&lt;/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;/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&amp;ndash;that understanding the tools mediating your reality is a moral imperative&amp;ndash;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;/p&gt;
&lt;p&gt;And like all faiths, we have an eschatology. We call it the &amp;ldquo;Year of the Linux Desktop.&amp;rdquo; 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;/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;/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;/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;/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;/p&gt;
&lt;p&gt;Use whatever distribution actually serves your needs. But read the wiki. Always read the wiki.&lt;/p&gt;</description></item><item><title>Package Categories and References</title><link>https://osaigbovo.xyz/runbooks/package-categories-and-references/</link><pubDate>Sun, 29 Mar 2026 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/runbooks/package-categories-and-references/</guid><description>&lt;hr&gt;
&lt;h2 id="1-core-system"&gt;1. Core System&lt;/h2&gt;
&lt;p&gt;These are not optional. Without them, nothing else works correctly.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="base-system"&gt;Base System&lt;/h3&gt;
&lt;p&gt;The absolute minimum for a bootable Arch installation. Includes&lt;br&gt;
the core utilities, the C library, and the package manager itself.&lt;br&gt;
Without this layer, the system does not exist.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;base&lt;/code&gt;, &lt;code&gt;base-devel&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="linux-kernel"&gt;Linux Kernel&lt;/h3&gt;
&lt;p&gt;The kernel is the bridge between your hardware and your software.&lt;br&gt;
It manages memory, processes, devices, and system calls. Arch&lt;br&gt;
ships the vanilla upstream kernel, but alternatives exist with&lt;br&gt;
different scheduling and performance characteristics.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;linux&lt;/code&gt;, &lt;code&gt;linux-lts&lt;/code&gt;, &lt;code&gt;linux-zen&lt;/code&gt;, &lt;code&gt;linux-hardened&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;linux-headers&lt;/code&gt; is also needed if you build kernel modules&lt;br&gt;
(e.g. for certain GPU drivers or VPN tools).&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="firmware"&gt;Firmware&lt;/h3&gt;
&lt;p&gt;Blobs of binary code that the kernel loads onto hardware devices&lt;br&gt;
at boot &amp;ndash; GPU microcode, Wi-Fi card firmware, NVMe controller&lt;br&gt;
firmware. Without this, hardware either does not work at all or&lt;br&gt;
works badly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;linux-firmware&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="cpu-microcode"&gt;CPU Microcode&lt;/h3&gt;
&lt;p&gt;Processor-specific patches applied by the bootloader at boot&lt;br&gt;
time. They fix hardware bugs and security vulnerabilities at the&lt;br&gt;
CPU level. You pick one depending on your CPU manufacturer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;intel-ucode&lt;/code&gt;, &lt;code&gt;amd-ucode&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="bootloader"&gt;Bootloader&lt;/h3&gt;
&lt;p&gt;The first piece of software that runs after your firmware (UEFI&lt;br&gt;
or BIOS). It finds the kernel image and hands control over to it.&lt;br&gt;
Without a bootloader, the system does not start.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;grub&lt;/code&gt;, &lt;code&gt;systemd-boot&lt;/code&gt; (part of systemd), &lt;code&gt;rEFInd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="init-system"&gt;Init System&lt;/h3&gt;
&lt;p&gt;The first process the kernel starts (PID 1). It brings up&lt;br&gt;
everything else &amp;ndash; mounts filesystems, starts daemons, manages&lt;br&gt;
services. Arch uses systemd by default. You are not replacing it&lt;br&gt;
unless you know exactly why.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;systemd&lt;/code&gt; (default on Arch, already present)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="filesystem-utilities"&gt;Filesystem Utilities&lt;/h3&gt;
&lt;p&gt;Tools for creating, checking, and repairing filesystems. Also&lt;br&gt;
needed for mounting drives formatted with filesystems other than&lt;br&gt;
the one your root partition uses &amp;ndash; external drives, USB sticks,&lt;br&gt;
Windows partitions.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;e2fsprogs&lt;/code&gt; (ext4), &lt;code&gt;dosfstools&lt;/code&gt; (FAT32),&lt;br&gt;
&lt;code&gt;ntfs-3g&lt;/code&gt; (NTFS), &lt;code&gt;exfatprogs&lt;/code&gt; (exFAT), &lt;code&gt;btrfs-progs&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="man-pages"&gt;Man Pages&lt;/h3&gt;
&lt;p&gt;The built-in documentation system. &lt;code&gt;man ls&lt;/code&gt;, &lt;code&gt;man systemctl&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;man pacman&lt;/code&gt;. Without &lt;code&gt;man-db&lt;/code&gt;, you have no offline reference.&lt;br&gt;
You will need the internet for everything.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;man-db&lt;/code&gt;, &lt;code&gt;man-pages&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="time-synchronisation"&gt;Time Synchronisation&lt;/h3&gt;
&lt;p&gt;Keeps the system clock accurate by syncing with network time&lt;br&gt;
servers. An inaccurate clock breaks HTTPS certificate validation,&lt;br&gt;
authentication tokens, and log timestamps. &lt;code&gt;systemd-timesyncd&lt;/code&gt;&lt;br&gt;
is already present on most Arch installs and handles basic NTP.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;systemd-timesyncd&lt;/code&gt; (lightweight, already in&lt;br&gt;
systemd), &lt;code&gt;chrony&lt;/code&gt; (more accurate, better for laptops&lt;br&gt;
that sleep frequently)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="disk-encryption"&gt;Disk Encryption&lt;/h3&gt;
&lt;p&gt;Encrypts partitions or volumes so their contents are unreadable&lt;br&gt;
without the correct passphrase or key. If you set up LUKS during&lt;br&gt;
install, &lt;code&gt;cryptsetup&lt;/code&gt; is already on your system. If not, this is&lt;br&gt;
the tool you use to add encryption later.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;cryptsetup&lt;/code&gt; (LUKS), &lt;code&gt;veracrypt&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="2-display--compositor"&gt;2. Display &amp;amp; Compositor&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="wayland-compositor"&gt;Wayland Compositor&lt;/h3&gt;
&lt;p&gt;On a standard desktop environment like GNOME or KDE, the&lt;br&gt;
compositor is bundled in. On a standalone window manager setup&lt;br&gt;
like this, it is its own package. The compositor is responsible&lt;br&gt;
for drawing windows, handling input, managing outputs (monitors),&lt;br&gt;
and compositing everything into what you see on screen. On&lt;br&gt;
Wayland, the compositor also &lt;em&gt;is&lt;/em&gt; the display server.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;hyprland&lt;/code&gt;, &lt;code&gt;sway&lt;/code&gt;, &lt;code&gt;river&lt;/code&gt;, &lt;code&gt;niri&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="display-manager--login-manager"&gt;Display Manager / Login Manager&lt;/h3&gt;
&lt;p&gt;The graphical (or TUI) interface that greets you before you log&lt;br&gt;
in. It authenticates your session and launches your compositor.&lt;br&gt;
You can also skip it entirely and launch Hyprland from a TTY with&lt;br&gt;
&lt;code&gt;uwsm&lt;/code&gt; or a shell script &amp;ndash; but a display manager gives you a&lt;br&gt;
cleaner boot experience.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;ly&lt;/code&gt;, &lt;code&gt;greetd&lt;/code&gt;, &lt;code&gt;sddm&lt;/code&gt;, &lt;code&gt;gdm&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="wayland-session-manager"&gt;Wayland Session Manager&lt;/h3&gt;
&lt;p&gt;A wrapper that correctly launches a Wayland compositor as a&lt;br&gt;
proper systemd user session, ensuring environment variables are&lt;br&gt;
set, D-Bus is activated, and XDG portals start correctly. Without&lt;br&gt;
something like this, some applications or portals may not&lt;br&gt;
function properly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;uwsm&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="xdg-desktop-portal"&gt;XDG Desktop Portal&lt;/h3&gt;
&lt;p&gt;A standardised interface that allows sandboxed applications&lt;br&gt;
(Flatpak, but also native apps) to request desktop services &amp;ndash;&lt;br&gt;
screen sharing, file picker, opening URIs, camera access &amp;ndash; in a&lt;br&gt;
controlled way. Without the correct portal for your compositor,&lt;br&gt;
screen sharing in browsers, file pickers in some apps, and&lt;br&gt;
screenshots via portals will not work.&lt;/p&gt;
&lt;p&gt;You typically need two: one compositor-specific, one GTK fallback.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;xdg-desktop-portal-hyprland&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;xdg-desktop-portal-gtk&lt;/code&gt;, &lt;code&gt;xdg-desktop-portal-kde&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="xwayland"&gt;XWayland&lt;/h3&gt;
&lt;p&gt;A compatibility layer that allows X11 applications to run inside&lt;br&gt;
a Wayland session. Some software has not been ported to Wayland&lt;br&gt;
yet. Without XWayland, those applications will not launch at all.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;xwayland&lt;/code&gt; (often pulled as a dependency of the&lt;br&gt;
compositor)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="gpu-driver"&gt;GPU Driver&lt;/h3&gt;
&lt;p&gt;Software that lets the kernel communicate with your graphics&lt;br&gt;
card. Without the correct driver, you get software rendering,&lt;br&gt;
which is slow, consumes a lot of CPU, and will make Hyprland&lt;br&gt;
painful to use.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;mesa&lt;/code&gt; (AMD / Intel open source), &lt;code&gt;nvidia&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;nvidia-open&lt;/code&gt;, &lt;code&gt;vulkan-intel&lt;/code&gt;, &lt;code&gt;vulkan-radeon&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="video-acceleration"&gt;Video Acceleration&lt;/h3&gt;
&lt;p&gt;Libraries that offload video decoding and encoding to the GPU&lt;br&gt;
rather than the CPU. Without this, playing video is noticeably&lt;br&gt;
more expensive on your system resources.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;intel-media-driver&lt;/code&gt;, &lt;code&gt;libva-mesa-driver&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;nvidia-utils&lt;/code&gt;, &lt;code&gt;libva-utils&lt;/code&gt; (for testing)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="display-configuration-tool"&gt;Display Configuration Tool&lt;/h3&gt;
&lt;p&gt;A tool for arranging monitors, setting resolutions, refresh&lt;br&gt;
rates, and scaling. Hyprland handles this in its config file, but&lt;br&gt;
a GUI tool makes multi-monitor setups significantly less painful&lt;br&gt;
to configure initially.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;nwg-displays&lt;/code&gt;, &lt;code&gt;wdisplays&lt;/code&gt;, &lt;code&gt;kanshi&lt;/code&gt;&lt;br&gt;
(kanshi is for automatic profiles, not interactive config)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="3-desktop-environment-components"&gt;3. Desktop Environment Components&lt;/h2&gt;
&lt;p&gt;These are the building blocks of the desktop. A traditional DE&lt;br&gt;
like GNOME bundles all of these together. On a standalone&lt;br&gt;
compositor, you assemble them yourself.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="status-bar--panel"&gt;Status Bar / Panel&lt;/h3&gt;
&lt;p&gt;A persistent bar that displays information &amp;ndash; time, date,&lt;br&gt;
workspace indicators, system stats, network status, battery,&lt;br&gt;
volume, active window title. On Wayland this communicates with&lt;br&gt;
the compositor via its own protocol or via standard Wayland&lt;br&gt;
protocols.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;waybar&lt;/code&gt;, &lt;code&gt;eww&lt;/code&gt;, &lt;code&gt;yambar&lt;/code&gt;, &lt;code&gt;ags&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="application-launcher"&gt;Application Launcher&lt;/h3&gt;
&lt;p&gt;A fuzzy-search interface for launching applications by name,&lt;br&gt;
running shell commands, or switching between open windows.&lt;br&gt;
Without one, you either open a terminal every time or bind every&lt;br&gt;
application to a keyboard shortcut.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;rofi&lt;/code&gt; (with Wayland fork), &lt;code&gt;wofi&lt;/code&gt;, &lt;code&gt;tofi&lt;/code&gt;, &lt;code&gt;fuzzel&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;anyrun&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="notification-daemon"&gt;Notification Daemon&lt;/h3&gt;
&lt;p&gt;Receives and displays desktop notifications sent by applications&lt;br&gt;
via the D-Bus notification spec. Manages the queue, allows&lt;br&gt;
dismissal, can support actions (buttons inside notifications).&lt;br&gt;
Without one, notifications are silently dropped.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;mako&lt;/code&gt;, &lt;code&gt;swaync&lt;/code&gt;, &lt;code&gt;dunst&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="screen-lock"&gt;Screen Lock&lt;/h3&gt;
&lt;p&gt;Blanks the screen and requires authentication to resume the&lt;br&gt;
session. The lock screen sits between your unattended machine and&lt;br&gt;
anyone who walks up to it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;hyprlock&lt;/code&gt;, &lt;code&gt;swaylock&lt;/code&gt;, &lt;code&gt;waylock&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="idle-daemon"&gt;Idle Daemon&lt;/h3&gt;
&lt;p&gt;Monitors input inactivity and triggers actions after a set time&lt;br&gt;
&amp;ndash; dim the screen, lock the session, suspend the system. Works&lt;br&gt;
in tandem with the screen lock.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;hypridle&lt;/code&gt;, &lt;code&gt;swayidle&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="wallpaper-setter"&gt;Wallpaper Setter&lt;/h3&gt;
&lt;p&gt;Sets and manages the desktop background. On Wayland this must be&lt;br&gt;
a Wayland-native tool; X11 wallpaper setters will not work.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;hyprpaper&lt;/code&gt;, &lt;code&gt;swww&lt;/code&gt;, &lt;code&gt;swaybg&lt;/code&gt;, &lt;code&gt;mpvpaper&lt;/code&gt; (animated&lt;br&gt;
wallpapers via mpv)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="polkit-authentication-agent"&gt;Polkit Authentication Agent&lt;/h3&gt;
&lt;p&gt;Polkit is a framework for controlling privilege escalation for&lt;br&gt;
unprivileged processes. When an application needs elevated&lt;br&gt;
permissions (mounting a drive, installing a package via a GUI),&lt;br&gt;
Polkit intercepts the request and the authentication agent&lt;br&gt;
presents a password prompt. Without one, those GUI operations&lt;br&gt;
silently fail.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;polkit-kde-agent&lt;/code&gt;, &lt;code&gt;polkit-gnome&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;lxqt-policykit&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="keyring--secret-storage"&gt;Keyring / Secret Storage&lt;/h3&gt;
&lt;p&gt;A secure, encrypted store for secrets &amp;ndash; passwords, API tokens,&lt;br&gt;
SSH keys, application credentials. Applications that handle&lt;br&gt;
authentication (browsers, email clients, cloud sync tools) expect&lt;br&gt;
a secret service to be present and will either fail to save&lt;br&gt;
credentials or store them in plaintext without one.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;gnome-keyring&lt;/code&gt;, &lt;code&gt;keepassxc&lt;/code&gt; (with secret service&lt;br&gt;
integration)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="clipboard-manager"&gt;Clipboard Manager&lt;/h3&gt;
&lt;p&gt;Wayland does not have a persistent clipboard by default. When a&lt;br&gt;
window closes, its clipboard content disappears. A clipboard&lt;br&gt;
manager keeps a history of copied items and makes them accessible&lt;br&gt;
after the source application is gone. Also enables fuzzy-search&lt;br&gt;
through clipboard history.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;cliphist&lt;/code&gt;, &lt;code&gt;clipman&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;wl-clipboard&lt;/code&gt; (&lt;code&gt;wl-copy&lt;/code&gt; / &lt;code&gt;wl-paste&lt;/code&gt;) is also needed as the&lt;br&gt;
underlying Wayland clipboard utility. It is not a manager itself,&lt;br&gt;
but most managers depend on it.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="screenshot-tool"&gt;Screenshot Tool&lt;/h3&gt;
&lt;p&gt;Captures the screen, a region, or a specific window. On Wayland&lt;br&gt;
this works through the compositor&amp;rsquo;s screencopy protocol or via&lt;br&gt;
XDG portals. X11 screenshot tools do not function on Wayland.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;grim&lt;/code&gt;, &lt;code&gt;hyprshot&lt;/code&gt;, &lt;code&gt;grimblast&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A region selection tool is almost always used alongside the&lt;br&gt;
screenshot tool.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="screen-region-selector"&gt;Screen Region Selector&lt;/h3&gt;
&lt;p&gt;An interactive overlay that lets you draw a rectangle over the&lt;br&gt;
screen to define a capture area. Used with screenshot tools and&lt;br&gt;
sometimes screen recorders.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;slurp&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="screen-recorder"&gt;Screen Recorder&lt;/h3&gt;
&lt;p&gt;Captures video of the screen or a region of it. Useful for&lt;br&gt;
documentation, bug reports, or content creation. Wayland screen&lt;br&gt;
recording requires compositor support for the screencopy protocol.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;wf-recorder&lt;/code&gt;, &lt;code&gt;obs-studio&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="color-picker"&gt;Color Picker&lt;/h3&gt;
&lt;p&gt;Samples the color of any pixel on screen and returns the hex or&lt;br&gt;
RGB value. Small tool, but immediately useful when theming.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;hyprpicker&lt;/code&gt;, &lt;code&gt;gpick&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="on-screen-display-osd"&gt;On-Screen Display (OSD)&lt;/h3&gt;
&lt;p&gt;A temporary overlay that appears when you change volume or&lt;br&gt;
brightness, showing the current level visually. Not strictly&lt;br&gt;
necessary, but without it you adjust volume blind.&lt;/p&gt;
&lt;p&gt;Some notification daemons (like &lt;code&gt;swaync&lt;/code&gt;) can be configured to&lt;br&gt;
do this. There are also dedicated tools.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;swayosd&lt;/code&gt;, custom scripts using &lt;code&gt;notify-send&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="screen-annotation--screenshot-editor"&gt;Screen Annotation / Screenshot Editor&lt;/h3&gt;
&lt;p&gt;Edits screenshots immediately after capture &amp;ndash; adds arrows,&lt;br&gt;
text, highlights, and crops. Useful for documentation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;swappy&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="4-audio"&gt;4. Audio&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="audio-server"&gt;Audio Server&lt;/h3&gt;
&lt;p&gt;The layer between the kernel&amp;rsquo;s audio subsystem (ALSA) and your&lt;br&gt;
applications. It handles routing, mixing, Bluetooth audio,&lt;br&gt;
virtual devices, and gives applications a consistent interface&lt;br&gt;
regardless of hardware. PipeWire is the current standard on&lt;br&gt;
modern Linux &amp;ndash; it also handles PulseAudio and JACK compatibility.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;pipewire&lt;/code&gt;, &lt;code&gt;pipewire-pulse&lt;/code&gt;, &lt;code&gt;pipewire-alsa&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;pipewire-jack&lt;/code&gt;, &lt;code&gt;wireplumber&lt;/code&gt; (session manager for PipeWire)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="volume-control--audio-mixer"&gt;Volume Control / Audio Mixer&lt;/h3&gt;
&lt;p&gt;A GUI or TUI for controlling per-application volume, input/output&lt;br&gt;
device selection, and audio routing. The audio server itself does&lt;br&gt;
not provide this interface.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;pavucontrol&lt;/code&gt; (GUI), &lt;code&gt;pulsemixer&lt;/code&gt; (TUI), &lt;code&gt;pamixer&lt;/code&gt;&lt;br&gt;
(CLI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="5-networking"&gt;5. Networking&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="network-manager"&gt;Network Manager&lt;/h3&gt;
&lt;p&gt;Manages wired, wireless, and VPN connections. Handles DHCP,&lt;br&gt;
static IP configuration, connection profiles, and automatic&lt;br&gt;
reconnection. Without this (or an equivalent), you configure&lt;br&gt;
networking manually via &lt;code&gt;ip&lt;/code&gt; and &lt;code&gt;wpa_supplicant&lt;/code&gt; every boot,&lt;br&gt;
which is painful.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;networkmanager&lt;/code&gt;, &lt;code&gt;iwd&lt;/code&gt;, &lt;code&gt;connman&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="network-manager-frontend"&gt;Network Manager Frontend&lt;/h3&gt;
&lt;p&gt;A user interface for the network manager. The manager itself runs&lt;br&gt;
as a daemon in the background; the frontend is how you interact&lt;br&gt;
with it &amp;ndash; connecting to Wi-Fi, editing profiles, toggling VPN.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;nm-applet&lt;/code&gt; (system tray), &lt;code&gt;nmtui&lt;/code&gt; (TUI),&lt;br&gt;
&lt;code&gt;networkmanager-dmenu&lt;/code&gt; (rofi/dmenu integration)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="dns-resolver--encrypted-dns"&gt;DNS Resolver / Encrypted DNS&lt;/h3&gt;
&lt;p&gt;Handles domain name resolution. The default system resolver sends&lt;br&gt;
DNS queries in plaintext, which is readable by your ISP and any&lt;br&gt;
network middleman. An encrypted DNS tool routes those queries over&lt;br&gt;
DoH or DNSCrypt.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;dnscrypt-proxy&lt;/code&gt;, &lt;code&gt;systemd-resolved&lt;/code&gt; (with DoH&lt;br&gt;
config), &lt;code&gt;stubby&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="vpn-client"&gt;VPN Client&lt;/h3&gt;
&lt;p&gt;Encrypts your network traffic and routes it through a remote&lt;br&gt;
server. Necessary for privacy on hostile networks or for&lt;br&gt;
accessing private network resources.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;wireguard-tools&lt;/code&gt;, &lt;code&gt;openvpn&lt;/code&gt;, &lt;code&gt;openconnect&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="firewall"&gt;Firewall&lt;/h3&gt;
&lt;p&gt;Controls which network traffic is allowed in and out of the&lt;br&gt;
system. Without one, all ports are open to whatever the kernel&lt;br&gt;
allows by default.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;ufw&lt;/code&gt; (frontend for nftables/iptables),&lt;br&gt;
&lt;code&gt;nftables&lt;/code&gt;, &lt;code&gt;iptables&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="ssh-client--server"&gt;SSH Client / Server&lt;/h3&gt;
&lt;p&gt;The standard tool for remote access and secure file transfer.&lt;br&gt;
The client lets you connect to remote machines. The server lets&lt;br&gt;
remote machines connect to yours.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;openssh&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="tor"&gt;Tor&lt;/h3&gt;
&lt;p&gt;Routes traffic through the Tor anonymity network. &lt;code&gt;torsocks&lt;/code&gt;&lt;br&gt;
wraps arbitrary applications to force their traffic through Tor.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;tor&lt;/code&gt;, &lt;code&gt;torsocks&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="network-diagnostics"&gt;Network Diagnostics&lt;/h3&gt;
&lt;p&gt;Tools for inspecting, testing, and debugging network connections&lt;br&gt;
at a lower level than a browser or ping. Useful for diagnosing&lt;br&gt;
connectivity issues, scanning for open ports, or measuring&lt;br&gt;
throughput.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;nmap&lt;/code&gt; (port scanning), &lt;code&gt;traceroute&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;iperf3&lt;/code&gt; (bandwidth testing), &lt;code&gt;bind&lt;/code&gt; (provides &lt;code&gt;dig&lt;/code&gt; and&lt;br&gt;
&lt;code&gt;nslookup&lt;/code&gt; for DNS queries), &lt;code&gt;openbsd-netcat&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="6-input--hardware"&gt;6. Input &amp;amp; Hardware&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="input-remapper"&gt;Input Remapper&lt;/h3&gt;
&lt;p&gt;Remaps keys, mice, and other input devices at the kernel or&lt;br&gt;
application level. Useful for non-standard keyboards, ergo&lt;br&gt;
layouts, or remapping modifier keys across the entire system.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;keyd&lt;/code&gt;, &lt;code&gt;xremap&lt;/code&gt;, &lt;code&gt;interception-tools&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="brightness-control"&gt;Brightness Control&lt;/h3&gt;
&lt;p&gt;Adjusts screen backlight brightness. On Wayland this usually&lt;br&gt;
works through a tool that writes directly to the kernel&amp;rsquo;s backlight&lt;br&gt;
interface.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;brightnessctl&lt;/code&gt;, &lt;code&gt;light&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="fingerprint-reader"&gt;Fingerprint Reader&lt;/h3&gt;
&lt;p&gt;If your machine has a fingerprint sensor, this daemon enables&lt;br&gt;
it for PAM authentication &amp;ndash; login, sudo, screen unlock.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;fprintd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="power-management"&gt;Power Management&lt;/h3&gt;
&lt;p&gt;Controls CPU frequency scaling, disk spin-down, USB autosuspend,&lt;br&gt;
and other power-saving features. Particularly relevant on laptops.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;tlp&lt;/code&gt;, &lt;code&gt;auto-cpufreq&lt;/code&gt;, &lt;code&gt;power-profiles-daemon&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="bluetooth-manager"&gt;Bluetooth Manager&lt;/h3&gt;
&lt;p&gt;Manages Bluetooth device pairing, connection, and profiles. The&lt;br&gt;
kernel&amp;rsquo;s Bluetooth stack (&lt;code&gt;bluez&lt;/code&gt;) is the backend; a frontend&lt;br&gt;
gives you a usable interface.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;bluez&lt;/code&gt;, &lt;code&gt;bluez-utils&lt;/code&gt; (backend),&lt;br&gt;
&lt;code&gt;blueman&lt;/code&gt; (GUI), &lt;code&gt;bluetui&lt;/code&gt; (TUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="smart-drive-monitor"&gt;Smart Drive Monitor&lt;/h3&gt;
&lt;p&gt;Monitors hard drive and SSD health via the S.M.A.R.T. interface&lt;br&gt;
built into the drive firmware. Useful for catching failing drives&lt;br&gt;
before data loss.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;smartmontools&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="7-theming--appearance"&gt;7. Theming &amp;amp; Appearance&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="font--monospace-with-icons"&gt;Font — Monospace (with Icons)&lt;/h3&gt;
&lt;p&gt;Your terminal, editor, and status bar all render text. A Nerd&lt;br&gt;
Font patches the typeface with icon glyphs used by many TUI tools&lt;br&gt;
and status bars. Without one, you see boxes or question marks&lt;br&gt;
instead of icons.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;ttf-jetbrains-mono-nerd&lt;/code&gt;, &lt;code&gt;ttf-firacode-nerd&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;ttf-hack-nerd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="font--sans-serif-ui--interface"&gt;Font — Sans-Serif (UI / Interface)&lt;/h3&gt;
&lt;p&gt;Used by GTK applications, notification bodies, rofi, and anywhere&lt;br&gt;
a proportional font is expected. Picking one gives the desktop&lt;br&gt;
a consistent look across applications.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;inter-font&lt;/code&gt;, &lt;code&gt;noto-fonts&lt;/code&gt;, &lt;code&gt;ttf-ubuntu-font-family&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="font--emoji"&gt;Font — Emoji&lt;/h3&gt;
&lt;p&gt;Without emoji fonts, emoji render as empty boxes. Browsers,&lt;br&gt;
terminals, and some applications use them even if you do not&lt;br&gt;
intentionally.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;noto-fonts-emoji&lt;/code&gt;, &lt;code&gt;ttf-twemoji&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="font--serif"&gt;Font — Serif&lt;/h3&gt;
&lt;p&gt;Used in documents, PDF viewers, and reading-focused applications.&lt;br&gt;
Less critical than monospace and sans-serif for a terminal-first&lt;br&gt;
setup, but absence is noticeable in document viewers and office&lt;br&gt;
applications.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;adobe-source-serif-fonts&lt;/code&gt;, &lt;code&gt;noto-serif&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="font-management-tool"&gt;Font Management Tool&lt;/h3&gt;
&lt;p&gt;Previews, installs, and organises fonts. Not necessary if you&lt;br&gt;
install fonts via the package manager, but useful if you are&lt;br&gt;
downloading fonts from external sources or managing a large&lt;br&gt;
collection.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;font-manager&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="icon-theme"&gt;Icon Theme&lt;/h3&gt;
&lt;p&gt;The set of icons used by GTK applications for file types,&lt;br&gt;
folders, application launchers, and system actions.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;papirus-icon-theme&lt;/code&gt;, &lt;code&gt;hicolor-icon-theme&lt;/code&gt;&lt;br&gt;
(hicolor is the fallback standard, always install it)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="cursor-theme"&gt;Cursor Theme&lt;/h3&gt;
&lt;p&gt;The mouse cursor shape. The default Wayland cursor is functional&lt;br&gt;
but ugly. A cursor theme makes things look intentional.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;capitaine-cursors&lt;/code&gt;, &lt;code&gt;xcursor-themes&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;bibata-cursor-theme&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="gtk-theme"&gt;GTK Theme&lt;/h3&gt;
&lt;p&gt;Controls the visual appearance of GTK2/GTK3/GTK4 applications &amp;ndash;&lt;br&gt;
buttons, windows, scrollbars, toggles, everything. Without a&lt;br&gt;
theme, GTK apps use the bare Adwaita default which may clash with&lt;br&gt;
your compositor&amp;rsquo;s look.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;adwaita-dark&lt;/code&gt; (built-in GTK), &lt;code&gt;catppuccin-gtk-theme&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="gtk-settings-manager"&gt;GTK Settings Manager&lt;/h3&gt;
&lt;p&gt;A GUI tool for applying GTK themes, icon themes, and cursor&lt;br&gt;
themes without manually editing &lt;code&gt;~/.config/gtk-3.0/settings.ini&lt;/code&gt;.&lt;br&gt;
Also handles font settings for GTK apps.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;nwg-look&lt;/code&gt;, &lt;code&gt;lxappearance&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="qt-theme--qt-theming-layer"&gt;Qt Theme / Qt Theming Layer&lt;/h3&gt;
&lt;p&gt;Qt applications use a separate theming system from GTK. Without&lt;br&gt;
configuring this, Qt apps look completely different from everything&lt;br&gt;
else &amp;ndash; mismatched fonts, colours, and widget styles.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;qt5ct&lt;/code&gt; and &lt;code&gt;qt6ct&lt;/code&gt; are configuration tools. Kvantum is a theme&lt;br&gt;
engine that applies SVG-based themes to Qt.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;qt5ct&lt;/code&gt;, &lt;code&gt;qt6ct&lt;/code&gt;, &lt;code&gt;kvantum&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="8-shell--terminal"&gt;8. Shell &amp;amp; Terminal&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="terminal-emulator"&gt;Terminal Emulator&lt;/h3&gt;
&lt;p&gt;The window that runs your shell. On Wayland this must be a&lt;br&gt;
Wayland-native terminal or one that runs under XWayland. GPU&lt;br&gt;
acceleration makes a meaningful difference in rendering speed,&lt;br&gt;
especially with large outputs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;kitty&lt;/code&gt;, &lt;code&gt;alacritty&lt;/code&gt;, &lt;code&gt;foot&lt;/code&gt;, &lt;code&gt;wezterm&lt;/code&gt;, &lt;code&gt;ghostty&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="shell"&gt;Shell&lt;/h3&gt;
&lt;p&gt;The command interpreter. Bash is the default on Arch. Zsh adds&lt;br&gt;
better completion, history handling, and plugin support. Fish is&lt;br&gt;
friendly but not POSIX-compatible.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;zsh&lt;/code&gt;, &lt;code&gt;bash&lt;/code&gt;, &lt;code&gt;fish&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="shell-prompt"&gt;Shell Prompt&lt;/h3&gt;
&lt;p&gt;The part of your shell that displays information at the start of&lt;br&gt;
each line &amp;ndash; current directory, git branch, last exit code, etc.&lt;br&gt;
A well-configured prompt gives you context at a glance.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;starship&lt;/code&gt;, &lt;code&gt;oh-my-posh&lt;/code&gt;, &lt;code&gt;powerlevel10k&lt;/code&gt; (Zsh only)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="terminal-multiplexer"&gt;Terminal Multiplexer&lt;/h3&gt;
&lt;p&gt;Allows multiple terminal sessions within a single window, with&lt;br&gt;
persistent sessions that survive disconnection. Especially useful&lt;br&gt;
for SSH or long-running processes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;tmux&lt;/code&gt;, &lt;code&gt;zellij&lt;/code&gt;, &lt;code&gt;screen&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="pager"&gt;Pager&lt;/h3&gt;
&lt;p&gt;Displays long text output one screenful at a time.&lt;br&gt;
&lt;code&gt;less&lt;/code&gt; is the standard. &lt;code&gt;bat&lt;/code&gt; is a replacement with syntax&lt;br&gt;
highlighting and line numbers.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;less&lt;/code&gt;, &lt;code&gt;bat&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="aur-helper"&gt;AUR Helper&lt;/h3&gt;
&lt;p&gt;Automates building and installing packages from the Arch User&lt;br&gt;
Repository, which is not covered by &lt;code&gt;pacman&lt;/code&gt; directly. Also&lt;br&gt;
wraps &lt;code&gt;pacman&lt;/code&gt; for full system upgrades.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;paru&lt;/code&gt;, &lt;code&gt;yay&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="9-text-editors"&gt;9. Text Editors&lt;/h2&gt;
&lt;p&gt;There is a meaningful distinction between a quick terminal editor,&lt;br&gt;
a modal editor, and a full IDE. They are not interchangeable and&lt;br&gt;
serve different moments.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="simple-terminal-editor"&gt;Simple Terminal Editor&lt;/h3&gt;
&lt;p&gt;A straightforward, non-modal editor that behaves like most&lt;br&gt;
people expect a text editor to behave &amp;ndash; you open it, you type,&lt;br&gt;
you save, you quit. No modes, no configuration required to use&lt;br&gt;
it. The value is immediate usability, especially on a fresh&lt;br&gt;
system before anything else is configured, or when editing a&lt;br&gt;
single file quickly over SSH.&lt;/p&gt;
&lt;p&gt;The tradeoff is that it is slow for large-scale editing and&lt;br&gt;
offers almost no extensibility.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;nano&lt;/code&gt;, &lt;code&gt;micro&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="modal-terminal-editor"&gt;Modal Terminal Editor&lt;/h3&gt;
&lt;p&gt;A terminal editor built around the concept of distinct modes &amp;ndash;&lt;br&gt;
usually a normal mode for navigation and commands, and an insert&lt;br&gt;
mode for typing. This means the keyboard is not wasted on just&lt;br&gt;
typing characters; every key is a potential command. The learning&lt;br&gt;
curve is steep but the payoff is that editing becomes&lt;br&gt;
significantly faster once the muscle memory is built.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim&lt;/code&gt; is the classic. It is installed almost everywhere, which&lt;br&gt;
makes knowing it valuable beyond your own machine. &lt;code&gt;neovim&lt;/code&gt; is&lt;br&gt;
a modernised fork with a Lua configuration API, better defaults,&lt;br&gt;
and a large plugin ecosystem. The two share the same fundamental&lt;br&gt;
editing model.&lt;/p&gt;
&lt;p&gt;These editors are also the foundation of the terminal-first&lt;br&gt;
development workflow &amp;ndash; with enough configuration they approach&lt;br&gt;
full IDE behaviour.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;vim&lt;/code&gt;, &lt;code&gt;neovim&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="ide-integrated-development-environment"&gt;IDE (Integrated Development Environment)&lt;/h3&gt;
&lt;p&gt;A heavier, more complete development environment than a plain&lt;br&gt;
text editor. An IDE bundles a file tree, integrated terminal,&lt;br&gt;
built-in debugger, version control UI, and deep&lt;br&gt;
language-specific tooling into one application. The distinction&lt;br&gt;
from a text editor is fuzzy &amp;ndash; Neovim with enough plugins&lt;br&gt;
approaches IDE behaviour &amp;ndash; but a dedicated IDE requires less&lt;br&gt;
configuration to get to that point.&lt;/p&gt;
&lt;p&gt;Worth noting: VS Code and its derivatives are technically&lt;br&gt;
Electron applications. They are large, they consume more memory&lt;br&gt;
than a terminal editor, and they are not terminal-native. The&lt;br&gt;
tradeoff is that they work well out of the box for most&lt;br&gt;
languages without extensive configuration.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;code&lt;/code&gt; (VS Code), &lt;code&gt;vscodium&lt;/code&gt; (VS Code without&lt;br&gt;
Microsoft telemetry), &lt;code&gt;intellij-idea-community&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;pycharm-community&lt;/code&gt;, &lt;code&gt;eclipse&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="10-development--version-control"&gt;10. Development &amp;amp; Version Control&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="version-control-system"&gt;Version Control System&lt;/h3&gt;
&lt;p&gt;Tracks changes to files over time. Essential for any code or&lt;br&gt;
configuration work. Also used by AUR helpers to clone and update&lt;br&gt;
packages.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;git&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="git-tui--frontend"&gt;Git TUI / Frontend&lt;/h3&gt;
&lt;p&gt;An interactive terminal interface for git &amp;ndash; viewing diffs,&lt;br&gt;
staging changes, managing branches, and resolving conflicts&lt;br&gt;
without memorising every git subcommand.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;lazygit&lt;/code&gt;, &lt;code&gt;gitui&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="diff--merge-tool"&gt;Diff / Merge Tool&lt;/h3&gt;
&lt;p&gt;Compares two files or directories side by side and highlights&lt;br&gt;
differences. A merge tool extends this to resolve conflicts when&lt;br&gt;
two versions of a file have both been modified. &lt;code&gt;git diff&lt;/code&gt; is&lt;br&gt;
sufficient for simple cases; a dedicated tool helps with complex&lt;br&gt;
conflicts.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;meld&lt;/code&gt; (GUI), &lt;code&gt;vimdiff&lt;/code&gt; (terminal),&lt;br&gt;
&lt;code&gt;delta&lt;/code&gt; (better git diff output in terminal)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="language--runtime-version-manager"&gt;Language / Runtime Version Manager&lt;/h3&gt;
&lt;p&gt;Manages multiple installed versions of a language runtime on the&lt;br&gt;
same machine. Essential when different projects require different&lt;br&gt;
versions &amp;ndash; one project needs Node 18, another needs Node 20, a&lt;br&gt;
third needs Python 3.10 while your system has 3.12. A version&lt;br&gt;
manager lets you switch between them per-project or per-shell&lt;br&gt;
without reinstalling anything.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;nvm&lt;/code&gt; (Node.js), &lt;code&gt;pyenv&lt;/code&gt; (Python),&lt;br&gt;
&lt;code&gt;rustup&lt;/code&gt; (Rust &amp;ndash; also the official Rust installer),&lt;br&gt;
&lt;code&gt;sdkman&lt;/code&gt; (JVM languages), &lt;code&gt;mise&lt;/code&gt; (polyglot, handles many&lt;br&gt;
languages in one tool)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="language-runtimes-and-toolchains"&gt;Language Runtimes and Toolchains&lt;/h3&gt;
&lt;p&gt;The interpreters, compilers, and build tools for whatever&lt;br&gt;
language you are working in. Arch ships most of these in the&lt;br&gt;
official repositories.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;nodejs&lt;/code&gt;, &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;python&lt;/code&gt;, &lt;code&gt;python-pip&lt;/code&gt;, &lt;code&gt;rust&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;go&lt;/code&gt;, &lt;code&gt;deno&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="lsp-servers"&gt;LSP Servers&lt;/h3&gt;
&lt;p&gt;Language Server Protocol implementations that provide&lt;br&gt;
autocompletion, diagnostics, go-to-definition, and other IDE&lt;br&gt;
features in editors that support LSP (like Neovim). Installed&lt;br&gt;
separately per language.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: managed via &lt;code&gt;mason.nvim&lt;/code&gt; inside Neovim, or installed&lt;br&gt;
directly via the package manager&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="build-system--build-tools"&gt;Build System / Build Tools&lt;/h3&gt;
&lt;p&gt;Automates the steps required to turn source code into a runnable&lt;br&gt;
binary or deployable artifact. Handles compilation order,&lt;br&gt;
dependency linking, and running tests. Different languages use&lt;br&gt;
different build tools; &lt;code&gt;base-devel&lt;/code&gt; on Arch covers most of what&lt;br&gt;
you need to compile anything from the AUR or from source.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;make&lt;/code&gt;, &lt;code&gt;cmake&lt;/code&gt;, &lt;code&gt;meson&lt;/code&gt;, &lt;code&gt;ninja&lt;/code&gt;, &lt;code&gt;gradle&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="api-testing-tool"&gt;API Testing Tool&lt;/h3&gt;
&lt;p&gt;Sends HTTP requests to an API endpoint and inspects the response.&lt;br&gt;
Used for testing and debugging REST or GraphQL APIs without&lt;br&gt;
writing code. Some are CLI tools, some are GUI applications.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; covers basic use but is not ergonomic for repeated API&lt;br&gt;
work.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;httpie&lt;/code&gt;, &lt;code&gt;xh&lt;/code&gt;, &lt;code&gt;curlie&lt;/code&gt; (CLI),&lt;br&gt;
&lt;code&gt;bruno&lt;/code&gt;, &lt;code&gt;insomnia&lt;/code&gt; (GUI, open source)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="database-client"&gt;Database Client&lt;/h3&gt;
&lt;p&gt;Connects to a running database and lets you inspect schemas,&lt;br&gt;
run queries, view data, and manage tables. Essential once you&lt;br&gt;
are working with any persistent data store.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;dbeaver&lt;/code&gt; (GUI, multi-database),&lt;br&gt;
&lt;code&gt;beekeeper-studio&lt;/code&gt; (GUI), &lt;code&gt;pgcli&lt;/code&gt; (TUI, Postgres),&lt;br&gt;
&lt;code&gt;mycli&lt;/code&gt; (TUI, MySQL)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="container-runtime"&gt;Container Runtime&lt;/h3&gt;
&lt;p&gt;Runs applications in isolated containers. Docker is the most&lt;br&gt;
common. Podman is a daemonless alternative. Incus/LXD runs full&lt;br&gt;
system containers and virtual machines.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;docker&lt;/code&gt;, &lt;code&gt;podman&lt;/code&gt;, &lt;code&gt;incus&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="virtualisation"&gt;Virtualisation&lt;/h3&gt;
&lt;p&gt;Runs full virtual machines with their own kernel. QEMU is the&lt;br&gt;
backend; virt-manager and virt-viewer are frontends.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;qemu-full&lt;/code&gt;, &lt;code&gt;virt-manager&lt;/code&gt;, &lt;code&gt;virt-viewer&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;libvirt&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="system-call-tracer--debugger"&gt;System Call Tracer / Debugger&lt;/h3&gt;
&lt;p&gt;Traces the system calls a process makes, which is how you find&lt;br&gt;
out why a program is failing when it gives you no useful error&lt;br&gt;
message. A low-level debugging tool you reach for when everything&lt;br&gt;
else fails.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;strace&lt;/code&gt;, &lt;code&gt;ltrace&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="hex-editor"&gt;Hex Editor&lt;/h3&gt;
&lt;p&gt;Opens binary files and shows their raw byte values in&lt;br&gt;
hexadecimal. Used when inspecting files that are not plain text&lt;br&gt;
&amp;ndash; compiled binaries, firmware images, corrupted files.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;hexyl&lt;/code&gt; (terminal, read-only with colour),&lt;br&gt;
&lt;code&gt;bless&lt;/code&gt; (GUI, editable), &lt;code&gt;xxd&lt;/code&gt; (CLI, ships with vim)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="11-file-management"&gt;11. File Management&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="file-manager"&gt;File Manager&lt;/h3&gt;
&lt;p&gt;Browse, move, copy, rename, and delete files. TUI file managers&lt;br&gt;
are fast and integrate well with terminal workflows. GUI file&lt;br&gt;
managers provide drag-and-drop and thumbnail support.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;yazi&lt;/code&gt;, &lt;code&gt;lf&lt;/code&gt;, &lt;code&gt;nnn&lt;/code&gt; (TUI),&lt;br&gt;
&lt;code&gt;thunar&lt;/code&gt;, &lt;code&gt;dolphin&lt;/code&gt; (GUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="archive-manager"&gt;Archive Manager&lt;/h3&gt;
&lt;p&gt;Creates and extracts compressed archives &amp;ndash; zip, tar, 7z, rar,&lt;br&gt;
gz, zst. Without the right tool for a format, you cannot open it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;7zip&lt;/code&gt;, &lt;code&gt;unzip&lt;/code&gt;, &lt;code&gt;unrar&lt;/code&gt;, &lt;code&gt;tar&lt;/code&gt; (usually already&lt;br&gt;
present), &lt;code&gt;file-roller&lt;/code&gt; (GUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="thumbnail-generator"&gt;Thumbnail Generator&lt;/h3&gt;
&lt;p&gt;Generates preview thumbnails for images, videos, and documents&lt;br&gt;
in GUI file managers. Without this, file managers show blank&lt;br&gt;
icons instead of previews.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;ffmpegthumbnailer&lt;/code&gt;, &lt;code&gt;tumbler&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="disk-usage-analyser"&gt;Disk Usage Analyser&lt;/h3&gt;
&lt;p&gt;Shows what is consuming disk space, either visually or as a&lt;br&gt;
sorted list. Useful when a drive fills up and you need to find&lt;br&gt;
the cause.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;dust&lt;/code&gt;, &lt;code&gt;ncdu&lt;/code&gt;, &lt;code&gt;duf&lt;/code&gt; (disk usage summary)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="disk--partition-management"&gt;Disk / Partition Management&lt;/h3&gt;
&lt;p&gt;Tools for creating, resizing, and managing partitions and&lt;br&gt;
partition tables. Used for setting up drives or external storage.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;gptfdisk&lt;/code&gt;, &lt;code&gt;parted&lt;/code&gt;, &lt;code&gt;gparted&lt;/code&gt; (GUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="lvm-tools"&gt;LVM Tools&lt;/h3&gt;
&lt;p&gt;If your system uses Logical Volume Management for flexible disk&lt;br&gt;
partitioning, these are required.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;lvm2&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="backup-tool"&gt;Backup Tool&lt;/h3&gt;
&lt;p&gt;Copies data to a secondary location in a way that supports&lt;br&gt;
incremental backups, deduplication, and restoration. &lt;code&gt;rsync&lt;/code&gt; is&lt;br&gt;
simple file mirroring. &lt;code&gt;restic&lt;/code&gt; and &lt;code&gt;borg&lt;/code&gt; add encryption,&lt;br&gt;
deduplication, and snapshot management.&lt;/p&gt;
&lt;p&gt;This is not optional if the data matters. A broken package&lt;br&gt;
upgrade, a full disk, or a hardware failure will eventually&lt;br&gt;
happen.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;rsync&lt;/code&gt;, &lt;code&gt;restic&lt;/code&gt;, &lt;code&gt;borgbackup&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="cloud-storage-client"&gt;Cloud Storage Client&lt;/h3&gt;
&lt;p&gt;Syncs files with a remote cloud storage service.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;filen-cli&lt;/code&gt;, &lt;code&gt;rclone&lt;/code&gt;, &lt;code&gt;syncthing&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="remote-desktop-client"&gt;Remote Desktop Client&lt;/h3&gt;
&lt;p&gt;Connects to remote machines running a graphical desktop via VNC,&lt;br&gt;
RDP, or other protocols. Useful for managing Windows machines or&lt;br&gt;
headless Linux servers that have a GUI.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;remmina&lt;/code&gt;, &lt;code&gt;tigervnc&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="12-system-utilities"&gt;12. System Utilities&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="system-monitor--resource-monitor"&gt;System Monitor / Resource Monitor&lt;/h3&gt;
&lt;p&gt;Displays live information about CPU, memory, disk I/O, network,&lt;br&gt;
and running processes. A better-looking, more informative&lt;br&gt;
replacement for &lt;code&gt;top&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;btop&lt;/code&gt;, &lt;code&gt;htop&lt;/code&gt;, &lt;code&gt;bottom&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="process-viewer"&gt;Process Viewer&lt;/h3&gt;
&lt;p&gt;A better &lt;code&gt;ps&lt;/code&gt;. Lists running processes with readable output,&lt;br&gt;
filtering, and sorting.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;procs&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="fuzzy-finder-cli"&gt;Fuzzy Finder (CLI)&lt;/h3&gt;
&lt;p&gt;An interactive filter for lists of text in the terminal.&lt;br&gt;
Integrates with the shell to search command history, files,&lt;br&gt;
processes, and anything else that outputs text.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;fzf&lt;/code&gt;, &lt;code&gt;sk&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="smart-search-file-content"&gt;Smart Search (File Content)&lt;/h3&gt;
&lt;p&gt;Searches file contents recursively. Much faster than &lt;code&gt;grep -r&lt;/code&gt;&lt;br&gt;
on large codebases.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;ripgrep&lt;/code&gt;, &lt;code&gt;silversearcher-ag&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="smart-search-file-name"&gt;Smart Search (File Name)&lt;/h3&gt;
&lt;p&gt;Finds files by name. Faster and more user-friendly than &lt;code&gt;find&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;fd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="modern-ls-replacement"&gt;Modern &lt;code&gt;ls&lt;/code&gt; Replacement&lt;/h3&gt;
&lt;p&gt;A replacement for &lt;code&gt;ls&lt;/code&gt; with colour, icons (with Nerd Fonts),&lt;br&gt;
git status integration, and human-readable sizes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;eza&lt;/code&gt;, &lt;code&gt;lsd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="download-manager"&gt;Download Manager&lt;/h3&gt;
&lt;p&gt;Downloads files from the internet, with support for resuming&lt;br&gt;
interrupted downloads, parallel connections, and multiple&lt;br&gt;
protocols.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;aria2&lt;/code&gt;, &lt;code&gt;wget&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="calculator-cli"&gt;Calculator (CLI)&lt;/h3&gt;
&lt;p&gt;A command-line calculator for quick arithmetic or more complex&lt;br&gt;
expressions without opening a GUI application.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;bc&lt;/code&gt;, &lt;code&gt;qalculate&lt;/code&gt; (has a CLI mode)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="security-auditing"&gt;Security Auditing&lt;/h3&gt;
&lt;p&gt;Checks the system for known vulnerabilities in installed packages&lt;br&gt;
and configuration issues.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;arch-audit&lt;/code&gt;, &lt;code&gt;rkhunter&lt;/code&gt;, &lt;code&gt;lynis&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="duplicate-file-finder"&gt;Duplicate File Finder&lt;/h3&gt;
&lt;p&gt;Scans directories for files with identical content and lists or&lt;br&gt;
removes them. Useful for cleaning up storage.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;fdupes&lt;/code&gt;, &lt;code&gt;rmlint&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="13-applications"&gt;13. Applications&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="web-browser"&gt;Web Browser&lt;/h3&gt;
&lt;p&gt;Fetches, renders, and runs web content. Wayland-native browsers&lt;br&gt;
render noticeably smoother than those running via XWayland.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;firefox&lt;/code&gt;, &lt;code&gt;librewolf&lt;/code&gt;, &lt;code&gt;floorp&lt;/code&gt;, &lt;code&gt;brave&lt;/code&gt;, &lt;code&gt;chromium&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="email-client"&gt;Email Client&lt;/h3&gt;
&lt;p&gt;Sends and receives email. Can be a full GUI application or a&lt;br&gt;
terminal-based client.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;thunderbird&lt;/code&gt;, &lt;code&gt;tutanota-desktop&lt;/code&gt; (GUI),&lt;br&gt;
&lt;code&gt;neomutt&lt;/code&gt;, &lt;code&gt;aerc&lt;/code&gt; (TUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="document-viewer--pdf-reader"&gt;Document Viewer / PDF Reader&lt;/h3&gt;
&lt;p&gt;Opens and reads PDF, ePub, DjVu, and similar formats. A minimal&lt;br&gt;
document viewer is faster than a full office suite for just&lt;br&gt;
reading.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;zathura&lt;/code&gt; (with &lt;code&gt;zathura-pdf-mupdf&lt;/code&gt;), &lt;code&gt;evince&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;okular&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="epub--ebook-reader"&gt;ePub / eBook Reader&lt;/h3&gt;
&lt;p&gt;A dedicated reader for ePub files specifically. &lt;code&gt;zathura&lt;/code&gt; can&lt;br&gt;
handle some formats but a dedicated reader offers better&lt;br&gt;
navigation, bookmarking, and reading experience for long-form&lt;br&gt;
text.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;epr&lt;/code&gt; (terminal), &lt;code&gt;foliate&lt;/code&gt; (GUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="image-viewer"&gt;Image Viewer&lt;/h3&gt;
&lt;p&gt;Opens and browses image files. Should be Wayland-native or&lt;br&gt;
usable under XWayland.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;imv&lt;/code&gt;, &lt;code&gt;swayimg&lt;/code&gt;, &lt;code&gt;eog&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="image-manipulation-tool"&gt;Image Manipulation Tool&lt;/h3&gt;
&lt;p&gt;Edits and converts images. &lt;code&gt;imagemagick&lt;/code&gt; is a CLI tool that&lt;br&gt;
handles format conversion, resizing, and compositing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;imagemagick&lt;/code&gt; (CLI), &lt;code&gt;gimp&lt;/code&gt; (GUI raster),&lt;br&gt;
&lt;code&gt;inkscape&lt;/code&gt; (GUI SVG / vector)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="video-player"&gt;Video Player&lt;/h3&gt;
&lt;p&gt;Plays video files and streams. &lt;code&gt;mpv&lt;/code&gt; is the standard for&lt;br&gt;
terminal-first setups &amp;ndash; it is scriptable, lightweight, and&lt;br&gt;
supports virtually every format.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;mpv&lt;/code&gt;, &lt;code&gt;vlc&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="media-downloader"&gt;Media Downloader&lt;/h3&gt;
&lt;p&gt;Downloads video and audio from websites and streaming platforms&lt;br&gt;
to local files.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;yt-dlp&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="music-player-daemon"&gt;Music Player Daemon&lt;/h3&gt;
&lt;p&gt;A background daemon that manages a music library and plays audio.&lt;br&gt;
Controlled separately by a client application. Separates&lt;br&gt;
playback logic from the interface &amp;ndash; if your UI crashes, the&lt;br&gt;
music keeps playing.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;mpd&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="music-player-client"&gt;Music Player Client&lt;/h3&gt;
&lt;p&gt;The interface for a music player daemon. Controls playback,&lt;br&gt;
browsing the library, and managing the queue.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;ncmpcpp&lt;/code&gt;, &lt;code&gt;mpc&lt;/code&gt; (CLI), &lt;code&gt;cantata&lt;/code&gt; (GUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="note-taking-application"&gt;Note Taking Application&lt;/h3&gt;
&lt;p&gt;A place to write and organise notes, references, and personal&lt;br&gt;
knowledge.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;obsidian&lt;/code&gt;, &lt;code&gt;logseq&lt;/code&gt;, &lt;code&gt;zettlr&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="password-manager"&gt;Password Manager&lt;/h3&gt;
&lt;p&gt;An encrypted database of credentials. Without one you either&lt;br&gt;
reuse passwords or write them somewhere insecure.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;keepassxc&lt;/code&gt;, &lt;code&gt;bitwarden&lt;/code&gt;, &lt;code&gt;pass&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="office-suite"&gt;Office Suite&lt;/h3&gt;
&lt;p&gt;For documents, spreadsheets, and presentations in standard&lt;br&gt;
formats (ODF, DOCX, XLSX, etc.).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;libreoffice&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="spell-check-library"&gt;Spell Check Library&lt;/h3&gt;
&lt;p&gt;Provides spell checking for applications that support it &amp;ndash;&lt;br&gt;
LibreOffice, email clients, some browsers. You install the&lt;br&gt;
library and then the dictionary for your language separately.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;hunspell&lt;/code&gt;, &lt;code&gt;hunspell-en_gb&lt;/code&gt;, &lt;code&gt;hunspell-en_us&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;aspell&lt;/code&gt; (some applications prefer this over hunspell)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="calculator-gui"&gt;Calculator (GUI)&lt;/h3&gt;
&lt;p&gt;A graphical calculator. Qalculate is particularly good because&lt;br&gt;
it handles unit conversion, symbolic maths, and complex&lt;br&gt;
expressions.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;qalculate&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="communication--messaging"&gt;Communication / Messaging&lt;/h3&gt;
&lt;p&gt;Applications for chat, social platforms, and real-time&lt;br&gt;
communication.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;telegram-desktop&lt;/code&gt;, &lt;code&gt;element-desktop&lt;/code&gt; (Matrix),&lt;br&gt;
&lt;code&gt;discord&lt;/code&gt;, &lt;code&gt;slack-desktop&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="fediverse--social-client"&gt;Fediverse / Social Client&lt;/h3&gt;
&lt;p&gt;TUI or GUI clients for federated social platforms &amp;ndash; Mastodon,&lt;br&gt;
Akkoma, Pleroma, Misskey. If you are on the Fediverse and want&lt;br&gt;
to interact without a browser.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;tut&lt;/code&gt; (Mastodon TUI), &lt;code&gt;toot&lt;/code&gt; (CLI),&lt;br&gt;
&lt;code&gt;kaiteki&lt;/code&gt; (GUI, multi-platform Fediverse)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="rss--feed-reader"&gt;RSS / Feed Reader&lt;/h3&gt;
&lt;p&gt;Aggregates and displays content from RSS and Atom feeds &amp;ndash; blogs,&lt;br&gt;
news, podcast listings, YouTube channels. Keeps information&lt;br&gt;
consumption terminal-side and out of the browser.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;newsboat&lt;/code&gt; (TUI), &lt;code&gt;rss-guard&lt;/code&gt; (GUI)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="torrent-client"&gt;Torrent Client&lt;/h3&gt;
&lt;p&gt;Downloads files via the BitTorrent protocol. Useful for Linux&lt;br&gt;
ISOs, large open datasets, and anything distributed without a&lt;br&gt;
central server.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;transmission-cli&lt;/code&gt; (CLI/daemon),&lt;br&gt;
&lt;code&gt;transmission-gtk&lt;/code&gt; (GUI), &lt;code&gt;qbittorrent&lt;/code&gt;, &lt;code&gt;deluge&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="fetching-tool"&gt;Fetching Tool&lt;/h3&gt;
&lt;p&gt;Displays system information alongside an ASCII or image logo.&lt;br&gt;
Purely aesthetic. Installed last, used constantly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Examples: &lt;code&gt;fastfetch&lt;/code&gt;, &lt;code&gt;neofetch&lt;/code&gt; (unmaintained), &lt;code&gt;macchina&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="14-fonts-summary"&gt;14. Fonts Summary&lt;/h2&gt;
&lt;p&gt;Fonts deserve a consolidated note because they affect the entire&lt;br&gt;
desktop.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;th&gt;Example Packages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monospace Nerd Font&lt;/td&gt;
&lt;td&gt;Terminal, editor, status bar icons&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ttf-jetbrains-mono-nerd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sans-Serif UI Font&lt;/td&gt;
&lt;td&gt;GTK apps, notifications, launchers&lt;/td&gt;
&lt;td&gt;&lt;code&gt;inter-font&lt;/code&gt;, &lt;code&gt;noto-fonts&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Emoji Font&lt;/td&gt;
&lt;td&gt;Emoji rendering everywhere&lt;/td&gt;
&lt;td&gt;&lt;code&gt;noto-fonts-emoji&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Serif Font&lt;/td&gt;
&lt;td&gt;Documents, reading&lt;/td&gt;
&lt;td&gt;&lt;code&gt;adobe-source-serif-fonts&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="15-quick-checklist"&gt;15. Quick Checklist&lt;/h2&gt;
&lt;p&gt;Use this to verify nothing critical is missing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Core System&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Base system and kernel&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; CPU microcode and firmware&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Bootloader&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Man pages&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Time synchronisation&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Disk encryption (ideally set up at install time)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Display&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; GPU driver and video acceleration&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Display manager or TTY launch setup&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Compositor (Hyprland)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; XDG desktop portals (compositor-specific + GTK fallback)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; XWayland&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Display configuration tool&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Desktop Components&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Status bar&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Application launcher&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Notification daemon&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Screen lock + idle daemon&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Wallpaper setter&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Polkit agent&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Keyring&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Clipboard manager + &lt;code&gt;wl-clipboard&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Screenshot tool + region selector&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Screen annotation tool&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Color picker&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; OSD (volume / brightness feedback)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Audio&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Audio server (PipeWire + WirePlumber)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Volume control&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Network manager + frontend&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Firewall&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; SSH client/server&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Encrypted DNS&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Network diagnostics tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Input &amp;amp; Hardware&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Brightness control&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Bluetooth (if hardware present)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Power management (if on a laptop)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Fingerprint reader (if hardware present)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Input remapper (if needed)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Smart drive monitor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Shell &amp;amp; Terminal&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Terminal emulator&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Shell + prompt&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Terminal multiplexer&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Pager&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; AUR helper&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Theming&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Fonts (monospace Nerd Font + emoji at minimum)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Icon theme + hicolor fallback&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Cursor theme&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; GTK settings manager&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Qt theming (qt5ct / qt6ct + Kvantum)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Editors &amp;amp; IDE&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Simple terminal editor (nano or micro)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Modal terminal editor (vim or neovim)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; IDE (if text editor + plugins is not sufficient)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Development&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Git + git TUI&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Language runtimes and toolchains&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Language version manager&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Build tools (base-devel covers most of this)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; LSP servers&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; API testing tool&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Database client (if working with databases)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Container runtime (docker, podman, or incus)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Virtualisation (qemu + virt-manager if needed)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Diff / merge tool&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; System call tracer (strace)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Hex editor&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;File Management&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; File manager&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Archive manager&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Disk usage analyser&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Disk / partition management tools&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Backup tool and a tested restore procedure&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Cloud storage client (if needed)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Remote desktop client (if needed)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;System Utilities&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; System monitor&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Fuzzy finder (fzf)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Smart file content search (ripgrep)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Smart file name search (fd)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Modern ls replacement (eza)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Download manager&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Security auditing tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Applications&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Web browser&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Email client&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Document / PDF viewer&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Image viewer&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Video player&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Music player daemon + client&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Note taking application&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Password manager&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Office suite&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Spell check library + dictionaries&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Media downloader (yt-dlp)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Communication / messaging apps&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Torrent client (if needed)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; RSS reader (if needed)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Fetching tool&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;This note is a reference, not a prescription. Your actual&lt;br&gt;
package list will differ. The point is to know what each&lt;br&gt;
category does so you know what you are missing when something&lt;br&gt;
does not work.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>The Architecture of Noise</title><link>https://osaigbovo.xyz/archive/the-architecture-of-noise/</link><pubDate>Wed, 02 Jul 2025 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/archive/the-architecture-of-noise/</guid><description>&lt;p&gt;Data is the noise before translation. It is the bloodied carcass awaiting dissection. It exists without meaning, incapable of explaining itself. A temperature reading, a demographic marker, a death toll&amp;ndash;these are corpses without context. We mistake them for evidence, forgetting that data is always observed from somewhere. The choices of what to collect, what to ignore, and what to erase shape the world long before the numbers are ever tallied. Data only becomes evidence once it has been framed and weaponised.&lt;/p&gt;
&lt;p&gt;When intent is injected into that raw noise, it becomes information. It provides the primitive architecture of who, what, where, and when, telling a story without necessarily understanding it. This is the first point of manipulation. Search results and statistics wear the aesthetic of truth, but they are shaped by underlying infrastructure and motive. Authoritarian systems rely on this; they rarely need to lie outright when they can simply arrange the data into a structure that dictates what the public believes matters.&lt;/p&gt;
&lt;p&gt;Eventually, information is stored, repeated, and accepted as true, becoming knowledge. This forms the archive. It is the approved curriculum of empire and the canon of the victors. Most people stop here, mistaking the archive for the peak of human intellectual achievement. But knowledge is inherently static. Left unchallenged, it calcifies into dogma. It presents itself as universal while remaining hopelessly situated&amp;ndash;filtered heavily through ideology, culture, and power.&lt;/p&gt;
&lt;p&gt;To break past the archive requires understanding. To understand is to internalise the mechanism. It is the moment the pattern burns into you, when you stop quoting what you were taught and begin seeing the connections yourself. Understanding perceives cause and effect simultaneously. It is an inherently painful process because it requires dismantling your previous conditioning. Any society that prioritises obedience will naturally view understanding as a threat.&lt;/p&gt;
&lt;p&gt;Intelligence, meanwhile, is merely function. It is the capacity to operate within systems, adapt to constraints, and solve novel problems. It possesses no inherent moral compass. It dictates how to build the bomb, not whether to drop it. The world does not reward the wise; it rewards the intelligent, but only when that intelligence serves capital, the state, or the spectacle. This profound misalignment is why everything around us is breaking.&lt;/p&gt;
&lt;p&gt;Beneath all of this lies the biological and psychological hardware: cognition and perception. Cognition is the circuitry of memory, attention, and association. Perception is the dirty glass through which that circuitry views the world, soaked in the conditioning of trauma, language, and expectation. Both are deeply hackable. Algorithms strip-mine our attention, while propaganda exploits our associations. If you refuse to acknowledge the dirt on the glass, you cannot own your thoughts. And if you do not own your thoughts, whose are you repeating?&lt;/p&gt;
&lt;p&gt;Wisdom is post-intelligence. It is ethical pattern-recognition across time, rooted in restraint and consequence-awareness. It moves slowly. It questions rather than answers. Because it cannot be scaled, patented, or sold, it is rendered irrelevant by the modern machine. The wise do not offer lucrative solutions; they reveal problems too fundamental to fix. That is why empire discards its elders and ridicules its mystics. Wisdom requires the devastating realisation that being right is insufficient, and being clever is often the mechanism of ruin.&lt;/p&gt;
&lt;p&gt;The natural progression from raw data to wisdom has been deliberately severed. We live in a civilisation drowning in harvested data and weaponised information. Knowledge is curated into dogma, understanding is suppressed, and intelligence is exploited to hijack our cognition and manipulate our perception.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Concept&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Role&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Control Mechanism&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Systemic Abuse&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Raw signals&lt;/td&gt;
&lt;td&gt;Measurement&lt;/td&gt;
&lt;td&gt;Collection&lt;/td&gt;
&lt;td&gt;Surveillance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Information&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Structured data&lt;/td&gt;
&lt;td&gt;Communication&lt;/td&gt;
&lt;td&gt;Framing&lt;/td&gt;
&lt;td&gt;Propaganda&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Knowledge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stored information&lt;/td&gt;
&lt;td&gt;Reference&lt;/td&gt;
&lt;td&gt;Institutions&lt;/td&gt;
&lt;td&gt;Indoctrination&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Understanding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Internalised knowledge&lt;/td&gt;
&lt;td&gt;Insight&lt;/td&gt;
&lt;td&gt;Isolation&lt;/td&gt;
&lt;td&gt;Suppression&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Intelligence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Problem-solving&lt;/td&gt;
&lt;td&gt;Adaptation&lt;/td&gt;
&lt;td&gt;Reward&lt;/td&gt;
&lt;td&gt;Exploitation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cognition&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Processing framework&lt;/td&gt;
&lt;td&gt;Thought architecture&lt;/td&gt;
&lt;td&gt;Hijacking&lt;/td&gt;
&lt;td&gt;Disempowerment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Perception&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Interpretive filter&lt;/td&gt;
&lt;td&gt;Subjective awareness&lt;/td&gt;
&lt;td&gt;Conditioning&lt;/td&gt;
&lt;td&gt;Obfuscation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wisdom&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ethical foresight&lt;/td&gt;
&lt;td&gt;Judgement&lt;/td&gt;
&lt;td&gt;Marginalisation&lt;/td&gt;
&lt;td&gt;Erasure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If your data is harvested and your information shaped; if your knowledge is curated and your understanding suppressed; if your intelligence is weaponised to hijack your cognition and own your perception&amp;ndash;wisdom is not coming.&lt;/p&gt;
&lt;p&gt;You are not thinking. You are being thought through.&lt;/p&gt;</description></item><item><title/><link>https://osaigbovo.xyz/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>mail@osaigbovo.xyz (Osaigbovo Omere)</author><guid>https://osaigbovo.xyz/about/</guid><description/></item></channel></rss>