Fixed left sidebar integrates site title, menu, in-page table of contents, social links, and light/dark toggle
styx — Hugo Blog Template
By vulkoingim
Styx is a minimal personal blog theme for Hugo, derived from ezhil, offering a fixed left sidebar, switchable ink color schemes, self-hosted fonts and icons, and support for Giscus comments and optional PostHog analytics.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Preview provided in the project README.
One original preview is available. Open the full image to inspect the design.
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Four ink color schemes (Vermilion, Sepia, Shibui, Kabuki) independent of light/dark mode, with choices saved in localStorage
Fonts and icons are self-hosted, with no requests to Google Fonts or icon CDNs
Giscus comments based on GitHub Discussions, can be disabled per page or content type
Optional PostHog analytics; if no key is provided, no tracking script is loaded
Supports tags, RSS, Open Graph / Twitter cards, custom CSS/JS, and single-page wide layout
Template Details
Styx is a Hugo theme for personal blogs, forked from vividvilla/ezhil. It uses a fixed left sidebar layout containing the site title, menu, in-page table of contents for posts, social links, light/dark mode toggle, and color scheme switcher; the main content area maintains a single reading column width. The theme bundles iA Writer Quattro and IBM Plex Mono fonts, with fonts and icons self-hosted, not relying on Google Fonts or icon CDNs.
In terms of features, Styx provides four ink color schemes (Vermilion, Sepia, Shibui, Kabuki) independent of light/dark mode, with reader choices stored in localStorage. Comments use Giscus (based on GitHub Discussions), requiring configuration to enable and fill in the repository and category ID; analytics use optional PostHog, and if no key is provided, no tracking script is loaded. The theme also supports tags, RSS, Open Graph / Twitter cards, custom CSS/JS, and allows enabling wide layout on a single page via wideContent: true.
Usage limitations: requires Hugo 0.111 or higher; Giscus and PostHog depend on external services and require configuring the corresponding parameters; third-party assets such as demo images, fonts, and icons should be checked separately for licensing, and cannot be judged solely based on the code's MIT license.
Is it right for your project?
Use Cases
- Building a text-focused personal blog that needs a clean left navigation and reading column
- Wanting readers to switch ink color schemes and light/dark mode themselves, and preferring not to rely on external font/icon CDNs
- Using GitHub Discussions as the comment system and wanting to control comment display per page or content type
- Needing optional analytics but not wanting to load tracking scripts by default, or wanting to integrate PostHog
- Occasionally inserting full-width utility pages (such as a calculator) in the blog, enabling wide layout separately via wideContent
Suitable For
- Developers or writers building personal blogs with Hugo
- Users who prefer minimal, editorial-style typography and self-hosted static assets
- Sites that need Giscus comments and optional PostHog analytics
- Projects that want to switch color schemes, light/dark mode, and social links via configuration without modifying the theme source code
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Hugo 0.111 or higher; clone the theme into themes/styx and set theme = "styx" in the site configuration.
- 2
Configure basic items such as subtitle, mainSections, favicon, mode (dark/light/auto) in [params].
- 3
To enable Giscus, set giscus = true and fill in giscusRepo, giscusRepoId, giscusCategory, giscusCategoryId; can be disabled with giscus: false or disableGiscusTypes.
- 4
To enable PostHog, set posthogKey, with optional posthogHost and posthogDefaults; omitting the key means no tracking script is loaded.
- 5
Custom CSS/JS is included via the customCSS and customJS parameters; social icons currently support bluesky, mastodon, github, rss.
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Permits free use, modification, commercial use, and distribution of this version's code.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked under their respective licenses and cannot be judged solely based on the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
- Using this theme requires Hugo 0.111 or higher; Hugo versions below this cannot build properly.
- The comment feature depends on the external service Giscus (based on GitHub Discussions) and will only load after setting giscus = true and filling in the repository and category ID.
- The analytics feature depends on the external service PostHog and is enabled only when posthogKey is set; omitting the key means no tracking script is loaded.
- Enabling Giscus comments requires first generating the repository and category ID at giscus.app, which is an external service configuration step.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Requires Hugo 0.111 or later.
Original README
Comments use [Giscus](https://giscus.app): GitHub Discussions, loaded only when `giscus = true` and the repo IDs are set.
Original README
Set `posthogKey` to enable. Use `posthogHost = "https://eu.i.posthog.com"` for EU cloud.
Original README
https://github.com/vulkoingim/styx/blob/master/LICENSE.mdhttps://github.com/vulkoingim/styx/blob/master/README.mdGenerate repo/category IDs at https://giscus.app
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-12. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 80 / 100
- Technologies
- Hugo
- Website type
- Blog
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-08-15
- Screenshot last checked
- 2026-10-12
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Hugo as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-13
Inspect the recorded source material
SHA-256: 0b530c7146e54b6778c2eb8551d535c447101c6083007ae2f826cfaf88a71453
2026-10-12T06:58:04.145Z
Source file / repository# Styx
Minimal Hugo blog theme with a sticky left rail, switchable ink palettes, and a reading column. Fonts and icons are self-hosted. No Google Fonts, no icon CDN.
Forked from [vividvilla/ezhil](https://github.com/vividvilla/ezhil).
## Demo


## Features
- Left rail: site title, menu, on-this-page TOC on posts, social, light/dark, palettes
- Palettes: Vermilion, Sepia, Shibui, Kabuki (independent of light/dark)
- iA Writer Quattro (regular body, bold titles) and IBM Plex Mono (code)
- [Giscus](https://giscus.app) comments (GitHub Discussions)
- Optional [PostHog](https://posthog.com) analytics
- Tags, RSS, Open Graph / Twitter cards
- Custom CSS / JS
- Wide layout opt-in per page (`wideContent: true`)
## Installation
```sh
cd themes
git clone https://github.com/vulkoingim/styx.git styx
```
Requires Hugo 0.111 or later. See the [Hugo install guide](https://gohugo.io/installation/).
## Configuration
```toml
baseURL = "https://example.com/"
languageCode = "en-us"
title = "My personal blog"
theme = "styx"
copyright = "© Copyright notice"
[markup.highlight]
noClasses = false
guessSyntax = true
[markup.tableOfContents]
startLevel = 2
endLevel = 3
ordered = false
[params]
# Subtitle under the site title. Supports markdown.
subtitle = "stuff and things"
mainSections = ["posts"]
favicon = "icons/myicon.png"
# "dark", "light", or "auto" (follow the OS).
mode = "auto"
# PostHog. Omit posthogKey to disable.
# posthogKey = "phc_..."
# posthogHost = "https://eu.i.posthog.com" # default: https://us.i.posthog.com
# posthogDefaults = "2026-05-30"
# Giscus. Generate repo/category IDs at https://giscus.app
# giscus = true
# giscusRepo = "owner/repo"
# giscusRepoId = "..."
# giscusCategory = "Comments"
# giscusCategoryId = "..."
# Optional (defaults shown):
# giscusMapping = "pathname"
# giscusTheme = "preferred_color_scheme"
# giscusLang = "en"
disableGiscusTypes = ["page"]
# customCSS = "css/custom.css"
# customJS = ["js/extra.js"]
[[menu.main]]
name = "Home"
url = "/"
weight = 1
[[menu.main]]
name = "All posts"
url = "/posts"
weight = 2
[[menu.main]]
name = "About"
url = "/about/"
weight = 3
[[menu.main]]
name = "Tags"
url = "/tags"
weight = 4
# Supported icons: bluesky, mastodon, github, rss.
[[params.social]]
name = "BlueSky"
icon = "bluesky"
url = "https://bsky.app/profile/example"
[[params.social]]
name = "Mastodon"
icon = "mastodon"
url = "https://mastodon.social/@example"
[[params.social]]
name = "Github"
icon = "github"
url = "https://github.com/example"
[taxonomies]
tag = "tags"
```
## Palettes
Readers can switch palettes in the rail. Choice is stored in `localStorage` and is independent of Auto / Light / Dark.
| Palette | `data-palette` | Light paper |
| --------- | -------------- | --------------- |
| Vermilion | _(default)_ | near-white, red |
| Sepia | `sepia` | parchment |
| Shibui | `shibui` | dusty blue |
| Kabuki | `kabuki` | green wash |
## Giscus
Comments use [Giscus](https://giscus.app): GitHub Discussions, loaded only when `giscus = true` and the repo IDs are set.
Disable on one page:
```md
---
title: "No comments"
giscus: false
---
```
Disable for a content type with `disableGiscusTypes` (see config above).
## PostHog
Set `posthogKey` to enable. Use `posthogHost = "https://eu.i.posthog.com"` for EU cloud. `posthogDefaults` follows the [current snippet](https://posthog.com/docs/libraries/js/config) (`2026-05-30`). Omit the key to ship no tracker.
## Content types
Set `type` in front matter. `page` is a typical static page (about). Control home-page posts with `mainSections`.
```md
---
title: "About"
type: "page"
---
```
For a full-width tool (for example a calculator), set `wideContent: true`.
## Credits
- Original [ezhil](https://github.com/vividvilla/ezhil) by [Vivek R](https://vivekr.net)
- [iA Writer Quattro](https://github.com/iaolo/iA-Fonts) (SIL OFL 1.1)
- [IBM Plex Mono](https://github.com/IBM/plex) (SIL OFL 1.1)
Explore similar templates
Compare previews and descriptions within the same stack and category.

hugo-PaperMod
A fast, clean, responsive Hugo theme for blogs and lightweight portfolios, with three layout modes (Regular, Home-Info, Profile), automatic and manual light/dark themes, Fuse.js client-side search, multilingual support, and built-in Open Graph, Twitter Cards, and Schema.org data.
Hugo · Portfolio

LoveIt
LoveIt is a clean, elegant, and feature-rich Hugo blog theme derived from LeaveIt and KeepIt, MIT-licensed. It offers light/dark modes, responsive layout, multilingual support, and search via Lunr.js or Algolia.
Hugo · Blog

hugo-coder
hugo-coder is a minimalist Hugo blog theme maintained by luizdepra under the MIT license. It provides a clean, text-focused blog appearance, configuration documentation in the docs directory, and a complete exampleSite with hugo.toml.
Hugo · Blog

blowfish
Blowfish is a Hugo personal website and blog theme built with Tailwind CSS 4, focused on lightness, simplicity, and content-first presentation.
Hugo · Blog

hugo-paper
hugo-paper is a simple, clean, and customizable Hugo blog theme configured through config.toml or hugo.toml.
Hugo · Blog

hextra
Hextra is a Hugo theme for documentation and blog sites, built on Hugo and Tailwind CSS with design referencing Nextra.
Hugo · Documentation
