A charming Jekyll theme.
jekyll-theme
CSS 54.0%
HTML 42.7%
Ruby 3.4%
30 2 0

Clone this repository

https://tangled.org/arthr.me/linus https://tangled.org/did:plc:aeaouj6eedwqmk4z3pies55n/linus
git@knot.tangled.wizardry.systems:arthr.me/linus git@knot.tangled.wizardry.systems:did:plc:aeaouj6eedwqmk4z3pies55n/linus

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Linus is a minimal blog theme for Jekyll. Supports link posts, categories, tags, archives (using jekyll-archives) and dark mode out of the box.

Installation#

Add this line to your Jekyll site's Gemfile:

gem "linus"

And add this line to your Jekyll site's _config.yml:

theme: linus

Then execute:

$ bundle

Or install it yourself as:

$ gem install linus

Usage#

Layouts#

Layout Purpose
default Base layout — full HTML document, loads CSS, renders header and footer
blog Blog index listing with pagination; also used for date, tag, and category archives
post Single post view
page Simple content page

Writing posts#

Create files in _posts/ with this front matter:

---
layout: post
title: "My Post Title"
date: 2026-01-01
category: Notes
author: arthur
tags:
  - some tag
---

Link posts: you can have link posts by setting a post.source front-matter on your post. If the title is left empty (""), Jekyll will try to fetch the link metadata and render the link title as your post title.

---
layout: post
title: ""
source: "https://example.com/article"
category: Links
---

Authors#

Authors follow the same approach as jekyll-feed and jekyll-archives. You can have an author object set in a post, or in the site _config.yml, or in a authors.yml data file.

In a post:

---
layout: post
title: My awesome first post
author:
  name: Author Name
  uri: https://example.com
  picture: /path/to/author-picture.jpg
---

In your _config.yml:

author:
  name: Author Name
  uri: https://example.com
  picture: /path/to/author-picture.jpg

You can also define authors in _data/authors.yml:

author_name:
  name: Author Name
  uri: https://example.com
  picture: /path/to/author-picture.jpg

Reference them in post front matter with the author key:

author: author_name
main_menu:
  title: Navigate
  items:
    - url: "/about"
      label: About

footer_menu:
  title: Follow
  items:
    - label: RSS
      url: /feed.xml
      rel: alternate
    - label: External Site
      url: https://example.com
      rel: me
      external: true

Set external: true on any item to open it in a new tab.

Translations#

Override UI strings for archive headings and pagination:

translations:
  byline: "By"
  archive_date_title: "Archives from %date"
  archive_tag_title: "Posts tagged with %tag"
  archive_category_title: "Posts filed under %category"
  blog_pagination_title: "Blog pagination"
  blog_pagination_prev_page: "Previous page"
  blog_pagination_next_page: "Next page"

Further options#

Linus uses the following Jekyll plugins, which you can set up as you please. Refer to the plugins docs to learn how to change the way your site will handle pagination, archiving, feeds and SEO tags:

Customization#

Date formats#

Customize how dates are displayed using strftime strings:

date_formats:
  day: "%b %d, '%y"
  month: "%b, '%y"
  year: "%Y"

Custom styles#

Override or extend the theme's CSS by creating assets/css/theme.css in your site. This file is loaded last, after all theme styles. Use it to redefine CSS custom properties or add new rules:

:root {
  --font-body: Georgia, serif;
  --color-accent: tomato;
}

Category colors#

Assign a background color to each category pill:

category_colors:
  - name: Links
    color: "#f0e68c"
  - name: Notes
    color: "#fa8072"

Custom fonts#

Create assets/css/fonts.css in your site to load your own web fonts:

@font-face {
  font-family: 'My Font';
  font-weight: 400;
  src: url('/assets/fonts/myfont.woff2') format('woff2');
}

Then reference it in theme.css:

:root {
  --font-body: 'My Font', sans-serif;
}

Custom includes#

Linus offers three custom includes to add markup to different parts of your website:

  • head.html: right before the closing </head> tag.
  • below-post.html: after the post footer in post pages.
  • end.html: right before the closing </body> tag.

Development#

To set up your environment to develop this theme, run bundle install.

The repository is also a working Jekyll site for local development. To preview the theme, run bundle exec jekyll serve and open your browser at http://localhost:4000. As you modify theme files, the site regenerates automatically.

Posts in _posts/ and index.html exist only for local testing and are not included in the published gem.

License#

The theme is available as open source under the terms of the MIT License.