2026-03-07 18:06:03 +01:00
2026-03-07 18:06:03 +01:00
2026-03-07 17:05:36 +01:00
2026-03-07 12:34:32 +01:00
2026-03-07 12:28:30 +01:00
2026-03-07 12:34:32 +01:00
2026-03-07 18:06:03 +01:00
2026-03-07 17:05:36 +01:00
2026-03-07 12:30:18 +01:00
2026-03-07 12:34:32 +01:00

kewt

Pronounced "cute"

Go to the website

kewt is a minimalist ssg inspired by werc and kew

It's meant to be a static site generator, like kew but use only default (POSIX) tooling, like werc (and definitely unlike kew)

Features

  • No dependencies
  • Supports many embed types
  • Automatic css variable replacement for older browsers
  • Automatic inlining and embedding of many filetypes with \![link] or \![alt](link)
  • Inline html support
  • MFM $font and \<plain> tags
  • Admonition support (that's what the blocks like the warning block below are called)

If you want to force a file to be inlined, use \!![] instead of \![]

Usage

./kewt.sh --help
./kewt.sh --new [title]
./kewt.sh --from <src> --to <out>
./kewt.sh [src] [out]

--new [title] creates a new site directory with a copied site.conf and a default index.md.

site.conf

title = "kewt"
style = "kewt"
dir_indexes = true
single_file_index = true
flatten = false
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
logo = ""
display_logo = false
display_title = true
logo_as_favicon = true
favicon = ""
  • title site title
  • style style file name from ./styles (without .css)
  • dir_indexes generate directory index pages when missing index.md
  • single_file_index if a directory has one markdown file and no index.md, use that file as index.html
  • flatten flatten sidebar directory levels
  • footer footer html/text shown at the bottom of pages
  • logo logo image path (used in header if enabled)
  • display_logo show logo in header
  • display_title show title text in header
  • logo_as_favicon use logo as favicon
  • favicon explicit favicon path (used when logo_as_favicon is false or no logo is set)

Embeds

  • \![link]:
    • local image/audio/video files are embedded as media tags
    • local text/code files are inlined directly
    • global image/audio/video links are embedded as media tags
    • other global links are embedded as <iframe>
  • \![alt](link) works the same, with alt used for images
  • \!![] and \!![alt](link) force inline local file contents

Credits

Warning

![WARNING] Most of this was coded at night, while sleepy and a bit sick, and after walking for about 4 hours around a forest, so...

Description
A POSIX-compliant SSG
https://kewt.krzak.org
Readme 356 KiB
v1.0.2 Latest
2026-03-11 13:57:34 +01:00
Languages
Awk 62.2%
Shell 26.2%
CSS 11%
HTML 0.6%