A closeup of a pastel pink mechanical keyboard. The Enter key has what looks like a little cream pastry on it, with berries on top. The image has been edited to have a pink tint to match the style of the website, and it has a slight rgb split glitch applied.

Creating my Site Theme from XMin

robyn :: 06 Aug 2025 #small web #indie web #blog #hugo #theme #css

Why my Own Theme?

When I settled on HUGO as the static generator for my first stab at a 2025-era small/indie web site, I was slowly but surely reminded of how no, you can’t in fact just build a HUGO site without a theme.

Whether or not that is the way to go (I would argue that it is not; see also Bruce Wray’s excellent article on Really getting started with Hugo), that’s where we are. I would prefer if a Hugo site worked without a theme - if it spit out barebones HTML, basically - and we could just slap on different themes to see what the site looks like with those applied. And then pick the one we like best.

As things stand though, that’s not how it works. I feel like a “Theme” is a bit of a misnomer in the context of Hugo, even - Hugo Themes in my mind go beyond styling, as they introduce added functionality as well as different semantics. You can’t just start with Theme A, configure your site, and them move to Theme B and expect things to work. I don’t have a good alternative for what themes should be called, but “themes” seems too small and misleading of a term.

Anyway! I digress.

So to Hugo Themes I went, filtered for blog and minimal themes, and eventualy settled on Mirus’s excellent ReTerminal theme for my fledgling website.

Starting with ReTerminal

ReTerminal is a great theme. It brings the OG Terminal into the modern age. Light mode, dark mode, great colours, clean, retro. What more could you possibly want!

Screenshot / promo image of the ReTerminal theme. Source: https://themes.gohugo.io/themes/hugo-theme-re-terminal/
Screenshot / promo image of the ReTerminal theme. [Source]


I loved its overall design. But when the time came for me to start editing things - what if these links were over here, what if the home page had both an About section and a list of posts, what if the header image was doing ThingXYZ instead - I found that the styling and file tructure was too bloated for me as a beginner. I had worked with HUGO before, but that was a a decade ago, and… things have changed. We’re not in Kansas anymore. So… yeah. I’m a HUGO beginner.

This is not saying that the ReTerminal theme is bloated. Far from it. It was just a little too advanced, a little too complex, for me at this moment in time. I was craving something even more minimal, also so that I could play around with the minimal HTML and CSS and see the results of my changes directly. Basically, so that I could re-learn HUGO’s logic and semantics, as well as modern-ish CSS, while building up my website.

I also realized that ReTerminal came with a JavaScript bundle - I think for a dropdown menu and a call-to-action banner? - neither of which I was really going to use or very fond of, and so I realized this would also be my opportunity to jettison all the JS, and build up something that was completely free of JavaScript.

Discovering XMin

Enter XMin, Yihui Xie’s wonderfully minimal (in the true sense of the word) theme. Here’s the demo.

It’s funny that this is the theme I ended up using - I remembered Yihui’s name and resources well from when I was still in academia and working extensively with R, RStudio, and markdown/blogdown.

XMin was exactly what I needed - not no CSS, but only the barest of CSS-es, that even a noob like me could understand.

Creating my Theme: XMin becomes X-minal

So I applied the ol’ elbow grease, dug up my atrophied HTML & CSS knowledge from 10 years ago, read up a little bit on new developments in the space (wdym flex is literally this cool!?).

Fired up VS Code, started a hugo server, and just played around with it. The result is what you currently see in front of you on this website. As you can probably tell, I borrowed heavily from the Terminal and ReTerminal themes in terms of colour schemes, fonts, and the overall layout, but then changed quite a bit as well.

For example:

I have learned so much about Hugo in the process. Params, partials, the way that an .md and its .html interact.

For me, this was the sweet spot of learning - starting with a minimal scaffold (the XMin theme), knowing where I would like to get to (a simple, minimal, blogging theme somewhere between Terminal, ReTerminal, Archie, and BearBlog), and a live server that reflects my changes, where I can’t really break anything. I felt like a kid in a sandbox and realized I hadn’t had this much fun working on a side project in months. Nay, years!

I am calling my theme X-Minal. Get it? Get it?

One Last Note

This is NOT an expert Hugo theme. Nobody else should use it probably, as it no doubt contains illogical structures that experts would probably laugh at, and other CSS crimes that nobody should ever replicate. In fact, don’t even go and inspect the HTML, you’ll probably laugh.

It’s simply the result of me applying decades-old knowledge, reading (too little?) about new developments in CSS, and then futzing with things until they looked good. The real theme is the fun we had on the way!