Install the theme from RubyGems:
Add the theme to your site's Gemfile:
gem "imdhemy-jekyll-theme"Set it in _config.yml:
theme: imdhemy-jekyll-theme
plugins:
- jekyll-feed
- jekyll-paginate
- jekyll-archives
- jekyll-sitemapThen install dependencies:
bundle installIf your site currently uses:
remote_theme: imdhemy/imdhemy-jekyll-themeMigrate to the gem setup:
- Remove
remote_themefrom_config.yml. - Add
theme: imdhemy-jekyll-themeto_config.yml. - Add
gem "imdhemy-jekyll-theme"to yourGemfile. - Run
bundle install. - Add
jekyll-sitemapto yourpluginslist.
title: "Your Site"
description: "Your site description"
url: "https://example.com"
baseurl: ""
author:
name: "Your Name"
description: "Writer, builder, and engineer"
avatar: "/images/theme/avatar.jpeg"
navigation:
- title: Home
url: /
- title: Blog
url: /blog
- title: About
url: /about
plugins:
- jekyll-feed
- jekyll-paginate
- jekyll-archives
- jekyll-sitemapFor all available options, see Configuration Reference.
Enable pagination and set your blog index page to use the blog layout.
paginate: 10
paginate_path: "/blog/:num/"Create blog/index.html:
---
layout: blog
title: Blog
description: Latest posts
---The theme supports sitemap generation through jekyll-sitemap.
Requirements:
- set
urlto your production site origin - keep
baseurlaccurate if the site is served from a subpath - add
jekyll-sitemaptoplugins
Build output:
- Jekyll generates
/sitemap.xml - the sitemap contains absolute URLs suitable for Google and other search engines
Exclude a document from the sitemap:
---
title: "Private landing page"
sitemap: false
---Important:
noindex: truecontrols the page robots meta tag, but it does not automatically remove the page fromsitemap.xml- if a page should be both non-indexed and absent from the sitemap, set both
noindex: trueandsitemap: false
- Home uses
layout: homeand includes hero, contributions, testimonials, latest posts, and social section. - Posts use
layout: postand include:- post header
- optional post series (when
listis set in front matter) - content body
- collapsible discussions (Giscus, optional)
- next/previous navigation
- related posts
- optional reading progress bar
- Ruby 3.3.4 + Bundler
- Node.js 24 + npm
Version pins are defined in:
.ruby-version.nvmrc.node-version.tool-versions
bundle install
npm installnpm startThis runs:
bundle exec rake previewvite build --watch
npm run rake # Jekyll preview only
npm run js:build # JS production build
npm run js:watch # JS watcher onlyThe gem ships an optional executable for downstream sites to optimize post images before publishing.
Examples:
bundle exec imdhemy-image path/to/image.jpg
bundle exec imdhemy-image assets/images
bundle exec imdhemy-image --recursive images/posts
bundle exec imdhemy-image --dry-run images/postsNotes:
- it optimizes only the paths you pass in
- it does not run automatically during Jekyll preview or build
- it does not rewrite image references
- it prefers conservative same-format optimization
- supported formats currently focus on
jpg,jpeg, andpng
The executable uses available system optimizers when present, such as jpegoptim, oxipng, pngcrush, or sips.