blue-penguin-theme

This commit is contained in:
Tyrel Souza 2023-09-26 16:21:53 -04:00
parent 7ab59fc747
commit 9ef149a79c
No known key found for this signature in database
GPG Key ID: F3614B02ACBE438E
28 changed files with 1047 additions and 14 deletions

View File

@ -13,14 +13,16 @@ I was talking to a `friend <https://fredeb.dev>`_ about updating from ``exa`` to
I did this by showing the following picture:
.. figure:: {static}/images/2023/09/26_which.png
:alt: Screnshot of shell text saying "Which LS" and then the line under it saying "/usr/bin/ls"
.. code:: shell
$ which ls
/usr/bin/ls
Because I expected it to show me which alias was being pointed to by ``ls``.
My friend pointed out that "Which doesn't show aliases, it only points to files" to which I replied along the lines of "What? No way, I've used ``which`` to show me aliases and functions loads of times."
And promptly sent a screenshot of my system NOT showing that for other aliases I have set up. Things then got conversational and be being confused, to the point of me questioning if "Had I ever successfully done that? Maybe my macbook is set up differrently" and went and grabbed that.
And promptly sent a screenshot of my system NOT showing that for other aliases I have set up. Things then got conversational and me being confused, to the point of me questioning if "Had I ever successfully done that? Maybe my macbook is set up differrently" and went and grabbed that.
Friend then looked at the man page for which, and noticed that there's the ``--read-alias`` and ``--read-functions`` flags on ``which``, and I didn't have those set.
I then swapped over to bash "Maybe it's a bash thing only? I'm using Fish".
@ -32,6 +34,7 @@ It turns out that ZSH's ``which`` is equivalent to the ZSH shell built-in ``when
After running ``/usr/bin/zsh`` and sourcing my aliases (I don't have a zshrc file anymore, I need to set that back up), I was able to settle my fears and prove to myself that I wasn't making things up. There is a which which shows you which aliases you have set up, which is default for ZSH.
.. figure:: {static}/images/2023/09/26_ls.png
:alt: Screnshot of shell text saying "Which LS" and then the line under it saying "/usr/bin/ls"
.. code:: shell
$ which ls
ls: aliased to exa -lhFgxUm --git --time-style long-iso --group-directories-first

View File

@ -4,7 +4,7 @@ Blogroll
:author: tyrel
:category: Blogroll
:slug: blogroll
:status: published
:status: draft
* Blogs I Read

View File

@ -4,7 +4,7 @@ References
:author: tyrel
:category: References
:slug: references
:status: published
:status: draft
Blog Citations
~~~~~~~~~~~~~~

View File

@ -43,7 +43,7 @@ FEED_ALL_ATOM = 'tyrel-dev.all.xml'
PLUGINS = ["webassets"]
DEFAULT_PAGINATION = False
DEFAULT_PAGINATION = True
DISPLAY_CATEGORIES_ON_MENU = False
DELETE_OUTPUT_DIRECTORY = True
@ -71,4 +71,5 @@ SOCIAL = ()
DISPLAY_PAGES_ON_MENU=True
LANDING_PAGE_ABOUT=True
THEME = pwd / "themes" / "solarized"
#THEME = pwd / "themes" / "waterspill-en"
THEME = pwd / "themes" / "waterspill-en"
THEME = pwd / "themes" / "blue-penguin-dark"

View File

@ -0,0 +1,38 @@
name: Create-Screenshot
on:
release:
types: [ created ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
- name: Install pelican
run: |
python -m pip install --upgrade pip
python -m pip install "pelican[markdown]"
- name: Setup Node
uses: actions/setup-node@v3
- run: |
mkdir dist
npm install --global capture-website-cli
pelican sample/content -s sample/settings.py -t .
pelican --listen &
- run: capture-website "http://127.0.0.1:8000" --dark-mode --output "dist/out.png"
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: screenshot
path: dist/out.png
- name: Upload screenshot
uses: genietim/ftp-action@releases/v2
with:
host: ${{ secrets.FTP_SERVER }}
user: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
localdir: "dist"
remoteDir: "/"

View File

@ -0,0 +1,20 @@
# Contributors
* [Nevan Scott](https://github.com/nevanscott/Mockingbird) (original author)
* [wrl](https://github.com/wrl/pelican-mockingbird) (port to pelican, pelican-mockingbird)
* [Jody Frankowski](http://github.com/jody-frankowski) (Blue Penguin)
* [Grimbox](https://github.com/Grimbox)
* [ix5](https://github.com/ix5)
* [dn0](https://github.com/dn0)
* [anhtuann](https://github.com/anhtuann)
* [aperep](https://github.com/aperep)
* [iranzo](https://github.com/iranzo)
* [thetlk](https://github.com/thetlk)
* [SnorlaxYum](https://github.com/SnorlaxYum)
* [guikcd](https://github.com/guikcd)
* [jorgesumle](https://github.com/jorgesumle)
* [crxxn](https://github.com/crxxn)
* [gavinzbq](https://github.com/gavinzbq)
* [sylvainmetayer](https://github.com/sylvainmetayer)
* [wbob](https://github.com/wbob)
* [Tyler Carr](https://github.com/tcarwash)

View File

@ -0,0 +1,24 @@
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to <https://unlicense.org>

View File

@ -0,0 +1,70 @@
![screenshot](https://tyler-carr.com/images/ftp/out.png)
# Blue Penguin Dark for pelican
A simple dark theme for pelican, with light/dark mode support using media queries available. Solarized pygments. Feeds support.
This theme has been adapted from the original [Blue Penguin Theme](https://github.com/jody-frankowski/blue-penguin) for use on [my website](https://tyler-carr.com), all changes are generic and this theme can be used interchangeably with the original.
## Settings
```python
# all the following settings are *optional*
# HTML metadata
SITEDESCRIPTION = ''
# all defaults to True.
DISPLAY_HEADER = True
DISPLAY_FOOTER = True
DISPLAY_HOME = True
DISPLAY_MENU = True
DARK_LIGHT_SWITCHING_OFF = True
# provided as examples, they make clean urls. used by MENU_INTERNAL_PAGES.
TAGS_URL = 'tags'
TAGS_SAVE_AS = 'tags/index.html'
AUTHORS_URL = 'authors'
AUTHORS_SAVE_AS = 'authors/index.html'
CATEGORIES_URL = 'categories'
CATEGORIES_SAVE_AS = 'categories/index.html'
ARCHIVES_URL = 'archives'
ARCHIVES_SAVE_AS = 'archives/index.html'
# use those if you want pelican standard pages to appear in your menu
MENU_INTERNAL_PAGES = (
('Tags', TAGS_URL, TAGS_SAVE_AS),
('Authors', AUTHORS_URL, AUTHORS_SAVE_AS),
('Categories', CATEGORIES_URL, CATEGORIES_SAVE_AS),
('Archives', ARCHIVES_URL, ARCHIVES_SAVE_AS),
)
# additional menu items
MENUITEMS = (
('GitHub', 'https://github.com/'),
('Linux Kernel', 'https://www.kernel.org/'),
)
# example pagination pattern
PAGINATION_PATTERNS = (
(1, '{url}', '{save_as}'),
(2, '{base_name}/page/{number}/', '{base_name}/page/{number}/index.html'),
)
```
Dark/Light switching is disabled by default, but can be enabled in the config file by adding:
```
DARK_LIGHT_SWITCHING_OFF = FALSE
```
## How to contribute
Contributions are very welcome. Keep in mind that this theme goal is to be
minimalistic/simple. Contributions will be accepted through Github Pull
Requests. If you dont have a Github account you can suggest me your
changes by email.
## Contributors
See [CONTRIBUTORS.md](CONTRIBUTORS.md).
## License
Public domain.

View File

@ -0,0 +1,11 @@
Title: Solarized Pygments
Date: 2022-6-28 12:00
Category: Python
Tags: pelican, publishing
Authors: Alexis Metaireau, Conan Doyle
Summary: Short version for index and feeds
```
while True:
print("Pelican is neat!")
```

View File

@ -0,0 +1,8 @@
Title: Blue Penguin Dark
Date: 2022-6-28 13:00
Category: Python
Tags: pelican, publishing
Authors: Alexis Metaireau, Conan Doyle
Summary: Short version for index and feeds
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
AUTHOR = 'Tyler Carr'
SITENAME = 'Blue Penguin Dark'
SITEURL = 'http://localhost:8000'
SITELOGO = 'https://www.gravatar.com/avatar/de3ba847c89c8cab9dd7080abebf9df1'
DEFAULT_METADATE = {
'status': 'draft',
}
PATH = 'content'
TIMEZONE = 'America/Los_Angeles'
DEFAULT_LANG = 'en'
MENUITEMS = (
('About', '/'),
)

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -0,0 +1,465 @@
/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/
/* Mockingbird Theme by Nevan Scott nevanscott.com */
/* Modified by Jody Frankowski */
/* Modified by ix5 */
/* Modified by Tyler Carr */
:root {
--main-bg-color: #1c2833;
--code-bg-color: #17202a;
--accent-color: #C7254E;
--tab-bg-hover: var(--code-bg-color);
--info-bg-color: var(--code-gb-color);
}
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
color: #BBB;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
em {
font-style: italic;
}
strong {
font-weight: bold;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
background-color: var(--main-bg-color);
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
body {
font-family: Georgia, serif;
font-size: 16px;
line-height: 1.5em;
}
header, #wrapper {
padding: 0 10px;
max-width: 910px;
margin: auto;
clear:both;
}
a {
text-decoration: none;
color: #15A9DB;
}
ul {
list-style: outside disc;
}
ol {
list-style: outside decimal;
}
h1, h2, h3, h4, h5, h6 {
font-family: sans-serif;
font-weight: bold;
}
h1, h2, h3 {
font-size: 1.5em;
line-height: 1em;
margin: 1em 0;
}
img, p, .post > .highlight, .highlighttable, h4, h5, h6 {
margin-top: 1.2em;
}
img + em {
font-size: .8em;
}
blockquote {
margin: 1.5em 1.5em 1.5em .75em;
padding-left: .75em;
border-left: 1px solid #EEE;
}
table {
width: 100%;
margin: 1em 0;
}
thead {
border-bottom: 1px solid black;
}
.avatar {
border-radius: 50%;
-mox-border-radius: 50%;
-webkit-border-radius: 50%;
position: relative;
bottom: 0;
top: 0;
margin: auto;
display: inline;
padding-right: 5px;
}
.date {
color: #CCC;
float: left;
clear: both;
width: 130px;
font-size: 1.5em;
line-height: 1em;
margin: 0 20px 1em 0;
}
.info {
margin-top: 1.3em;
font-family: sans-serif;
text-align: right;
color: #BBB;
}
.info a {
color: inherit;
}
.info a.tags {
background: var(--info-bg-color);
color: #FFF;
display: inline-block;
padding: 0 .3em;
border: 1px transparent solid;
border-radius: 5px;
margin: 0 0 0.3em 0;
}
.info a.tags:hover {
background: inherit;
color: inherit;
}
.info a.tags.selected {
border: 1px #999 solid;
}
.post {
margin: 0 0 4.5em 150px;
}
.post.archives {
margin-bottom: 1.5em;
margin-left: 160px;
}
.post p {
text-align: justify;
}
.page {
margin: 0 90px;
}
.highlight {
border-radius: 3px;
}
.code > .highlight {
border-radius: 0px 3px 3px 0px;
background-color: var(--code-bg-color);
}
.linenos {
border-radius: 3px 0px 0px 3px;
background-color: var(--code-bg-color);
border-right: 1px solid #00232C;
color: #586E75;
text-shadow: 0px -1px #021014;
font-size: 12.6px;
}
td.code {
width: 100%;
max-width: 100px;
}
.linenos a {
color: #586E75;
}
img {
box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.15);
border-radius: 0.3em;
max-width: 100%;
display: block;
margin-left: auto;
margin-right: auto;
}
/*sub and sup stolen from Twitter bootstrap.*/
sub, sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
.post pre, .page pre{
padding: .8em;
font-size: 12.6px;
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
line-height: 18px;
overflow: auto;
background-color: var(--code-bg-color);
}
.literal {
padding: .5em;
overflow: pre-line;
font-size: 12.6px;
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
background-color: var(--code-bg-color);
}
form.inline_edit {
clear: both;
margin: 4.5em 0;
background-color: #DDD;
color: #000;
padding: 20px;
border-radius: 5px;
}
.inline_edit .sub {
color: #888;
white-space: nowrap;
}
.inline_edit label {
float: left;
clear: both;
width: 140px;
margin-right: 20px;
}
.inline_edit .buttons {
display: block;
text-align: right;
}
nav ul {
float: right;
list-style: none;
margin: 0 0 0 3em;
padding: 0;
}
nav li {
float: left;
}
nav a {
display: block;
padding: 1.5em 10px 10px 10px;
}
nav a:hover {
background-color: var(--tab-bg-hover);
color: var(--accent-color);
}
nav li.selected a {
background-color: #15A9DB;
color: #FFF;
}
header .header_box {
padding-top: 1.5em;
text-align: justify;
-moz-text-align-last: justify;
text-align-last: justify;
}
.site_title {
color: #15A9DB;
display: inline-block;
margin:0;
}
.site_subtitle {
display: inline-block;
margin: 0;
}
header h1 {
font-size: 1.5em;
line-height: 1em;
margin: 0;
}
header h2 {
font-size: 1em;
margin: .3em 0;
color: #DDD;
}
#content {
margin-top: 3em;
}
.pages {
font-family: sans-serif;
line-height: 2.5em;
margin: 4.5em 0 3em;
background-color: #2e4053;
border-radius: 5px;
}
.pages a.next_page {
float: right;
width: 140px;
text-align: center;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
background-color: #EEE;
}
.pages a.prev_page {
float: left;
width: 140px;
text-align: center;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
background-color: #EEE;
}
.pages a {
color: inherit;
border: none;
}
.pages a:hover {
background-color: #DDD;
}
.pages span {
display: block;
margin: 0 160px;
text-align: center;
}
code {
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
box-sizing: border-box;
background-color: #17202a;
color: #C7254E;
font-family: Monaco,Menlo,Consolas,"Courier New",monospace;
font-size: 12.6px;
line-height: 18px;
padding-bottom: 2px;
padding-left: 0px;
padding-right: 4px;
padding-top: 2px;
}
footer {
font-family: sans-serif;
line-height: 2.5em;
text-align: center;
color: #BBB;
margin: 3em 0;
border: 1px solid #EEE;
border-radius: 5px;
}
footer p { margin: 0; }
.right { float: right; }
.clear { clear: both; }
@media screen and (max-width: 1024px) {
#wrapper {
margin-left: 2.6em;
padding:1em;
}
}
@media screen and (max-width: 800px), print {
#wrapper {
margin: 0;
padding: 1em;
}
.date {
width: 100%;
margin: 0 0 .5em 0;
}
.post {
margin: 0 0 4.5em 0;
}
.post pre,
.post code {
white-space: pre-wrap;
}
.archives {
margin: 0 0 1.5em 0 !important;
}
nav ul {
margin: 0 0 1em 0;
}
}
@media print {
* {
background: #fff;
}
#wrapper, #content {
margin: 0;
padding: 0;
}
header, footer, nav {
display: none;
}
img {
break-inside: avoid;
}
p, table, pre {
widows: 3;
orphans: 3;
}
h1, h2, h3, h4, h5, h6 {
break-after: avoid;
}
h1, h2 {
font-size: 14pt;
}
h3, h4, h4.date {
font-size: 12pt;
}
.post p, .post ul li, .post ol li, .post table {
font-size: 11pt;
}
}
@page {
margin: 1.5cm;
}

View File

@ -0,0 +1,87 @@
/* Solarized Dark
For use with Jekyll and Pygments
http://ethanschoonover.com/solarized
SOLARIZED HEX ROLE
--------- -------- ------------------------------------------
base03 #002b36 background
base01 #586e75 comments / secondary content
base1 #93a1a1 body text / default code / primary content
orange #cb4b16 constants
red #dc322f regex, special keywords
blue #268bd2 reserved keywords
cyan #2aa198 strings, numbers
green #859900 operators, other keywords
*/
.highlight { color: #93a1a1; background-color: #17202a;}
.highlight .c { color: #586e75 } /* Comment */
.highlight .err { color: #93a1a1 } /* Error */
.highlight .g { color: #93a1a1 } /* Generic */
.highlight .k { color: #859900 } /* Keyword */
.highlight .l { color: #93a1a1 } /* Literal */
.highlight .n { color: #93a1a1 } /* Name */
.highlight .o { color: #859900 } /* Operator */
.highlight .x { color: #cb4b16 } /* Other */
.highlight .p { color: #93a1a1 } /* Punctuation */
.highlight .cm { color: #586e75 } /* Comment.Multiline */
.highlight .cp { color: #859900 } /* Comment.Preproc */
.highlight .c1 { color: #586e75 } /* Comment.Single */
.highlight .cs { color: #859900 } /* Comment.Special */
.highlight .gd { color: #2aa198 } /* Generic.Deleted */
.highlight .ge { color: #93a1a1; font-style: italic } /* Generic.Emph */
.highlight .gr { color: #dc322f } /* Generic.Error */
.highlight .gh { color: #cb4b16 } /* Generic.Heading */
.highlight .gi { color: #859900 } /* Generic.Inserted */
.highlight .go { color: #93a1a1 } /* Generic.Output */
.highlight .gp { color: #93a1a1 } /* Generic.Prompt */
.highlight .gs { color: #93a1a1; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #cb4b16 } /* Generic.Subheading */
.highlight .gt { color: #93a1a1 } /* Generic.Traceback */
.highlight .kc { color: #cb4b16 } /* Keyword.Constant */
.highlight .kd { color: #268bd2 } /* Keyword.Declaration */
.highlight .kn { color: #859900 } /* Keyword.Namespace */
.highlight .kp { color: #859900 } /* Keyword.Pseudo */
.highlight .kr { color: #268bd2 } /* Keyword.Reserved */
.highlight .kt { color: #dc322f } /* Keyword.Type */
.highlight .ld { color: #93a1a1 } /* Literal.Date */
.highlight .m { color: #2aa198 } /* Literal.Number */
.highlight .s { color: #2aa198 } /* Literal.String */
.highlight .na { color: #93a1a1 } /* Name.Attribute */
.highlight .nb { color: #B58900 } /* Name.Builtin */
.highlight .nc { color: #268bd2 } /* Name.Class */
.highlight .no { color: #cb4b16 } /* Name.Constant */
.highlight .nd { color: #268bd2 } /* Name.Decorator */
.highlight .ni { color: #cb4b16 } /* Name.Entity */
.highlight .ne { color: #cb4b16 } /* Name.Exception */
.highlight .nf { color: #268bd2 } /* Name.Function */
.highlight .nl { color: #93a1a1 } /* Name.Label */
.highlight .nn { color: #93a1a1 } /* Name.Namespace */
.highlight .nx { color: #93a1a1 } /* Name.Other */
.highlight .py { color: #93a1a1 } /* Name.Property */
.highlight .nt { color: #268bd2 } /* Name.Tag */
.highlight .nv { color: #268bd2 } /* Name.Variable */
.highlight .ow { color: #859900 } /* Operator.Word */
.highlight .w { color: #93a1a1 } /* Text.Whitespace */
.highlight .mf { color: #2aa198 } /* Literal.Number.Float */
.highlight .mh { color: #2aa198 } /* Literal.Number.Hex */
.highlight .mi { color: #2aa198 } /* Literal.Number.Integer */
.highlight .mo { color: #2aa198 } /* Literal.Number.Oct */
.highlight .sb { color: #586e75 } /* Literal.String.Backtick */
.highlight .sc { color: #2aa198 } /* Literal.String.Char */
.highlight .sd { color: #93a1a1 } /* Literal.String.Doc */
.highlight .s2 { color: #2aa198 } /* Literal.String.Double */
.highlight .se { color: #cb4b16 } /* Literal.String.Escape */
.highlight .sh { color: #93a1a1 } /* Literal.String.Heredoc */
.highlight .si { color: #2aa198 } /* Literal.String.Interpol */
.highlight .sx { color: #2aa198 } /* Literal.String.Other */
.highlight .sr { color: #dc322f } /* Literal.String.Regex */
.highlight .s1 { color: #2aa198 } /* Literal.String.Single */
.highlight .ss { color: #2aa198 } /* Literal.String.Symbol */
.highlight .bp { color: #268bd2 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #268bd2 } /* Name.Variable.Class */
.highlight .vg { color: #268bd2 } /* Name.Variable.Global */
.highlight .vi { color: #268bd2 } /* Name.Variable.Instance */
.highlight .il { color: #2aa198 } /* Literal.Number.Integer.Long */

View File

@ -0,0 +1,11 @@
{% if GOOGLE_ANALYTICS %}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-74711B8E5H"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{GOOGLE_ANALYTICS}}');
</script>
{% endif %}

View File

@ -0,0 +1,22 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} | Archives{% endblock %}
{% block content %}
<h1>Archives</h1>
{# based on http://stackoverflow.com/questions/12764291/jinja2-group-by-month-year #}
{% for year, year_group in dates|groupby('date.year')|reverse %}
{% for month, month_group in year_group|groupby('date.month')|reverse %}
<h4 class="date">{{ (month_group|first).date|strftime('%b %Y') }}</h4>
<div class="post archives">
<ul>
{% for article in month_group %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li>
{% endfor %}
</ul>
</div>
{% endfor %}
{% endfor %}
{% endblock %}

View File

@ -0,0 +1,17 @@
{% extends "base.html" %}
{% block head %}
{{ super() }}
{% if article.tags %}
<meta name="keywords" content="{{ article.tags|join(",") }}" />
{% endif %}
{% if article.description %}
<meta name="description" content="{{ article.description }}" />
{% endif %}
{% endblock %}
{% block title %}{{ SITENAME }} | {{ article.title|striptags }}{% endblock %}
{% block content %}
{% include "article_stub.html" %}
{% endblock %}

View File

@ -0,0 +1,36 @@
{% if not articles_page or first_article_of_day %}
<h4 class="date">{{ article.date.strftime("%b %d, %Y") }}</h4>
{% endif %}
<article class="post">
{% if article.title %}
<h2 class="title">
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permanent Link to &quot;{{ article.title|striptags }}&quot;">{{ article.title }}</a>
</h2>
{% endif %}
{% if not articles_page %}
{% include "translations.html" %}
{% endif %}
{{ article.content }}
<div class="clear"></div>
<div class="info">
{% if article.category.name != "misc" %}
<a href="{{ SITEURL }}/{{ article.category.url }}" rel="tag">{{ article.category }}</a>
{% endif %}
{% if article.tags %}
&nbsp;&middot;&nbsp;&middot;&nbsp;&middot;
{% for t in article.tags %}
&nbsp;<a href="{{ SITEURL }}/{{ t.url }}" class="tags{% if tag and tag.name == t.name %} selected{% endif %}">{{ t }}</a>
{% endfor %}
{% endif %}
</div>
{% if articles_page and DISQUS_SITENAME %}
<a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">Click to read and post comments</a>
{% else %}
{% include "disqus.html" %}
{% endif %}
</article>

View File

@ -0,0 +1,7 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} | Articles by {{ author }}{% endblock %}
{% block ephemeral_nav %}
{{ ephemeral_nav_link(author, output_file, True) }}
{% endblock %}

View File

@ -0,0 +1,121 @@
{% macro ephemeral_nav_link(what, where, selected=False) -%}
<li class="ephemeral{% if selected %} selected{% endif %}"><a href="{{ SITEURL }}/{{ where }}">{{what}}</a></li>
{%- endmacro -%}
<!DOCTYPE html>
<html lang="{{ DEFAULT_LANG }}">
<head>
{% block head %}
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
{# favicon #}
<link rel="shortcut icon" type="image/png" href="{{ SITEURL }}/favicon.png">
<link rel="shortcut icon" type="image/x-icon" href="{{ SITEURL }}/favicon.ico">
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Full Atom Feed" />
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ALL_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Full RSS Feed" />
{% endif %}
{% if FEED_ATOM %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_ATOM }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed" />
{% endif %}
{% if FEED_RSS %}
<link href="{{ FEED_DOMAIN }}/{{ FEED_RSS }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed" />
{% endif %}
{% if CATEGORY_FEED_ATOM and category %}
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_ATOM.format(slug=category.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Categories Atom Feed" />
{% endif %}
{% if CATEGORY_FEED_RSS and category %}
<link href="{{ FEED_DOMAIN }}/{{ CATEGORY_FEED_RSS.format(slug=category.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Categories RSS Feed" />
{% endif %}
{% if TAG_FEED_ATOM and tag %}
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_ATOM.format(slug=tag.slug) }}" type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Tags Atom Feed" />
{% endif %}
{% if TAG_FEED_RSS and tag %}
<link href="{{ FEED_DOMAIN }}/{{ TAG_FEED_RSS.format(slug=tag.slug) }}" type="application/rss+xml" rel="alternate" title="{{ SITENAME }} Tags RSS Feed" />
{% endif %}
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/main.css" type="text/css" />
<link rel="stylesheet" href="{{ SITEURL }}/theme/css/pygments.css" type="text/css" />
{% if DARK_LIGHT_SWITCHING_OFF == False %}
<style>
@media (prefers-color-scheme: light) {
:root {
--main-bg-color: #FFFFFF;
--accent-color: #FFFFFF;
--tab-bg-hover: #d3d3d3;
--info-bg-color: #CCC;
}
}
</style>
{% endif %}
<meta name="generator" content="Pelican" />
<meta name="description" content="{{ SITEDESCRIPTION }}" />
<meta name="author" content="{{ AUTHOR }}" />
{% include 'analytics.html' %}
{% endblock head %}
</head>
<body>
{% if DISPLAY_HEADER or DISPLAY_HEADER is not defined %}
<header>
<div class="header_box" style="height: 50px">
<h1 class="site_title">
<a href="{{ SITEURL }}/">
<span>{{ SITENAME }}</span>
</a>
</h1>
{% if SITESUBTITLE %}
<h2 class="site_subtitle">{{ SITESUBTITLE }}</h2>
{% endif %}
</div>
</div>
{% if DISPLAY_MENU or DISPLAY_MENU is not defined %}
<nav style="overflow: hidden;">
<ul>
{% block ephemeral_nav %}{% endblock %}
{% if DISPLAY_HOME or DISPLAY_HOME is not defined %}
<li{% if output_file == "index.html" %} class="selected"{% endif %}><a href="{{ SITEURL }}/">Home</a></li>
{% endif %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for p in pages %}
<li{% if p == page %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
{% endfor %}
{% endif %}
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% for name, link, file in MENU_INTERNAL_PAGES %}
<li{% if output_file == file %} class="selected"{% endif %}><a href="{{ SITEURL }}/{{ link }}">{{ name }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
</header>
{% endif %}
<div id="wrapper">
<div id="content">
{%- block content -%}{%- endblock %}
{% if DISPLAY_FOOTER or DISPLAY_FOOTER is not defined %}
<div class="clear"></div>
<footer>
<p>
<a href="https://github.com/tcarwash/blue-penguin-dark">Blue Penguin Dark</a> Theme
&middot;
Powered by <a href="http://getpelican.com">Pelican</a>
{% if FEED_ALL_ATOM %}
&middot;
<a href="{{ SITEURL }}/{{ FEED_ALL_ATOM }}" rel="alternate">Atom Feed</a>
{% endif %}
{% if FEED_ALL_RSS %}
&middot;
<a href="{{ SITEURL }}/{{ FEED_ALL_RSS }}" rel="alternate">Rss Feed</a>
{% endif %}
</footer>
{% endif %}
</div>
<div class="clear"></div>
</div>
</body>
</html>

View File

@ -0,0 +1,6 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} | articles in the "{{ category }}" category{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
{% block ephemeral_nav %}
{{ ephemeral_nav_link(category, output_file, True) }}
{% endblock %}

View File

@ -0,0 +1,12 @@
{% if DISQUS_SITENAME %}
<div id="disqus_thread"></div>
<script type="text/javascript">
var disqus_shortname = '{{ DISQUS_SITENAME }}';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
{% endif %}

View File

@ -0,0 +1,17 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }}{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
{% block content %}
{% set date = None %}
{% for article in articles_page.object_list %}
{% if date != article.date.date() %}
{% set first_article_of_day = True %}
{% else %}
{% set first_article_of_day = False %}
{% endif %}
{% set date = article.date.date() %}
{% include "article_stub.html" %}
{% endfor %}
{% include "pagination.html" %}
{% endblock %}

View File

@ -0,0 +1,11 @@
{% extends "base.html" %}
{% block title %}{{ SITENAME }} | {{ page.title }}{% endblock %}
{% block content %}
<div class="page">
<h1>{{ page.title }}</h1>
{{ page.content }}
</div>
{% endblock %}

View File

@ -0,0 +1,17 @@
{# Use PAGINATION_PATTERNS or pagination may break #}
{% if DEFAULT_PAGINATION and (articles_page.has_previous() or articles_page.has_next()) %}
<div class="clear"></div>
<div class="pages">
{% if articles_page.has_previous() %}
<a href="{{ SITEURL }}/{{ articles_previous_page.url }}" class="prev_page">&larr;&nbsp;Previous</a>
{% endif %}
{% if articles_page.has_next() %}
<a href="{{ SITEURL }}/{{ articles_next_page.url }}" class="next_page">Next&nbsp;&rarr;</a>
{% endif %}
<span>Page {{ articles_page.number }} of {{ articles_paginator.num_pages }}</span>
</div>
{% endif %}

View File

@ -0,0 +1,5 @@
{% extends "index.html" %}
{% block title %}{{ SITENAME }} | articles tagged "{{ tag }}"{% if articles_page.number != 1 %} | Page {{ articles_page.number }}{% endif %}{% endblock %}
{% block ephemeral_nav %}
{{ ephemeral_nav_link(tag, output_file, True) }}
{% endblock %}

View File

@ -0,0 +1,6 @@
{% if article.translations %}
Translations:
{% for translation in article.translations %}
<a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
{% endfor %}
{% endif %}

View File

@ -60,13 +60,9 @@ p {
white-space: nowrap;
}
.literal {
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border: 1px solid #BCBEC0;
padding: 2px;
font:12px Monaco,Consolas,"Andale Mono","DejaVu Sans Mono",monospace;
white-space: nowrap;
white-space: pre-line;
background-color: #b58900;
color: #000;
}