DEV Community

nari418
nari418

Posted on

The Arch Linux + Hyprland Minimal Install Trap: The Missing Piece Was Just a Font

If you are building Arch Linux from scratch, there is a point where minimalism stops being elegant and starts becoming misleading.

I found that point while trying to build a very small Arch Linux + Hyprland setup.

My goal was simple:

  • install Arch Linux
  • boot normally into a TTY
  • install Hyprland
  • install one terminal
  • start Hyprland
  • add everything else later

So naturally, I started with:

sudo pacman -S hyprland kitty
Enter fullscreen mode Exit fullscreen mode

It looked perfect.

Small.

Clean.

Very Arch.

And on my machine, it did not behave normally.

The graphical environment looked wrong enough that I started wondering whether Hyprland itself was the problem.

It wasn't.

The missing piece was much simpler.

A usable font.


What I Was Actually Trying to Test

I was not trying to build a complete desktop environment.

I wanted to know what the smallest practical Arch + Hyprland installation really looked like.

There is an important difference between:

the minimum packages required for a program to technically start

and:

the minimum packages required for a human to see and use a normal desktop

Those are not always the same thing.

That distinction matters a lot on Arch Linux.

Arch does not install a complete opinionated desktop stack for you.

That is part of the appeal.

But it also means that when you strip the system down far enough, you can expose missing assumptions that most desktop users never notice.


Why Most People Probably Never Hit This

A typical Linux desktop accumulates graphical dependencies very quickly.

Install a browser.

Install a GTK application.

Install a file manager.

Install Waybar.

Install a display manager.

Install almost any normal desktop software.

Soon enough, you also have things like:

  • fonts
  • font rendering libraries
  • icon themes
  • GTK themes
  • Pango
  • Cairo
  • MIME databases
  • desktop integration components

You may never have installed those things deliberately.

They simply arrived as dependencies.

That means most people will probably never see the kind of problem I saw.

Their system already contains enough desktop infrastructure to hide it.

My installation was unusual because I had deliberately kept it extremely small.

That made the missing layer visible.


The Setup That Looked Wrong

The starting point was:

sudo pacman -S hyprland kitty
Enter fullscreen mode Exit fullscreen mode

Hyprland was there.

Kitty was there.

The system could launch the graphical session.

But the result did not look like a normal usable desktop.

At that point it is very easy to start blaming the compositor.

You begin thinking about:

  • Wayland
  • GPU drivers
  • environment variables
  • XWayland
  • cursor themes
  • portals
  • Mesa
  • kernel options

Any of those can cause real problems.

But sometimes the compositor is doing exactly what it should.

The environment underneath it is simply too empty.

That was the case here.


Then I Installed GTK3

On a clean Arch system, I tried:

sudo pacman -S hyprland kitty gtk3
Enter fullscreen mode Exit fullscreen mode

Then I launched Hyprland again.

Everything looked normal.

That was the important observation.

But it would be wrong to conclude:

Hyprland requires GTK3.

It does not.

GTK3 itself was not the point.

What mattered was what arrived with it.

Among the packages brought into the system was a normal usable font package.

That immediately made the font layer the interesting difference.


It Wasn't Simply fontconfig

At first glance, it is tempting to say:

GTK3 fixed it because it installed fontconfig.

But Kitty already depends on font-related infrastructure such as fontconfig, FreeType, and HarfBuzz.

So the meaningful change was not simply that the system suddenly learned how to discover fonts.

The more important difference was that an actual usable font set had finally been installed.

I did not perform a full package-by-package bisect after the system started working, so I do not want to claim more than the test proved.

What I can say is this:

This setup behaved abnormally:

sudo pacman -S hyprland kitty
Enter fullscreen mode Exit fullscreen mode

This setup behaved normally:

sudo pacman -S hyprland kitty gtk3
Enter fullscreen mode Exit fullscreen mode

And the difference strongly pointed to the font layer.


The Real Minimal Setup

Once that became clear, GTK3 itself stopped being interesting.

If the real requirement was simply to have an actual usable font, then installing an entire GTK stack just to obtain one would miss the point.

A cleaner minimal setup would be something like:

sudo pacman -S hyprland kitty adwaita-fonts
Enter fullscreen mode Exit fullscreen mode

But adwaita-fonts is only an example.

The real requirement is broader:

install at least one usable font package.

You could choose another suitable font package if you prefer.

The important distinction is this:

Not:

Hyprland requires GTK3
Enter fullscreen mode Exit fullscreen mode

But:

A truly minimal Arch + Hyprland install still needs a usable font.
Enter fullscreen mode Exit fullscreen mode

Conceptually, the practical minimum is closer to:

Arch Linux
+ Hyprland
+ Kitty
+ one usable font
Enter fullscreen mode Exit fullscreen mode

That is a much better description of what a usable minimal environment actually needs.


β€œMinimal” Is More Ambiguous Than It Sounds

This experience changed how I think about the word minimal.

There are several different kinds of minimal installation.

Dependency-minimal

Only install what the package manager declares as required.

Boot-minimal

Install only enough to reach a login prompt.

GUI-minimal

Install only enough to launch a compositor or window manager.

Usable-minimal

Install enough that:

  • text renders normally
  • a terminal is readable
  • input works
  • the desktop looks sane
  • troubleshooting is still practical

These are not the same system.

My mistake was assuming that dependency-minimal would automatically be usable-minimal.

It was not.


The Hidden Dependency Problem in Linux Guides

This experience also changed how I think about Linux installation guides.

Suppose a tutorial says:

pacman -S hyprland kitty
Enter fullscreen mode Exit fullscreen mode

The command itself may be completely valid.

But what if the author's machine already has:

  • fonts
  • GTK libraries
  • themes
  • icon packages
  • portals
  • desktop utilities

installed from previous work?

The guide works perfectly for the author.

Then someone follows the exact same commands on a truly fresh Arch installation and gets a completely different result.

That is not a package dependency problem.

It is a hidden tutorial dependency.

The package manager cannot warn you about it.

The author may not even know it exists.

The only reliable way to expose that kind of dependency is to test from a genuinely clean installation.


A Clean System Has No History

Daily Linux systems accumulate history.

They contain:

  • old packages
  • leftover dependencies
  • fonts installed months ago
  • themes
  • caches
  • configuration files
  • utilities you forgot were installed

That makes them poor test environments for minimal installation guides.

A better reproducibility test is:

Can I install only the packages written in the guide on a genuinely clean system and still get the same result?

That standard is much harder.

But it is also much more useful.


What I Would Recommend to a New Arch User

If you are installing Arch + Hyprland for the first time, I would not recommend optimizing for the smallest possible package count immediately.

First build something understandable.

Make sure you have:

  • networking
  • sudo
  • an editor
  • a normal user
  • a terminal
  • at least one usable font

Then reduce the system later if you want.

It is much easier to remove unnecessary packages from a working system than to identify one missing package from a broken-looking desktop.


The Practical Minimal Command

For the kind of minimal Hyprland setup I was trying to build, I would now start with something like:

sudo pacman -S hyprland kitty adwaita-fonts
Enter fullscreen mode Exit fullscreen mode

Again, adwaita-fonts is not the point.

It is simply one convenient example of a usable font package.

The real idea is:

Hyprland
+ terminal
+ one usable font
Enter fullscreen mode Exit fullscreen mode

Nothing more exotic is implied.


Final Takeaway

The most frustrating Linux problems are sometimes not bugs.

They are missing assumptions.

My Arch + Hyprland setup looked like something fundamental was wrong.

It was easy to suspect Hyprland, Wayland, or the graphics stack.

But the graphical issue itself turned out to be much simpler.

The missing piece was not another driver.

Not another Hyprland setting.

Not another kernel parameter.

It was a font.

So the final minimal picture is almost embarrassingly simple:

Arch Linux
+ Hyprland
+ Kitty
+ one usable font
Enter fullscreen mode Exit fullscreen mode

If you are testing a truly minimal Hyprland installation and the desktop looks mysteriously broken, check the boring stuff first.

Especially the fonts.

Top comments (0)