JekyllBlog

jekyll-98 — Jekyll Blog Template

By queenkjuul

A Jekyll blog theme based on XP.css that presents post lists, category pages, and social links in a Windows 98 interface style.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Windows 98 interface style implemented with XP.css (a fork of 98.css)

02

Almost no JavaScript; usable without scripts

03

Built-in pagination, Atom feed, social links, and category index pages

04

The repository itself is a runnable Jekyll site that can be cloned or forked directly

05

Supports both gem theme and jekyll-remote-theme integration

06

Post lists can be rendered as an Explorer-style tree using {:.tree-view}

Template Details

jekyll-98 is a Jekyll blog theme whose visual style comes from XP.css, a fork of 98.css, aiming to recreate the Windows 98 look in a mobile-friendly blog format. The theme uses almost no JavaScript, and the README states it should work even with scripts disabled.

The theme includes pagination, Atom feed generation, social link display, and index pages generated by category. The repository itself is a runnable Jekyll site that can be cloned or forked, then configured, populated with posts, and deployed; it also supports use as a gem theme or via jekyll-remote-theme in an existing site.

There are several explicit limitations: category index pages depend on GitHub Actions deployment, and using GitHub Pages' legacy "deploy from branch" method will cause desktop_categories and show_categories links to point to 404s; desktop icons and start menu items should total no more than 5–7, otherwise the layout becomes strange; if the first line of a post repeats the title, the title will appear twice because the post layout already includes a title header.

JekyllBlog

Is it right for your project?

Use Cases

  • Building a personal blog with a retro Windows 98 interface
  • Changing the theme appearance of an existing Jekyll site via remote_theme
  • Organizing and browsing posts by topic with category index pages
  • Deploying a static blog on GitHub Pages via GitHub Actions

Suitable For

  • Individual authors who write blogs with Jekyll and want a retro desktop style
  • Users willing to configure site information, categories, and social links via _config.yml
  • GitHub Pages users who accept deployment via GitHub Actions rather than deploy from branch

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Quick start: after git clone, run bundle, preview with bundle exec jekyll serve, and build with bundle exec jekyll build.

  2. 2

    To install as a gem theme: bundle add jekyll-98 and set theme: jekyll-98 in _config.yml.

  3. 3

    When using remote_theme, provide _config.yml at the root of the deployment branch and specify layout: post for files such as README.

  4. 4

    If you do not customize social links, set github, youtube, and twitch under jekyll-98.social_links to false in _config.yml; otherwise the theme author's social accounts will be displayed.

  5. 5

    Category index pages require deployment via GitHub Actions; if you continue using deploy from branch, disable desktop_categories and show_categories.

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version of the public repository under the MIT license; the free scope applies to that version's code and does not imply that external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and liability limitations are governed by the original license and applicable law.

Additional costs & items to verify

  • Category link functionality depends on GitHub Actions deployment; if using GitHub Pages' deploy from branch method, links generated by show_categories and desktop_categories will point to 404s, so you must switch to GitHub Actions or disable these features.
  • If you do not configure social links yourself, the theme author's social accounts will be displayed on your site by default; set github, youtube, and twitch under jekyll-98.social_links to false in _config.yml to remove them.
  • When desktop icons and start menu items total more than 5–7, the layout becomes abnormal, so the number of desktop_categories and site_links must be controlled.
  • If the first line of a post repeats the title, it will be displayed twice alongside the title header included in the post layout; avoid using a heading on the first line.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; do not judge them solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

show_categories: true # show category links in post lists - REQUIRES GITHUB ACTIONS TO WORK WITH GITHUB PAGES, SEE README

Original README

Otherwise, my own socials will appear on your site :cringe:

Original README

Note that things might get weird layout wise if you have more than 5-7 desktop icons total

Original README

if the first line of your post is a header containing the title, the title will appear twice

Original README
https://github.com/queenkjuul/jekyll-98/blob/main/LICENSE.txthttps://github.com/queenkjuul/jekyll-98/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 77 / 100
Technologies
Jekyll
Website type
Blog
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2025-01-02
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Jekyll as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: e5d9510f0283569c0526154a5513c56466d77352040e8a407de173da4cc3a1e6

2026-10-02T10:58:52.652Z

Source file / repository
# jekyll-98

[***See it in action right here!***](https://queenkjuul.github.io/jekyll-98/)

A theme for Jekyll built using the [XP.css](https://github.com/botoxparty/XP.css) fork of [98.css](https://github.com/jdan/98.css) which aims to recreate the aesthetics of Windows 98 in a mobile-friendly, customizable blog format.

*Almost* no JavaScript, but should be perfectly usable without. Ships with pagination, atom feed generation, automatic social media links, and per-category index pages out of the box.

![screenshot of jekyll-98](https://raw.githubusercontent.com/queenkjuul/jekyll-98/main/assets/screenshot.png)

## Installation

### Quick Start

This repo is actually a fully functional jekyll site! You can clone or fork this repo, update the config with your own values, add some posts, et voila! You have a website ready to be hosted with Github Pages or built and served on your own host.

If you use this repo as a base, make sure your GitHub Repo > Settings > Pages > Source is set to "GitHub Actions." The `main` branch is deployed by default. Edit `.github/workflows/jekyll.yml` to change branches. [See note below about GitHub Actions](#github-pages--jekyll-remote-theme)

```sh
git clone https://github.com/queenkjuul/jekyll-98
cd jekyll-98
bundle
bundle exec jekyll serve  # preview
bundle exec jekyll build  # build
```

### GitHub Pages / jekyll-remote-theme

In your site's _config.yml, add:

```yml
remote_theme: queenkjuul/jekyll-98
```

You will need a `_config.yml` file in the root of your deployment branch as well. All it needs to contain is:

```yaml
defaults:
  - scope:
      path: "" # an empty string here means all files in the project
    values:
      layout: "post"
```

Without this, your README.md file will not use any particular layout, and will just render plain text onto an empty desktop. For a more complete example, see [here](https://github.com/queenkjuul/spotify97/blob/main/_config.yml)

If you are not adding your own social media links to `_config.yml` then you will also need to add this:

```yaml
jekyll-98:
  social_links:
    github: false
    youtube: false
    twitch: false
```

Otherwise, my own socials will appear on your site :cringe: (if anyone knows a better way to override these by default let me know)

#### GitHub Pages Deployment

**NOTE:** the "deploy from branch (classic)" GitHub Pages deployment method FAILS to generate category index pages. However, the default Jekyll GitHub Action works. [See instructions from GitHub here and set up your site's repo to publish with the default Jekyll workflow](https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#publishing-with-a-custom-github-actions-workflow). 

Using the legacy "deploy from branch" option will not break the site, but it will break the [`desktop_categories`](#theme-settings) and [`show_categories`](#settings) functions. If they are left enabled, the site will build and deploy, but those links will lead to 404s, so it's best to disable them.

### Manual installation

`jekyll-98` is now available as a standard `gem` theme. You can install it to your site with `bundle add jekyll-98` and add this line to your Jekyll site's `_config.yml`:

```yaml
theme: jekyll-98
```

## Usage

Theme should provide sane defaults, but there's lots to customize. For full configuration options, refer to [_config.yml](https://github.com/queenkjuul/jekyll-98/blob/main/_config.yml). Add whatever settings you want *to your site's _config.yml*.

### Posts

#### Titles and excerpts

The default Post layout includes a header containing the post title as defined in the front matter. This means that if the first line of your post is a header containing the title, the title will appear twice. Keep this in mind. Also, Jekyll will by default use the first block of your post as its excerpt, so it's best to avoid first-line headers. You can always define an excerpt explicitly in the front matter like so:

```yml
---
title: Post Title
excerpt: this is what will show on the home page (if show_excerpts is enabled)
---
```

#### List formatting

If you add `{:.tree-view}` before your bulleted lists, they will render in Windows Explorer-style tree view mode. I'd like to do this automatically, but I don't know how to apply a class automatically to the kramdown/jekyll output. If you know how, get in touch! Open an issue, raise a PR, or (please don't really) email me.

Example:

```md
{:.tree-view}
 - First Item
    - Second Item
 - Third Item
```

{:.tree-view}
- First Item
  - Second Item
- Third Item

#### Front matter

You will want to define the following in your posts' front matter:

- Required:
  - `title: string` - as mentioned above, will be displayed as a top-level header in the post page layout, as well as in lists
  - `layout: post` - you probably want to leave this
  - `date: YYYY-MM-DD HH:MM:SS +/-0000` - time zone offset at end. Only for internal use, actual formatted date shown to users is formatted per `jekyll-98.date_format` in `_config.yml`
- Optional
  - `categories: string1 string2 ...` - space-separated list of post categories. Posts can be browsed by category with links on the homepage. Uses [jekyll-category-pages](https://github.com/field-theory/jekyll-category-pages).
  - `icon: icon_string` - `icon_string` is the filename of any icon in the jekyll-98 `assets/icons` folder, minus the extension (so omit `.png`). Optional. Unfortunately for now, can't be automatically set by category. Will appear in any post list.
  - `excerpt: string` - excerpt to be shown in post lists if excerpts is enabled in `_config.yml`. If not defined, jekyll will use the first paragraph of your post.

## Configuration

### Basic site info

```yaml
title: blog name
author:     # ***PUBLIC BY DEFAULT!***
    name: &name your name           # need &name prefix for Contact page to work
    email: &email [email protected]    # need &email prefix for Contact page
description: what's the deal with websites?
```

Basic Jekyll/Pages info from the template, such as title, author, and description. Author is a parent node, with child nodes name and email. Site title is used everywhere. Description appears on Home and About pages. Author info only shows up (optionally) on the Contact page. `title`, `author`, and `description` should be defined at the root level of your `_config.yml`

### Settings

```yaml
show_excerpts:  false       # show post excerpts in post lists
show_categories:  true     # show category links in post lists - REQUIRES GITHUB ACTIONS TO WORK WITH GITHUB PAGES, SEE README
paginate:       3           # set to false to disable, numbers above 3 might be weird on mobile
paginate_path:  /page/:num  # change if you know what you're doing
google_analytics: asdf1234  # your google analytics key
```

Enabling excerpts will show the first bit of a post on the home page. This can be a little unreliable with the layout of the posts list, so either disable (default) or experiment. You can define an explicit excerpt (instead of letting Jekyll guess) by defining `excerpt` in the post's front matter (see [Posts](#posts))

`show_categories` is NOT compatible with the default "deploy from a branch" GitHub Pages deployment method. Instead, [use a GitHub Action](#github-pages-deployment)

### Theme settings

Theme settings are defined within the `jekyll-98` node of your _config.yml

```yaml
title: ...
author: ...
...
jekyll-98:
    date_format: ...
    ...
```

#### `date_format`

change how timestamps are shown - refer to [https://shopify.github.io/liquid/filters/date/](https://shopify.github.io/liquid/filters/date/) if you want to customize this

#### `icon`

you can define a different icon to use for the "my computer" homepage icon on the desktop here.

#### `desktop_categories`

Categories defined in this array will generate desktop icons and start menu links, assuming there are posts that exist that are tagged with that category. Note that things might get weird layout wise if you have more than 5-7 desktop icons total (`desktop_categories` and `site_links` combined)

Not compatible with the default "Deploy from a branch" GitHub Pages deployment method. [Use the default Jekyll deployment Action instead](#github-pages-deployment)

#### `site_links`

You can define additional links to include on the desktop and start menu. Links must have a title, url, icon, and alt text/description. the `alt` text is both the alt-text for the actual icon image tag (for screen readers) but also appears in the start menu. The start menu does not wrap text, so long descriptions might stretch the menu out to goofy proportions.

```yml
jekyll-98:
    site_links:
        - title: 'Name'
          url: https://example.com
          icon: document    # see assets/icons
          alt: 'Descriptive text'
```

#### `social_links`

All available sites/icons are listed in the theme [`_config.yml`](https://github.com/queenkjuul/jekyll-98/blob/main/_config.yml). Define a username, and the site will appear in the taskbar, as well as the Contact page (if enabled)

#### `contact`

By default, the contact page will display the name and email set in the site config. Commenting/removing these lines will prevent the Contact page from being generated (and links to it will be removed)

See [`_config.yml`](https://github.com/queenkjuul/jekyll-98/blob/main/_config.yml) for details on setting up additional info beyond name + email.

#### `about`

You can add any info you like to the default About page. The About page will automatically include your site description. Additional lines defined in the `jekyll-98.about` array will appear in a bulleted list on the About page, below the description.

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/queenkjuul/jekyll-98. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.

## Development

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

Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.

When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled.
To add a custom directory to your theme-gem, please edit the regexp in `jekyll-98.gemspec` accordingly.

## License

The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).

social icons from https://github.com/edent/SuperTinyIcons

credit Alex Meub https://win98icons.alexmeub.com/
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.