A minimal, monochrome dark Jekyll theme🧪
- Minimalist dark monochrome design
- Data-driven menu via
_data/menu.yml - Optional grayscale image filter
- SEO & RSS support
- 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 installIf you're running Jekyll without RubyGems or prefer to use GitHub Pages remote themes, update your _config.yml:
remote_theme: stiermid/monoholicOr, simply fork this repository, adapt the _config.yml according to your needs, and you're good to go!
Once installed, build your site using the provided layouts (default, home, page, post).
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)Monoholic has built-in support for GoatCounter, a privacy-friendly analytics platform. Add your GoatCounter subdomain to _config.yml:
goatcounter: your-subdomainThis injects the GoatCounter tracking script on every page. Remove the key entirely to disable analytics.
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: truetitle: 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.
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: trueNesting can go as deep as needed — menu.html includes itself recursively for each entries array it encounters.
You can reference external markdown files instead of inline content:
entries:
- title: about
content_file: about.mdThis will load and render the content from about.md in your site's root directory.
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.
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.
This theme is available as open source under the terms of the GNU General Public License v3.0 only (GPL-3.0-only).
