Linus#
A minimal Jekyll blog theme. Supports link posts, categories, tags, date archives, pagination, 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 — set title to an empty string and provide a source URL. The post title renders as "↪ [fetched page title]" using jekyll-url-metadata:
---
layout: post
title: ""
source: "https://example.com/article"
category: Links
---
Authors#
Define authors in _data/authors.yml:
arthur:
name: Arthur Freitas
uri: https://arthr.me/
Reference them in post front matter with the author key.
Category colors#
Assign a background color to each category pill:
category_colors:
- name: Links
color: "#f0e68c"
- name: Notes
color: "#fa8072"
Date formats#
Customize how dates are displayed using strftime strings:
date_formats:
day: "%b %d, '%y"
month: "%b, '%y"
year: "%Y"
Navigation menus#
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:
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"
Pagination#
paginate: 12
paginate_path: "/pg/:num/"
Customization#
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;
}
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;
}
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.