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
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
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
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
This setup behaved normally:
sudo pacman -S hyprland kitty gtk3
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
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
But:
A truly minimal Arch + Hyprland install still needs a usable font.
Conceptually, the practical minimum is closer to:
Arch Linux
+ Hyprland
+ Kitty
+ one usable font
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
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
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
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
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)