_          _          _          _          _
    >(')____,  >(')____,  >(')____,  >(')____,  >(') ___,
      (` =~~/    (` =~~/    (` =~~/    (` =~~/    (` =~~/
jgs~^~^`---'~^~^~^`---'~^~^~^`---'~^~^~^`---'~^~^~^`---'~^~^~

Duckquill

Duckquill is a modern, pretty, and clean (and opinionated) Zola theme that has the purpose of greatly simplifying the process of rolling up your blog. It aims to provide all the needed options for comfortable writing, keeping the balance of it being simple.

Edit a bit of metadata and tweak some of the included graphics and have a blog up in minutes!

Note

Duckquill is made based on needs of my website, if you need some feature/configuration that doesn’t exist feel free to open an issue or better yet, pull request!

Installation

First, download this theme to your themes directory:

git clone https://codeberg.org/daudix/duckquill.git themes/duckquill

…or add as submodule for easy updating (recommended if you already have git setup on site):

git submodule init
git submodule add https://codeberg.org/daudix/duckquill.git themes/duckquill

Important

It is highly recommended to switch from the main branch to the latest release:

cd themes/duckquill
git checkout tags/v3.2.1

To update the submodule, simply switch to a new tag:

Tip

Check the changelog for all versions that came after the one you are using, there might be breaking changes that may need manual involvement.

git submodule update --remote --merge
git tag --list
git checkout tags/v3.2.1

Then, enable it in your config.toml:

theme = "duckquill"

Options

Duckquill offers some configuration options to make it fit you better; most options have pretty descriptive comments, so it should be easy to understand what they do.

Localization

Duckquill ships with a localization system based on one used in tabi, it’s very easy to use and quite flexible at the same time.

To add a translation, simply create a file in your site’s i18n directory called [lang-code].toml, e.g fr.toml. The language code should be ISO 639-1 or BCP 47.

Inside that file, copy-paste one of the existing translations from Duckquill and adapt it to your needs. You can also check tabi translation files for reference.

Additionally to translating Duckquill, you can also override the English stings by copy-pasting en.toml from Duckquill to the i18n directory of your website and adjusting the values to your liking.

Custom Stylesheets

To add your own or override existing styles, create a custom stylesheet and add it in the config.toml:

[extra]
stylesheets = [
  "YOUR_STYLE.css"
]

Additional stylesheets are expected it to be in the static directory. If you are using Sass they will be compiled there by default.

If for some reason overridden style is not respected, try using !important (don’t use it unless needed ). You can import styles from Duckquill using:

@use "../themes/duckquill/sass/NEEDED_FILE.scss";

You can also load stylesheets per page/section by setting them inside page’s front matter:

[extra]
stylesheets = [
  "YOUR_STYLE.css",
  "ALSO_YOUR_STYLE.css"
]

Primary Color

Duckquill respects chosen primary color everywhere, simply change the primary color in config.toml:

[extra]
primary_color = "COLOR_CODE"
primary_color_alpha = "COLOR_CODE"

Favicon

Files named favicon.png and apple-touch-icon.png are used as favicon and apple touch icon respectively. For animated favicon you can use APNG with png file extension.

Test Pages

In the Wild

This list is starting to get long, so click on it to expand it.

In Credits

Assets Sources

All sources for Duckquill’s assets are available here and licensed under CC BY-SA 4.0. The reason for not putting the sources in the same repo as Duckquill itself is simple: I want it to be as small as possible, so that repo cloning is fast and doesn’t make the site significantly heavier; this is also why the demo uses remote images instead of local copies.

Credits

Tools Used

As for the code formatter I use built-in VSCodium one. Prettier is good but I don’t like how it tries to make code fit in a very narrow column, this can be changed of course, but built-in formatter does it’s job so I don’t bother doing so.

Thanks To