Package: bulrush
BulrushABulma-basedPelicanblog theme; clean, flexible and responsive.The icons are fromFont Awesomeby Dave Gandy. The pure HTML/CSS "Fork me
on GitHub" ribbon is based ongithub-fork-ribbon-cssby Simon Whitaker; I
modified it to be flatter.FeaturesResponsive 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 forOpen GraphandTwitter
Cardsmeta tags, giving enhanced display when sharing articles on social
media sites (note:currently only available forarticles 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 bepip install-ed.Mermaidintegration- so you can include generated diagrams.InstallationBulrush is available via thePython Package Index, so you can install it
with:pipinstallbulrushThe main exports from the module are:PATH: the path to the theme;FILTERS: the additional Jinja filters used by the theme; andENVIRONMENT: the Jinja environment required by the theme.You can use them in yourpelicanconf.pyas follows:importbulrushTHEME=bulrush.PATHJINJA_ENVIRONMENT=bulrush.ENVIRONMENTJINJA_FILTERS=bulrush.FILTERSOther RequirementsYou need to make the appropriate Pelican plugin,assets, available. One
way of achieving this is to make thepelican-pluginrepository a submodule of
your site, then you can add to yourpelicanconf.py:PLUGIN_PATHS=['pelican-plugins']PLUGINS=['assets']Note: referencing the Pelican plugins in this way may have implications for
the license of your project. Seehttps://github.com/textbook/bulrush/issues/17.AlternativeIf you don't want to install the theme from PyPI you can simply give Pelican a
relative path to the innerbulrush/directory. For example, addbulrushas
a submodule and set:THEME='bulrush/bulrush'In this case you will need to configure the environment and filters yourself
and ensure thatwebassetsisinstalled from PyPI.Additional Screenshots480 x 480px (mobile):840 x 480px (tablet):980 x 480px (desktop):SettingsAs well as thebasic settings, Bulrush supports the following options in
yourpelicanconf.py:Setting nameWhat does it do?BULRUSH_SHOW_SUMMARYA boolean, whether to show a summary rather than full article on index, category and tag pages. Defaults toFalse.DISQUS_SITENAMEEnables Disqus comments. Note that you should set up the full Comment Count Link, as no additional text is applied.GITHUB_URLEnables the "Fork me on GitHub" ribbon.GOOGLE_ANALYTICSSet to'UA-XXXX-YYYY'to activate Google Analytics.LICENSEA string or dictionary describing the license for the site; see details below.LINKSA list of tuples('Title', 'URL')for links to appear in the "blogroll" section of the sidebar.MAILCHIMPConfigure to activate aMailChimpsign-up form; see details below.MERMAIDActivateMermaiddiagram support; see details below.MENUITEMSA list of tuples('Title', 'URL')for items to appear in the tabbed navigation.SITESUBTITLEA subtitle to appear in the header.SOCIALA list of tuples('Title', 'URL')to appear in the "social" section of the sidebar.TWITTER_USERNAMEEnables Twitter meta-tags in the article and page headers.IfDISPLAY_CATEGORIES_ON_MENUis omitted or set explicitly toTrue, the
categories are shown in the tabbed navigation with anyMENUITEMS. IfDISPLAY_PAGES_ON_MENUis omitted or set explicitly toTrue, they are listed
in the sidebar with anySOCIALor otherLINKS.Social LinksAppropriate icons are provided in the sidebar for a range of sites in theSOCIALlink list. Have a look insocial.htmlto 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; otherwisea globe icon is used.MailChimp ConfigurationIf you're usingMailChimpto 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 fromthe signup form creator. Simply
look for the form action:<formaction="//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 setvalidation=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 addrewards_url, providing your uniqueMonkeyRewardsURL,
to enable a"Powered by MailChimp"link.License SettingsYou 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 thename,urland
optionalicon(must be a Font Awesome icon name, default isfile-text-o).The license details will be displayed at the bottom of the sidebar on every
page.Mermaid ConfigurationEnablesMermaiddiagram generation on your site, allowing diagrams to be
written in a Markdown-ish syntax. Simply wrap the code in apreelement
with themermaidclass:<preclass="mermaid">graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;</pre>If you setMERMAID = True, this will simply enable Mermaid with some default
settings:constdefaults={securityLevel:"loose",theme:"default",themeVariables:{fontFamily:'BlinkMacSystemFont, -apple-system, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Helvetica, Arial, sans-serif',},};To override these settings, or any of Mermaid's owndefault configurationyou can pass adictionaryinstead. This will be shallowly merged into the
defaults:MERMAID=dict(securityLevel="strict",theme="forest",# disables fontFamily override)Custom StylingIf any of the entries inEXTRA_PATH_METADATAhave'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 yourpelicanconf.py:# Static filesSTATIC_PATHS=['extra',...]EXTRA_PATH_METADATA={'extra/custom.css':{'path':'custom.css'},...}In useHere are few current users of Bulrush (or modified versions of it):textbookSimon SaysCodeRobotIf you'd like to be featured here (or are and would prefer not to be), feel
free to submit apull request.