A minimal, console‑inspired Jekyll theme for hackers, developers and other cool kids.
Note: The theme also includes a Nord variant (style: nord
).
dark
(default), light
, hacker
, nord
prefers-color-scheme
header_pages
If you are new to Jekyll, skim the official docs: https://jekyllrb.com/docs/
Add to your site's _config.yml
:
remote_theme: b2a3e8/jekyll-theme-console
# Optional but recommended
plugins:
- jekyll-seo-tag
Tip: For full local builds with a remote theme, you may need the jekyll-remote-theme
plugin.
Gemfile
:gem "jekyll-theme-console"
bundle
# _config.yml
theme: jekyll-theme-console
plugins:
- jekyll-seo-tag
To update later: bundle update
.
Add these to _config.yml
as needed:
header_pages
: list of page paths to show in the top menufooter
: HTML string rendered in the footerstyle
: dark
(default), light
, hacker
, or nord
listen_for_clients_preferred_style
: true
to auto‑switch using the OS preferencedisable_google_fonts
: true
to avoid requests to Google Fontstracking
: generic tracker configuration (see Security & CSP below)csp_extra
: extra CSP directives to append to the built‑in policyExample:
header_pages:
- index.md
- about.md
style: dark # dark (default), light, hacker, or nord
listen_for_clients_preferred_style: true # false (default) or true
footer: 'follow us on <a href="https://twitter.com/xxx">twitter</a>'
disable_google_fonts: false
# Generic tracking (optional; loads only in production)
# tracking:
# script_src:
# - https://cdn.example.com/tracker.js
# async: true # default true
# defer: false # default false
# # Optional inline init snippet (requires CSP allowance if used)
# # init: |
# # window.myTracker=window.myTracker||function(){(window.myTracker.q=window.myTracker.q||[]).push(arguments)};
# # myTracker('init', { siteId: '12345' });
Additional page variables supported by the theme:
title
: page titlelang
: page language (defaults to en
)robots
: value for the robots meta tag (e.g., NOINDEX
)Follow these steps to customize:
_layouts
for HTML changes_sass
and assets
_sass/base.scss
_sass/_dark.scss
, _sass/_light.scss
, _sass/_hacker.scss
, _sass/_nord.scss
<link>
tags; set disable_google_fonts: true
to avoid external font requestsOptional tweaks:
Enable Sass compression in _config.yml
:
sass:
style: compressed
Add jekyll-feed
to generate an Atom/RSS feed.
The theme ships with a strict, practical Content Security Policy. By default it allows:
https:
and data:
URIsExtend the policy as needed via _config.yml
:
csp_extra: "frame-src https:;"
Examples:
Matomo at https://analytics.example.com
:
tracking:
script_src:
- https://analytics.example.com/matomo.js
# If you add an inline init snippet via `tracking.init`, also include 'unsafe-inline' in script-src.
csp_extra: "script-src 'self' https://analytics.example.com 'unsafe-inline'; connect-src 'self' https://analytics.example.com; img-src 'self' https://analytics.example.com;"
Plausible at https://plausible.example.com
:
tracking:
script_src:
- https://plausible.example.com/js/plausible.js
csp_extra: "script-src 'self' https://plausible.example.com; connect-src 'self' https://plausible.example.com;"
Tip: To remove the top border in the menu:
.menu { border-top: none; }
This repository is a standard Jekyll site for local development of the theme.
docker compose up --build
Open http://localhost:4000
.
bundle install
bundle exec jekyll serve
Open http://localhost:4000
.
When the theme is released, only files in _layouts
, _includes
, _sass
, and assets
tracked by Git are bundled. To include additional paths, edit the regexp in jekyll-theme-console.gemspec
.
Open source under the MIT License.