Monoholic
A minimal, monochrome dark Jekyll theme🧪
Try the demo out!

Features
- Minimalist dark monochrome design
- Data-driven menu via
_data/menu.yml - Optional grayscale image filter
- SEO & RSS support
Installation
Using RubyGems
- Add this line to your Jekyll site's
Gemfile:
gem "monoholic"
- Add this line to your Jekyll site's
_config.yml:
theme: monoholic
- Execute:
$ bundle install
Manual Installation
If you're running Jekyll without RubyGems or prefer to use GitHub Pages remote themes, update your _config.yml:
remote_theme: stiermid/monoholic
Or, simply fork this repository, adapt the _config.yml according to your needs, and you're good to go!
Usage
Basic Setup
Once installed, build your site using the provided layouts (default, home, page, post).
Configuration
Override the default settings in your _config.yml. Key theme configuration options:
theme_config:
back: ".." # Text for backlink on post pages
date_format: "%Y%m%d" # Date format for post metadata
monochrome_images: true # Apply grayscale filter to images (default: true)
footer: true # Show/hide site footer (default: true)
Analytics
Monoholic has built-in support for GoatCounter, a privacy-friendly analytics platform. Add your GoatCounter subdomain to _config.yml:
goatcounter: your-subdomain
This injects the GoatCounter tracking script on every page. Remove the key entirely to disable analytics.
Menu Configuration
Monoholic uses a data-driven approach to its menu. Create or edit _data/menu.yml to define your site's navigation structure.
Example _data/menu.yml:
entries:
- title: about
content: |
<p>Your about me text here.</p>
- title: all posts
post_list: true
title: The section header.content: Custom HTML or text for the menu section.content_file: Path to an external markdown file (e.g.,about.md) to load content from your root directory.post_list: Set totrueto auto-generate a list of your Jekyll posts under this section.
Nested Menu Sections
Menu entries can contain nested entries to create recursive sub-sections:
entries:
- title: projects
entries:
- title: web
content: |
<p>Web projects here.</p>
- title: archive
post_list: true
Nesting can go as deep as needed — menu.html includes itself recursively for each entries array it encounters.
Using External Content Files
You can reference external markdown files instead of inline content:
entries:
- title: about
content_file: about.md
This will load and render the content from about.md in your site's root directory.
Per-Page JavaScript
To load custom JavaScript files on a specific page, add a custom_js list to the page's front matter:
---
layout: post
custom_js:
- my-script
- chart
---
Each entry is a filename (without .js) relative to assets/js/. The example above loads assets/js/my-script.js and assets/js/chart.js at the bottom of the page body.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/stiermid/monoholic. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
License
This theme is available as open source under the terms of the GNU General Public License v3.0 only (GPL-3.0-only).