Skip to main content

Bulrush

A Bulma-based Pelican blog theme; clean, flexible and responsive.

Screenshot - Bulrush at 1440px

The icons are from Font Awesome by Dave Gandy. The pure HTML/CSS "Fork me on GitHub" ribbon is based on github-fork-ribbon-css by Simon Whitaker; I modified it to be flatter.

Features

  • Responsive design - four column layout on desktop (≥980px), three column on tablet (≥769px), single column on mobile. Tabbed navigation bar collapses into drop-down "burger menu" on mobile.

  • Meta tagging functionality - support for Open Graph and Twitter Cards meta tags, giving enhanced display when sharing articles on social media sites (note: currently only available for articles and pages).

  • Printable layouts - the navigation is hidden when printed, avoiding wasted space.

  • Custom styling - additional CSS files can be included to customise the default styling.

  • Service integrations - including Disqus, GitHub, Google Analytics and MailChimp.

  • PyPI package available - so it can be pip install-ed.

Installation

Bulrush is available via the Python Package Index, so you can install it with:

pip install bulrush

The main exports from the module are:

  • PATH: the path to the theme;
  • FILTERS: the additional Jinja filters used by the theme; and
  • ENVIRONMENT: the Jinja environment required by the theme.

You can use them in your pelicanconf.py as follows:

import bulrush

THEME = bulrush.PATH
JINJA_ENVIRONMENT = bulrush.ENVIRONMENT
JINJA_FILTERS = bulrush.FILTERS

Other Requirements

You need to make the appropriate Pelican plugin, assets, available. One way of achieving this is to make the pelican-plugin repository a submodule of your site, then you can add to your pelicanconf.py:

PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['assets']

Note: referencing the Pelican plugins in this way may have implications for the license of your project. See https://github.com/textbook/bulrush/issues/17.

Alternative

If you don't want to install the theme from PyPI you can simply give Pelican a relative path to the inner bulrush/ directory. For example, add bulrush as a submodule and set:

THEME = 'bulrush/bulrush'

In this case you will need to configure the environment and filters yourself and ensure that webassets is installed from PyPI.

Additional Screenshots

  • 480 x 480px (mobile):

    Screenshot - Bulrush at 480px

  • 840 x 480px (tablet):

    Screenshot - Bulrush at 840px

  • 980 x 480px (desktop):

    Screenshot - Bulrush at 980px

Settings

As well as the basic settings, Bulrush supports the following options in your pelicanconf.py:

Setting name What does it do?
DISQUS_SITENAME Enables Disqus comments. Note that you should set up the full Comment Count Link, as no additional text is applied.
GITHUB_URL Enables the "Fork me on GitHub" ribbon.
GOOGLE_ANALYTICS Set to ‘UA-XXXX-YYYY’ to activate Google Analytics.
LICENSE A string or dictionary describing the license for the site; see details below.
LINKS A list of tuples ('Title', 'URL') for links to appear in the "blogroll" section of the sidebar.
MAILCHIMP Configure to activate a MailChimp sign-up form; see details below.
MENUITEMS A list of tuples ('Title', 'URL') for items to appear in the tabbed navigation.
SITESUBTITLE A subtitle to appear in the header.
SOCIAL A list of tuples ('Title', 'URL') to appear in the "social" section of the sidebar.
TWITTER_USERNAME Enables Twitter meta-tags in the article and page headers.

If DISPLAY_CATEGORIES_ON_MENU is omitted or set explicitly to True, the categories are shown in the tabbed navigation with any MENUITEMS. If DISPLAY_PAGES_ON_MENU is omitted or set explicitly to True, they are listed in the sidebar with any SOCIAL or other LINKS.

Social Links

Appropriate icons are provided in the sidebar for a range of sites in the SOCIAL link list. Have a look in social.html to see which titles this applies to. If none of the sites are a match, then:

  • if the second, URL element in the tuple starts with 'mailto:', an envelope icon is used; otherwise
  • a globe icon is used.

Screenshot - Social icons in sidebar

MailChimp Configuration

If you're using MailChimp to handle a mailing list for your blog, you can configure a subscription form in the sidebar. You need to set three values to enable this, which you can get from the signup form creator. Simply look for the form action:

<form action="//user.region.list-manage.com/subscribe/post?u=abc123&amp;id=def456" ...

and extract the relevant sections:

MAILCHIMP = dict(
    domain='user.region.list-manage.com',
    user_id='abc123',
    list_id='def456',
    validation=True,  # enable jQuery validation
)

If you set validation=False (or leave it out entirely) you will reduce the page load (as it won't need 140KB of JavaScript) but won't get inline form submission or email validation.

You can also add rewards_url, providing your unique MonkeyRewards URL, to enable a "Powered by MailChimp" link.

License Settings

You can provide one of two options to specify the license for your content:

  • License name (str): The name of the license to display. Unless otherwise specified, a default icon (file-text-o) will be used and the entry will link to the current page.

    Creative Commons license names (e.g. 'CC BY-SA 4.0') are automatically recognised and an appropriate icon and link are generated.

  • License definition (dict): A dictionary specifying the name, url and optional icon (must be a Font Awesome icon name, default is file-text-o).

The license details will be displayed at the bottom of the sidebar on every page.

Custom Styling

If any of the entries in EXTRA_PATH_METADATA have 'path's ending with '.css' they will be included in the base template, allowing the site style to be overridden as required. For example, in your pelicanconf.py:

# Static files
STATIC_PATHS = [
    'extra',
    ...
]
EXTRA_PATH_METADATA = {
    'extra/custom.css': {'path': 'custom.css'},
    ...
}

In use

Here are few current users of Bulrush (or modified versions of it):

If you'd like to be featured here (or are and would prefer not to be), feel free to submit a pull request.

Release files for bulrush 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bulrush 0.3.2
File Size Uploaded
bulrush-0.3.2.tar.gz 18.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for bulrush 0.3.2
File Interpreter ABI Platform
bulrush-0.3.2-py3.7.egg Legacy Egg format - - Details
bulrush-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 62.2 kB

Release files / bulrush-0.3.2.tar.gz

Download URL bulrush-0.3.2.tar.gz
Size 18.1 kB
Tags Source
SHA-256 checksum
How to use checksums
12e9fe3cea30cd56261cedc5c074cf795e5df24772ad45b8925c858ebee86d56
BLAKE2b-256 checksum
How to use checksums
bbce37276aa276e54365f14f380120b6ff5e24da6eecc7a0555c4ccbfd0dc6ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1

Release files / bulrush-0.3.2-py3.7.egg

Download URL bulrush-0.3.2-py3.7.egg
Size 22.5 kB
Tags Egg
SHA-256 checksum
How to use checksums
46d71fe65da7501ecb3f18a08d25c30498637cb4ab0c74f872d7e8f0d4143f02
BLAKE2b-256 checksum
How to use checksums
670f1aa88bf5fd0ce865295df7b7a6b5367c8796505ed7045319b5b6f5f02792
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1

Release files / bulrush-0.3.2-py3-none-any.whl

Download URL bulrush-0.3.2-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
377f360ec71bef2e33e3bda196faa5508f3d6f57306f4e96a5c95e204d565ed2
BLAKE2b-256 checksum
How to use checksums
b17208f229e698953051944491beeace2c4f6f55c6eca6ae63e1c7c4946d8d9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1

Release history Release notifications | RSS feed

0.6.3

3 release files

0.6.2

3 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

3 release files

0.4.0

3 release files

This release

0.3.2 This release

3 release files

0.3.1

3 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.9

2 release files

0.0.8

3 release files

0.0.7

3 release files

0.0.6

3 release files

0.0.5

3 release files

0.0.4

3 release files

0.0.3

3 release files

0.0.2

3 release files

0.0.1

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page