Package: plumage
Plumage is a clean and tidy theme forPelican, a
static site generator.I initially created this theme formy blog, but
it is now generic enough to be used by anyone.FeaturesStandard Pelican views:ArticleCategoriesTiered tag listCollapsable yearly archivesTagged articlesAuthorsFaceted article browsingProjects template:Code showcase (source)Videos showcase (source)Themes showcase (source)Based onBootstrap v4.Code syntax highlightingwith30+ styles.Site-wide static search viaStork.Bare YouTube links in articles gets rendered as embedded videos:Direct link to edit articles on GitHub:Magnifying glass overlays on images and zoom:External assets (Bootstrap, Jquery, etc...) usesCDNjs.Disqus integration:PluginsPlumage has built-in support for the following plugins and extensions:Plugin nameTypeStatusNotespelican-image-processPelican pluginOptionalEmbed a hack tofix parsing of external images.pelican-neighborsPelican pluginOptionalpelican-related-postsPelican pluginOptionalpelican-similar-postsPelican pluginOptionalpelican-searchPelican pluginOptionalpelican-webassetsPelican pluginRequiredmarkdown.extensions.admonitionMarkdown extensionOptionalRe-style admonitions intoalerts.markdown.extensions.codehiliteMarkdown extensionOptionalStyle highlighted code with Pygment style.markdown.extensions.tocMarkdown extensionOptionalAdds permalink anchors to article's subtitles.pymdownx.emojiMarkdown extensionOptionalStyleemojioneset for proper integration into text.pymdownx.highlightMarkdown extensionOptionalStyle highlighted code with Pygment style.typogrifyPelican builtinOptionalStyle ampersands.InstallationInstall this theme using themainbranch of this Github repo.If you're already usingpoetryto manage dependency of Pelican project, you need to run justpoetry add git+https://github.com/kdeldycke/plumage#mainOr, can manually add the following line in the[tool.poetry.dependencies]section of thepyproject.tomlfile.plumage = {git = "https://github.com/kdeldycke/plumage", rev = "main"}Once added, runpoetry updateto reflect this new dependency.Note:If you haven't usedpoetryin the project yet, you need to do so before addingplumage.
You can do that by firstinstallingpoetryon your system and then runningpoetry initinside the project folder.Then, once you're done installing theplumagemodule, update yourpelicanconf.pyfile to reference the module and requied extra plugins:importplumageTHEME=plumage.get_path()PLUGINS=[(…)"pelican.plugins.webassets",]On first run, Plumage will try to installNode.js package dependenciesvia thenpmCLI:$poetryrunpelican--verbose./content(…)WARNING: postcss CLI not found.-> Install Plumage's Node.js dependencies from (…)/plumage/package.json:|   {|     "name": "plumage-webassets-pipeline",|     "description": "Plumage depdencies for the webassets compilation pipeline.",|     "dependencies": {|       "postcss-cli": "^8.3.1"|     }|   }|up to date, audited 96 packages in 984msfound 0 vulnerabilities-> postcss CLI found at (…)/plumage/node_modules/.bin/postcss(…)SettingsPlumage can be customized by adding these optionnal parameters to yourpelicanconf.pyfile:Setting nameDefault valueDescriptionARTICLE_EDIT_LINKGenerate an edit link besides each article. Can use%(slug)sto include dynamic article's slug in the link.CODE_STYLE"monokai"Pygments' style ID. Choose one frompoetry run pygmentize -L styles.COPYRIGHTAdditional copyright statement to add in the third column of the footer.DISCLAIMEROveride the disclaimer notice that gets displayed at the fourth column of the footer.DISQUS_SITENAMEPelican can handle Disqus comments. Specify the Disqus sitename identifier here.FAVICON_LINKSTrueFetch link's icons fromGoogle's favicons webservice.GOOGLE_ANALYTICSSet toUA-XXXXXX-YProperty's tracking ID to activate Google Analytics.LEFT_SIDEBARHTML content to put as-is in the left sidebar.LINKS_WIDGET_NAME"Links"Allows override of the name of the links widget.LINKSA list of tuples (Title, URL) for links to appear in the second column of the footer.MANUAL_LINKSWhen enabling this, you must pass the links (in LINKS & SOCIAL settins) not as tuples anymore, but as list, where every entry is formatted as you likeMENUITEMSA list of tuples (Title, URL) for additional menu items to appear at the beginning of the main menu.RIGHT_SIDEBARHTML content to put as-is in the right sidebar.SITESUBTITLEA subtitle to appear in the header.SITE_THUMBNAIL_TEXTText displayed behind site's thumbnail.SITE_THUMBNAILSite's thumbnail URL as displayed in the header. Should be a square image of at least 80x80 pixels.SOCIAL_WIDGET_NAME"Social"Allows override of the name of the “social” widget.SOCIALA list of tuples (Title, URL) to appear in the first columns of the footer.STORK_SEARCHFalseActivateStorkstatic search engine. Requires theofficial Pelican'ssearchplugin.Most of theseparameters are similar tonotmyidea's(Pelican's default
theme). For usage example, please have a look intomy ownpelicanconf.py.The theme is also sensible to this list ofstandard Pelican parameters:ARCHIVES_SAVE_ASAUTHORAUTHOR_SAVE_ASAUTHORS_SAVE_ASCATEGORIES_SAVE_ASCATEGORY_FEED_ATOMCATEGORY_FEED_RSSDEFAULT_LANGDEFAULT_PAGINATIONDISPLAY_PAGES_ON_MENUDISPLAY_CATEGORIES_ON_MENUFEED_ALL_ATOMFEED_ALL_RSSFEED_ATOMFEED_DOMAINFEED_RSSPAGINATION_PATTERNSSITENAMESITEURLTAG_FEED_ATOMTAG_FEED_RSSTAGS_SAVE_ASCode Syntax HighlightingThere is two alternatives, all relying onPygments syntax
highlighter, sharing most features, with some
differences:FeatureCodeHiliteHighlightClean copy and paste✅✅Line numbering✅✅Right justified numbers✅✅Line start offset✅✅Multiple line highlight✅✅Nth line highlight✅✅Filename✅❌Long line wraps✅❌Long line overflow (scrollbar)❌✅Sticky left gutter❌✅Line anchorsWIP @ Pygments❌Python Markdown CodeHiliteJust add this configuration topelicanconf.py, which allows us to pass
extra options toPygments' HTML formatter:MARKDOWN={"extension_configs":{(…)"markdown.extensions.codehilite":{"css_class":"codehilite",# Default"linenums":True,"linenos":"inline","linespans":"coderow","lineanchors":"L","anchorlinenos":True,"wrapcode":True,},"markdown.extensions.fenced_code":{},(…)},}This will render this:```{.shell-session hl_lines="8 11" linenostart="5" linenospecial="3" filename="~/code/foo.log"}
$ cat ./example.markdown
This is the content of the file:
→ java
→ rust
→ haskell
→ javascript

$ cat ./addendum.txt
This is extra content.

$ find ./ -iname "*.markdown" -print -exec bash -c 'cat ./addendum.txt >> "{}"' \;
./example.markdown
$ cat ./example.markdown
This is the content of the file:
→ java
→ rust
→ haskell
→ javascript

This is extra content.

```Into this:PyMdown Extensions' HighlightJust add this configuration to yourpelicanconf.py:MARKDOWN={"extension_configs":{(…)"pymdownx.highlight":{"linenums":True,"linenums_style":"pymdownx-inline",},"pymdownx.superfences":{},(…)},}This will render this:```{.shell-session hl_lines="8 11" linenums="5 1 3" filename="~/code/foo.log"}
$ cat ./example.markdown
This is the content of the file:
→ java
→ rust
→ haskell
→ javascript

$ cat ./addendum.txt
This is extra content.

$ find ./ -iname "*.markdown" -print -exec bash -c 'cat ./addendum.txt >> "{}"' \;
./example.markdown
$ cat ./example.markdown
This is the content of the file:
→ java
→ rust
→ haskell
→ javascript

This is extra content.

```Into this:FAQHow can I disable the zoom on images?All images of an article are zoomable by default. You can deactivate the
magnifying glass per-image by adding anoZoomCSS class. So instead of the
following Markdown code:![Image title](/folder/image.png)You have to use the following template to deactivate the zoom of an image:![Image title](/folder/image.png){: .noZoom}Why is the search not working?Theofficial Pelican'ssearchpluginneeds to
be installed.TODO: Activate search field automaticcaly if the plugin is present.LicenseThis software is licensed under theGNU General Public License v2 or later
(GPLv2+).Copyright (C) 2012-2020Kevin Deldyckeandcontributors.Third-party assetsThe theme embed copies of some external softwares, scripts, libraries and
artworks:jQuery MGlass v1.1
Copyright (c) 2012 Younès El Biache
Distributed under a MIT license
Source: https://github.com/younes0/jQuery-MGlassFabric (Plaid)
Copyright (c) 2012 James Basoo
Distributed under a Creative Commons Attribution-ShareAlike 3.0 Unported license
Source: https://subtlepatterns.com/fabric-plaid/Cream paper
Copyright (c) 2012 Devin Holmes
Distributed under a Creative Commons Attribution-ShareAlike 3.0 Unported license
Source: https://subtlepatterns.com/cream-paper/Feather-alt icon v5.1.0
Copyright (c) 2020 Font Awesome project
Distributed under a Creative Commons Attribution 4.0 International license
Source: https://fontawesome.com/icons/feather-alt?style=solidMacro shot of White Feather
Source: https://unsplash.com/photos/Sw7f58YJbc0