aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorasselinpaul <pa.asselin@gmail.com>2012-06-12 18:23:40 +0200
committerasselinpaul <pa.asselin@gmail.com>2012-06-12 18:23:40 +0200
commite4c3d6fc542026ba68fa6f7e9cf4d84ab6e1801b (patch)
treeca743fea2c153afadc5266c15d9657062811583f
parentfdbaa6805064db85f6e71852d0c00e245d7ad432 (diff)
downloadpelican-themes-e4c3d6fc542026ba68fa6f7e9cf4d84ab6e1801b.tar.gz
added subtle
-rw-r--r--subtle/.gitignore38
-rw-r--r--subtle/README.md147
-rw-r--r--subtle/static/css/downdown.pngbin0 -> 5527 bytes
-rw-r--r--subtle/static/css/groovepaper.pngbin0 -> 40723 bytes
-rw-r--r--subtle/static/css/lightpaper.pngbin0 -> 134783 bytes
-rwxr-xr-xsubtle/static/css/main.css445
-rw-r--r--subtle/static/css/paper.pngbin0 -> 224 bytes
-rwxr-xr-xsubtle/static/css/pygment.css205
-rwxr-xr-xsubtle/static/css/reset.css52
-rw-r--r--subtle/static/css/toptop.pngbin0 -> 5392 bytes
-rwxr-xr-xsubtle/static/css/typogrify.css3
-rw-r--r--subtle/static/css/wavecut.pngbin0 -> 1487 bytes
-rw-r--r--subtle/static/css/white.pngbin0 -> 2850 bytes
-rwxr-xr-xsubtle/static/css/wide.css48
-rwxr-xr-xsubtle/templates/analytics.html11
-rwxr-xr-xsubtle/templates/archives.html13
-rwxr-xr-xsubtle/templates/article.html34
-rwxr-xr-xsubtle/templates/article_infos.html14
-rwxr-xr-xsubtle/templates/author.html2
-rwxr-xr-xsubtle/templates/authors.html0
-rwxr-xr-xsubtle/templates/base.html74
-rwxr-xr-xsubtle/templates/categories.html8
-rwxr-xr-xsubtle/templates/category.html2
-rwxr-xr-xsubtle/templates/comments.html1
-rwxr-xr-xsubtle/templates/disqus_script.html11
-rwxr-xr-xsubtle/templates/github.html9
-rw-r--r--subtle/templates/gosquared.html14
-rwxr-xr-xsubtle/templates/index.html60
-rwxr-xr-xsubtle/templates/page.html10
-rwxr-xr-xsubtle/templates/pagination.html15
-rwxr-xr-xsubtle/templates/piwik.html16
-rwxr-xr-xsubtle/templates/tag.html2
-rwxr-xr-xsubtle/templates/taglist.html2
-rwxr-xr-xsubtle/templates/tags.html0
-rwxr-xr-xsubtle/templates/translations.html6
-rwxr-xr-xsubtle/templates/twitter.html3
36 files changed, 1245 insertions, 0 deletions
diff --git a/subtle/.gitignore b/subtle/.gitignore
new file mode 100644
index 0000000..f2c2a6b
--- /dev/null
+++ b/subtle/.gitignore
@@ -0,0 +1,38 @@
+# Compiled source #
+###################
+*.com
+*.class
+*.dll
+*.exe
+*.o
+*.so
+
+# Packages #
+############
+# it's better to unpack these files and commit the raw source
+# git has its own built in compression methods
+*.7z
+*.dmg
+*.gz
+*.iso
+*.jar
+*.rar
+*.tar
+*.zip
+
+# Logs and databases #
+######################
+*.log
+*.sql
+*.sqlite
+
+# OS generated files #
+######################
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+Icon?
+ehthumbs.db
+Thumbs.db \ No newline at end of file
diff --git a/subtle/README.md b/subtle/README.md
new file mode 100644
index 0000000..9fa8b4d
--- /dev/null
+++ b/subtle/README.md
@@ -0,0 +1,147 @@
+#Subtle
+###A pelican theme
+
+![screenshot](https://dl.dropbox.com/u/6712319/screenshot-6.png)
+
+This is subtle, a theme for the [Pelican static site generator](http://pelican.notmyidea.org/en/2.8/index.html).
+It is adapted from the [notmyidea](https://github.com/ametaireau/notmyidea) default theme.
+
+The social icons are from: [http://www.alexpeattie.com/projects/justvector_icons/](http://www.alexpeattie.com/projects/justvector_icons/)
+
+The current background is from: [http://subtlepatterns.com/](http://subtlepatterns.com/)
+
+Apart from aesthetic changes, this also adds a different set of more 'classy' social icons and icons for many more services.
+
+If you wish to add a favicon to your website (and I believe that you should), then you should add a 16x16 icon 'favicon.ico'
+file in your output directory.
+
+*PS: I've made this documentation quite easy to follow (I hope!), computer geeks might find it too 'simplified' but hey, it's well documented*
+
+Because this is 'based' on notmyidea (the theme), this supports all of these settings (which you would add to the pelican.conf.py file).
+```
+DISQUS_SITENAME Pelican can handle disqus comments, specify the sitename you’ve filled in on disqus
+```
+```
+GITHUB_URL Your github URL (if you have one), it will then use it to create a github ribbon.
+```
+```
+GOOGLE_ANALYTICS ‘UA-XXXX-YYYY’ to activate google analytics.
+```
+```
+MENUITEMS A list of tuples (Title, Url) for additional menu items to appear at the beginning of the main menu.
+```
+```
+PIWIK_URL URL to your Piwik server - without ‘http://‘ at the beginning.
+```
+```
+PIWIK_SSL_URL If the SSL-URL differs from the normal Piwik-URL you have to include this setting too. (optional)
+```
+```
+PIWIK_SITE_ID ID for the monitored website. You can find the ID in the Piwik admin interface > settings > websites.
+```
+```
+LINKS A list of tuples (Title, Url) for links to appear on the header.
+```
+```
+SOCIAL A list of tuples (Title, Url) to appear in the “social” section.
+```
+```
+TWITTER_USERNAME Allows to add a button on the articles to tweet about them. Add you twitter username if you want this button to appear.
+```
+
+Plus, I've added GoSquared support so their is a new command:
+```
+GOSQUARED_SITENAME
+```
+
+I am hoping to fork and push that to the official Pelican repository.
+##Preview
+[http://asselinpaul.com/](http://asselinpaul.com/)
+This post might be relevant if you want to know more about my particular blog (hosting, comments): [http://asselinpaul.com/static-site.html](http://asselinpaul.com/static-site.html)
+
+##Installation
+It is easy to install this theme, just use the [pelican-themes](http://pelican.notmyidea.org/en/2.8/pelican-themes.html) command once you have downloaded the theme:
+```
+pelican-themes -i /path_to_theme
+```
+For more information about pelican-themes, [click here](http://pelican.notmyidea.org/en/2.8/pelican-themes.html).
+
+
+
+So that every blog ain't the same (we are all unique right?), I'd appreciate two things:
+
+* Change the background for the blog
+
+They are some great alternatives to this pattern on [subtlepatterns.com](http://subtlepatterns.com/). To do this you would open the static folder and add your chosen pattern/background. After that you need to modify the main.css file, specificly line 21 which defines the background:
+```
+background: url("wavecut.png"):
+```
+Replace *wavecut.png* with the name of your pattern/background.
+
+* Change the color theme
+They is one main color in this theme that you can/should change to suit your liking and personality.
+I'm using the #7A4700 brown, check out my site (linked in Preview) to see what elements are brown (you might have to hover over them).
+To change that, I'd simply replace every value '#7A4700' in main.css by the color you want(ideally with the find and replace command).
+
+And if you could send me a message of your blog's url, I'd love to read your great content.
+
+##Changing Fonts
+
+If you want to change the font for the Titles (not the one which is used for the articles), you have to change line 14 and line 42 of the file.
+
+At the moment, line 14 says:
+```
+@import url(http://fonts.googleapis.com/css?family=Lobster);
+```
+
+I'm using Google Web Fonts to get the font, here is the link to it: [Lobster](http://www.google.com/webfonts#QuickUsePlace:quickUse/Family:)
+
+You should note that step 3 ('Add this code to your website') has multiple options. I used the @import tab to get the previous line. Choose a font and add the @import code on line 14.
+
+On line 42, change the font-family with whatever you downloaded. In my case, it's:
+```
+font-family: 'Lobster', cursive;
+```
+
+That's it, you're done. For the font that is used for the articles, do the same thing with line 15 and 22.
+
+##Social Icons
+I've only implemented icons that I used but it's super easy to add more and best of all, the icons you are looking for are most likely already included!
+
+First, take a look in the main.css file. Towards line 315, you can see the social icon declaration. It looks like this:
+```
+.social a[href*='twitter.com'] {background-image: url('../images/icons/twitter_alt.png');
+ background-size: 16px 16px; }
+```
+Check to see if the one you want isn't implemented, if not, let's continue.
+
+* open images/icon
+* look for the icon you want in here or add it
+* note down it's name (e.g: wikipedia.png)
+* go into the main.css file and go towards line 315, you should see the icons declaration.
+* copy and paste this template there:
+```
+.social a[href*='url_of_site'] {background-image: url('../images/icons/name_of_icon');
+ background-size: 16px 16px; }
+```
+Change *url_of_site* with the url of the service for which you are adding an icon (e.g: wikipedia.com).
+*Do not include 'www.'*
+
+Change *name_of_icon* with the name of the icon you got in step 2 (with it's extension). In our case that is wikipedia.png .
+If you icon is located somewhere else, you can also change the path but you have to make sure that I'll be included with your css.
+
+* go into your pelican.conf.py file and add your social 'link' there(making sure that you use the correct service name and url)
+For example:
+```
+('github', 'http://github.com/thisisalongdocumentation'),
+```
+
+You're done!
+
+![icons](https://dl.dropbox.com/u/6712319/screenshot-5.png)
+*Yeah, that is a lot of icons.*
+
+##Notes
+I have not tested RSS and Atom feeds as I do not use these services, I think I might have removed the support for them so keep that in mind and you might be able to get the needed code on the notmyidea theme.
+
+
diff --git a/subtle/static/css/downdown.png b/subtle/static/css/downdown.png
new file mode 100644
index 0000000..9a2cc89
--- /dev/null
+++ b/subtle/static/css/downdown.png
Binary files differ
diff --git a/subtle/static/css/groovepaper.png b/subtle/static/css/groovepaper.png
new file mode 100644
index 0000000..61f81a7
--- /dev/null
+++ b/subtle/static/css/groovepaper.png
Binary files differ
diff --git a/subtle/static/css/lightpaper.png b/subtle/static/css/lightpaper.png
new file mode 100644
index 0000000..50024de
--- /dev/null
+++ b/subtle/static/css/lightpaper.png
Binary files differ
diff --git a/subtle/static/css/main.css b/subtle/static/css/main.css
new file mode 100755
index 0000000..b287588
--- /dev/null
+++ b/subtle/static/css/main.css
@@ -0,0 +1,445 @@
+/*
+ Name: Smashing HTML5
+ Date: July 2009
+ Description: Sample layout for HTML5 and CSS3 goodness.
+ Version: 1.0
+ Author: Enrique Ramírez
+ Autor URI: http://enrique-ramirez.com
+*/
+
+/* Imports */
+@import url("reset.css");
+@import url("pygment.css");
+@import url("typogrify.css");
+@import url(http://fonts.googleapis.com/css?family=Lobster);
+@import url(http://fonts.googleapis.com/css?family=Droid+Sans);
+
+
+/***** Global *****/
+/* Body */
+body {
+ background: url("wavecut.png");
+ font-family: 'Droid Sans', sans-serif;
+ font-size: 14px ;
+ line-height: 1.429;
+ margin: 0;
+ padding: 0;
+ text-align: left;
+}
+
+/* Headings */
+h1 {font-size: 2em }
+h2 {font-size: 1.571em} /* 22px */
+h3 {font-size: 1.429em} /* 20px */
+h4 {font-size: 1.286em} /* 18px */
+h5 {font-size: 1.143em} /* 16px */
+h6 {font-size: 1em} /* 14px */
+
+h1, h2, h3, h4, h5, h6 {
+ font-weight: 400;
+ line-height: 1.1;
+ margin-bottom: .8em;
+ font-family: 'Lobster', cursive;
+
+}
+
+h3, h4, h5, h6 { margin-top: .8em; }
+
+hr { border: 2px solid #EEEEEE; }
+
+/* Anchors */
+a {outline: 0;}
+a img {border: 0px; text-decoration: none;}
+a:link, a:visited {
+ color: #7A4700;
+ padding: 0 1px;
+ text-decoration: underline;
+}
+a:hover, a:active {
+ background-color: #7A4700;
+ color: #fff;
+ text-decoration: none;
+ text-shadow: 1px 1px 1px #333;
+}
+
+h1 a:hover {
+ background-color: inherit
+}
+
+/* Paragraphs */
+p {margin-bottom: 1.143em;}
+
+strong, b {font-weight: bold;}
+em, i {font-style: italic;}
+
+::-moz-selection {background: #F6CF74; color: #fff;}
+::selection {background: #F6CF74; color: #fff;}
+
+/* Lists */
+ul {
+ list-style: outside disc;
+ margin: 1em 0 1.5em 1.5em;
+}
+
+ol {
+ list-style: outside decimal;
+ margin: 1em 0 1.5em 1.5em;
+}
+
+.post-info {
+ float:right;
+ margin:5px;
+ padding:9px;
+}
+
+.post-info p{
+ margin-bottom: 1px;
+}
+
+.readmore { float: right }
+
+dl {margin: 0 0 1.5em 0;}
+dt {font-weight: bold;}
+dd {margin-left: 1.5em;}
+
+pre{background-color: #000; padding: 10px; color: #fff; margin: 10px; overflow: auto;}
+
+/* Quotes */
+blockquote {
+ margin: 20px;
+ font-style: italic;
+}
+cite {}
+
+q {}
+
+div.note {
+ float: right;
+ margin: 5px;
+ font-size: 85%;
+ max-width: 300px;
+}
+
+/* Tables */
+table {margin: .5em auto 1.5em auto; width: 98%;}
+
+ /* Thead */
+ thead th {padding: .5em .4em; text-align: left;}
+ thead td {}
+
+ /* Tbody */
+ tbody td {padding: .5em .4em;}
+ tbody th {}
+
+ tbody .alt td {}
+ tbody .alt th {}
+
+ /* Tfoot */
+ tfoot th {}
+ tfoot td {}
+
+/* HTML5 tags */
+header, section, footer,
+aside, nav, article, figure {
+ display: block;
+}
+
+/***** Layout *****/
+.body {clear: both; margin: 0 auto; width: 800px;}
+img.right figure.right {float: right; margin: 0 0 2em 2em;}
+img.left, figure.left {float: right; margin: 0 0 2em 2em;}
+
+/*
+ Header
+*****************/
+#banner {
+ margin: 0 auto;
+ padding: 2.5em 0 0 0;
+}
+
+ /* Banner */
+ #banner h1 {font-size: 3.571em; line-height: 0;}
+ #banner h1 a:link, #banner h1 a:visited {
+ color: #000305;
+ display: block;
+ font-weight: bold;
+ margin: 0 0 .6em .2em;
+ text-decoration: none;
+ width: 427px;
+ }
+ #banner h1 a:hover, #banner h1 a:active {
+ background: none;
+ color: #7A4700;
+ text-shadow: none;
+ }
+
+ #banner h1 strong {font-size: 0.36em; font-weight: normal;}
+
+ /* Main Nav */
+ #banner nav {
+ background: #000305;
+ font-size: 1.143em;
+ height: 40px;
+ line-height: 30px;
+ margin: 0 auto 2em auto;
+ padding: 0;
+ text-align: center;
+ width: 800px;
+
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ }
+
+ #banner nav ul {list-style: none; margin: 0 auto; width: 800px;}
+ #banner nav li {float: left; display: inline; margin: 0;}
+
+ #banner nav a:link, #banner nav a:visited {
+ color: #fff;
+ display: inline-block;
+ height: 30px;
+ padding: 5px 1.5em;
+ text-decoration: none;
+ }
+ #banner nav a:hover, #banner nav a:active,
+ #banner nav .active a:link, #banner nav .active a:visited {
+ background: #C74451;
+ color: #fff;
+ text-shadow: none !important;
+ }
+
+ #banner nav li:first-child a {
+ border-top-left-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+
+ border-bottom-left-radius: 5px;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ }
+
+/*
+ Featured
+*****************/
+#featured {
+
+ background: url("toptop.png") no-repeat, url('downdown.png') no-repeat, url("white.png") repeat;
+ background-position: top,bottom,top;
+ margin-bottom: 2em;
+ overflow: hidden;
+ padding: 20px;
+ width: 760px;
+
+ border-radius: 0px;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+}
+
+#featured figure {
+ border: 2px solid #eee;
+ float: right;
+ margin: 0.786em 2em 0 5em;
+ width: 248px;
+}
+#featured figure img {display: block; float: right;}
+
+#featured h2 {color: #C74451; font-size: 1.714em; margin-bottom: 0.333em;}
+#featured h3 {font-size: 1.429em; margin-bottom: .5em;}
+
+#featured h3 a:link, #featured h3 a:visited {color: #000305; text-decoration: none;}
+#featured h3 a:hover, #featured h3 a:active {color: #fff;}
+
+/*
+ Body
+*****************/
+#content {
+ background: url("toptop.png") no-repeat, url('downdown.png') no-repeat, url("white.png") repeat;
+ background-position: top,bottom,top;
+ margin-bottom: 2em;
+ overflow: hidden;
+ padding: 20px 20px;
+ width: 760px;
+
+ border-radius: 0px;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+}
+
+/*
+ Extras
+*****************/
+#extras {margin: 0 auto 3em auto; overflow: hidden;}
+
+#extras ul {list-style: none; margin: 0;}
+#extras li {border-bottom: 1px solid #fff;}
+#extras h2 {
+ color: #000000;
+ font-size: 1.429em;
+ margin-bottom: .25em;
+ padding: 0 3px;
+}
+
+#extras a:link, #extras a:visited {
+ color: #444;
+ display: block;
+ border-bottom: 1px solid #F4E3E3;
+ text-decoration: none;
+ padding: .3em .25em;
+}
+
+#extras a:hover, #extras a:active {color: #fff;}
+
+ /* Blogroll */
+ #extras .blogroll {
+ float: left;
+ width: 615px;
+ }
+
+ #extras .blogroll li {float: left; margin: 0 20px 0 0; width: 185px;}
+
+ /* Social */
+ #extras .social {
+ float: right;
+ width: 175px;
+ }
+
+ #extras div[class='social'] a {
+ background-repeat: no-repeat;
+ background-position: 3px 6px;
+ padding-left: 25px;
+ }
+
+ /* Icons */
+
+
+ .social a[href*='facebook.com'] {background-image: url('../images/icons/facebook.png');
+ background-size: 16px 16px; }
+ .social a[href*='twitter.com'] {background-image: url('../images/icons/twitter_alt.png');
+ background-size: 16px 16px; }
+ .social a[href*='quora.com'] {background-image: url('../images/icons/quora.png');
+ background-size: 16px 16px; }
+ .social a[href*='github.com'] {background-image: url('../images/icons/github.png');
+ background-size: 16px 16px; }
+ .social a[href*='news.ycombinator.com'] {background-image: url('../images/icons/hacker_news.png');
+ background-size: 16px 16px; }
+ .social a[href*='instapaper.com'] {background-image: url('../images/icons/instapaper.png');
+ background-size: 16px 16px; }
+ .social a[href*='hypem.com'] {background-image: url('../images/icons/hype_machine.png');
+ background-size: 16px 16px; }
+
+
+/*
+ About
+*****************/
+#about {
+ background: #fff;
+ font-style: normal;
+ margin-bottom: 2em;
+ overflow: hidden;
+ padding: 20px;
+ text-align: left;
+ width: 760px;
+
+ border-radius: 10px;
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+}
+
+#about .primary {float: left; width: 165px;}
+#about .primary strong {color: #C64350; display: block; font-size: 1.286em;}
+#about .photo {float: left; margin: 5px 20px;}
+
+#about .url:link, #about .url:visited {text-decoration: none;}
+
+#about .bio {float: right; width: 500px;}
+
+/*
+ Footer
+*****************/
+#contentinfo {padding-bottom: 2em; text-align: right;}
+
+/***** Sections *****/
+/* Blog */
+.hentry {
+ display: block;
+ clear: both;
+ border-bottom: 1px solid #eee;
+ padding: 1.5em 0;
+}
+li:last-child .hentry, #content > .hentry {border: 0; margin: 0;}
+#content > .hentry {padding: 1em 0;}
+.hentry img{display : none ;}
+.entry-title {font-size: 3em; margin-bottom: 10px; margin-top: 0;}
+.entry-title a:link, .entry-title a:visited {text-decoration: none; color: #333;}
+.entry-title a:visited {background-color: #fff;}
+
+.hentry .post-info * {font-style: normal;}
+
+ /* Content */
+ .hentry footer {margin-bottom: 2em;}
+ .hentry footer address {display: inline;}
+ #posts-list footer address {display: block;}
+
+ /* Blog Index */
+ #posts-list {list-style: none; margin: 0;}
+ #posts-list .hentry {padding-left: 10px; position: relative;}
+
+ #posts-list footer {
+ left: 10px;
+ position: relative;
+ float: left;
+ top: 0.5em;
+ width: 190px;
+ }
+
+ /* About the Author */
+ #about-author {
+ background: #f9f9f9;
+ clear: both;
+ font-style: normal;
+ margin: 2em 0;
+ padding: 10px 20px 15px 20px;
+
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ }
+
+ #about-author strong {
+ color: #C64350;
+ clear: both;
+ display: block;
+ font-size: 1.429em;
+ }
+
+ #about-author .photo {border: 1px solid #ddd; float: left; margin: 5px 1em 0 0;}
+
+ /* Comments */
+ #comments-list {list-style: none; margin: 0 1em;}
+ #comments-list blockquote {
+ background: #f8f8f8;
+ clear: both;
+ font-style: normal;
+ margin: 0;
+ padding: 15px 20px;
+
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ }
+ #comments-list footer {color: #888; padding: .5em 1em 0 0; text-align: right;}
+
+ #comments-list li:nth-child(2n) blockquote {background: #F5f5f5;}
+
+ /* Add a Comment */
+ #add-comment label {clear: left; float: left; text-align: left; width: 150px;}
+ #add-comment input[type='text'],
+ #add-comment input[type='email'],
+ #add-comment input[type='url'] {float: left; width: 200px;}
+
+ #add-comment textarea {float: left; height: 150px; width: 495px;}
+
+ #add-comment p.req {clear: both; margin: 0 .5em 1em 0; text-align: right;}
+
+ #add-comment input[type='submit'] {float: right; margin: 0 .5em;}
+ #add-comment * {margin-bottom: .5em;} \ No newline at end of file
diff --git a/subtle/static/css/paper.png b/subtle/static/css/paper.png
new file mode 100644
index 0000000..a5ab482
--- /dev/null
+++ b/subtle/static/css/paper.png
Binary files differ
diff --git a/subtle/static/css/pygment.css b/subtle/static/css/pygment.css
new file mode 100755
index 0000000..594b0fa
--- /dev/null
+++ b/subtle/static/css/pygment.css
@@ -0,0 +1,205 @@
+.hll {
+background-color:#FFFFCC;
+}
+.c {
+color:#408090;
+font-style:italic;
+}
+.err {
+border:1px solid #FF0000;
+}
+.k {
+color:#007020;
+font-weight:bold;
+}
+.o {
+color:#666666;
+}
+.cm {
+color:#408090;
+font-style:italic;
+}
+.cp {
+color:#007020;
+}
+.c1 {
+color:#408090;
+font-style:italic;
+}
+.cs {
+background-color:#FFF0F0;
+color:#408090;
+}
+.gd {
+color:#A00000;
+}
+.ge {
+font-style:italic;
+}
+.gr {
+color:#FF0000;
+}
+.gh {
+color:#000080;
+font-weight:bold;
+}
+.gi {
+color:#00A000;
+}
+.go {
+color:#303030;
+}
+.gp {
+color:#C65D09;
+font-weight:bold;
+}
+.gs {
+font-weight:bold;
+}
+.gu {
+color:#800080;
+font-weight:bold;
+}
+.gt {
+color:#0040D0;
+}
+.kc {
+color:#007020;
+font-weight:bold;
+}
+.kd {
+color:#007020;
+font-weight:bold;
+}
+.kn {
+color:#007020;
+font-weight:bold;
+}
+.kp {
+color:#007020;
+}
+.kr {
+color:#007020;
+font-weight:bold;
+}
+.kt {
+color:#902000;
+}
+.m {
+color:#208050;
+}
+.s {
+color:#4070A0;
+}
+.na {
+color:#4070A0;
+}
+.nb {
+color:#007020;
+}
+.nc {
+color:#0E84B5;
+font-weight:bold;
+}
+.no {
+color:#60ADD5;
+}
+.nd {
+color:#555555;
+font-weight:bold;
+}
+.ni {
+color:#D55537;
+font-weight:bold;
+}
+.ne {
+color:#007020;
+}
+.nf {
+color:#06287E;
+}
+.nl {
+color:#002070;
+font-weight:bold;
+}
+.nn {
+color:#0E84B5;
+font-weight:bold;
+}
+.nt {
+color:#062873;
+font-weight:bold;
+}
+.nv {
+color:#BB60D5;
+}
+.ow {
+color:#007020;
+font-weight:bold;
+}
+.w {
+color:#BBBBBB;
+}
+.mf {
+color:#208050;
+}
+.mh {
+color:#208050;
+}
+.mi {
+color:#208050;
+}
+.mo {
+color:#208050;
+}
+.sb {
+color:#4070A0;
+}
+.sc {
+color:#4070A0;
+}
+.sd {
+color:#4070A0;
+font-style:italic;
+}
+.s2 {
+color:#4070A0;
+}
+.se {
+color:#4070A0;
+font-weight:bold;
+}
+.sh {
+color:#4070A0;
+}
+.si {
+color:#70A0D0;
+font-style:italic;
+}
+.sx {
+color:#C65D09;
+}
+.sr {
+color:#235388;
+}
+.s1 {
+color:#4070A0;
+}
+.ss {
+color:#517918;
+}
+.bp {
+color:#007020;
+}
+.vc {
+color:#BB60D5;
+}
+.vg {
+color:#BB60D5;
+}
+.vi {
+color:#BB60D5;
+}
+.il {
+color:#208050;
+}
diff --git a/subtle/static/css/reset.css b/subtle/static/css/reset.css
new file mode 100755
index 0000000..1e21756
--- /dev/null
+++ b/subtle/static/css/reset.css
@@ -0,0 +1,52 @@
+/*
+ Name: Reset Stylesheet
+ Description: Resets browser's default CSS
+ Author: Eric Meyer
+ Author URI: http://meyerweb.com/eric/tools/css/reset/
+*/
+
+/* v1.0 | 20080212 */
+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, font, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td {
+ background: transparent;
+ border: 0;
+ font-size: 100%;
+ margin: 0;
+ outline: 0;
+ padding: 0;
+ vertical-align: baseline;
+}
+
+body {line-height: 1;}
+
+ol, ul {list-style: none;}
+
+blockquote, q {quotes: none;}
+
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+
+/* remember to define focus styles! */
+:focus {
+ outline: 0;
+}
+
+/* remember to highlight inserts somehow! */
+ins {text-decoration: none;}
+del {text-decoration: line-through;}
+
+/* tables still need 'cellspacing="0"' in the markup */
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+} \ No newline at end of file
diff --git a/subtle/static/css/toptop.png b/subtle/static/css/toptop.png
new file mode 100644
index 0000000..17e7ead
--- /dev/null
+++ b/subtle/static/css/toptop.png
Binary files differ
diff --git a/subtle/static/css/typogrify.css b/subtle/static/css/typogrify.css
new file mode 100755
index 0000000..c9b34dc
--- /dev/null
+++ b/subtle/static/css/typogrify.css
@@ -0,0 +1,3 @@
+.caps {font-size:.92em;}
+.amp {color:#666; font-size:1.05em;font-family:"Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua",serif; font-style:italic;}
+.dquo {margin-left:-.38em;}
diff --git a/subtle/static/css/wavecut.png b/subtle/static/css/wavecut.png
new file mode 100644
index 0000000..fd574a2
--- /dev/null
+++ b/subtle/static/css/wavecut.png
Binary files differ
diff --git a/subtle/static/css/white.png b/subtle/static/css/white.png
new file mode 100644
index 0000000..97fb220
--- /dev/null
+++ b/subtle/static/css/white.png
Binary files differ
diff --git a/subtle/static/css/wide.css b/subtle/static/css/wide.css
new file mode 100755
index 0000000..88fd59c
--- /dev/null
+++ b/subtle/static/css/wide.css
@@ -0,0 +1,48 @@
+@import url("main.css");
+
+body {
+ font:1.3em/1.3 "Hoefler Text","Georgia",Georgia,serif,sans-serif;
+}
+
+.post-info{
+ display: none;
+}
+
+#banner nav {
+ display: none;
+ -moz-border-radius: 0px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ font-size: 1em;
+ background: #F5F4EF;
+}
+
+#banner nav ul{
+ padding-right: 50px;
+}
+
+#banner nav li{
+ float: right;
+ color: #000;
+}
+
+#banner nav li a {
+ color: #000;
+}
+
+#banner h1 {
+ margin-bottom: -18px;
+}
+
+#featured, #extras {
+ padding: 50px;
+}
+
+#featured {
+ padding-top: 20px;
+}
+
+#extras {
+ padding-top: 0px;
+ padding-bottom: 0px;
+}
diff --git a/subtle/templates/analytics.html b/subtle/templates/analytics.html
new file mode 100755
index 0000000..ba174fc
--- /dev/null
+++ b/subtle/templates/analytics.html
@@ -0,0 +1,11 @@
+{% if GOOGLE_ANALYTICS %}
+ <script type="text/javascript">
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+ </script>
+ <script type="text/javascript">
+ try {
+ var pageTracker = _gat._getTracker("{{GOOGLE_ANALYTICS}}");
+ pageTracker._trackPageview();
+ } catch(err) {}</script>
+{% endif %} \ No newline at end of file
diff --git a/subtle/templates/archives.html b/subtle/templates/archives.html
new file mode 100755
index 0000000..f678494
--- /dev/null
+++ b/subtle/templates/archives.html
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+{% block content %}
+<section id="content" class="body">
+<h1>Archives for {{ SITENAME }}</h1>
+
+<dl>
+{% for article in dates %}
+ <dt>{{ article.locale_date }}</dt>
+ <dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
+{% endfor %}
+</dl>
+</section>
+{% endblock %}
diff --git a/subtle/templates/article.html b/subtle/templates/article.html
new file mode 100755
index 0000000..fc7e589
--- /dev/null
+++ b/subtle/templates/article.html
@@ -0,0 +1,34 @@
+{% extends "base.html" %}
+{% block title %}{{ article.title|striptags }}{% endblock %}
+{% block content %}
+<section id="content" class="body">
+ <article>
+ <header>
+ <h1 class="entry-title">
+ <a href="{{ article.url }}" rel="bookmark"
+ title="Permalink to {{ article.title|striptags }}">{{ article.title}}</a></h1>
+ {% include 'twitter.html' %}
+ </header>
+
+ <div class="entry-content">
+ {% include 'article_infos.html' %}
+ {{ article.content }}
+ </div><!-- /.entry-content -->
+ {% if DISQUS_SITENAME %}
+ <div class="comments">
+ <h2>Comments !</h2>
+ <div id="disqus_thread"></div>
+ <script type="text/javascript">
+ var disqus_identifier = "{{ article.url }}";
+ (function() {
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+ dsq.src = 'http://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
+ (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+ })();
+ </script>
+ </div>
+ {% endif %}
+
+ </article>
+</section>
+{% endblock %}
diff --git a/subtle/templates/article_infos.html b/subtle/templates/article_infos.html
new file mode 100755
index 0000000..a1993a0
--- /dev/null
+++ b/subtle/templates/article_infos.html
@@ -0,0 +1,14 @@
+<footer class="post-info">
+ <abbr class="published" title="{{ article.date.isoformat() }}">
+ {{ article.locale_date }}
+ </abbr>
+
+ {% if article.author %}
+ <address class="vcard author">
+ By <a class="url fn" href="{{ SITEURL }}/{{ article.author.url }}">{{ article.author }}</a>
+ </address>
+ {% endif %}
+<p>In <a href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>. {% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the pdf</a>{% endif %}</p>
+{% include 'taglist.html' %}
+{% include 'translations.html' %}
+</footer><!-- /.post-info -->
diff --git a/subtle/templates/author.html b/subtle/templates/author.html
new file mode 100755
index 0000000..0b37290
--- /dev/null
+++ b/subtle/templates/author.html
@@ -0,0 +1,2 @@
+{% extends "index.html" %}
+{% block title %}{{ SITENAME }} - {{ author }}{% endblock %}
diff --git a/subtle/templates/authors.html b/subtle/templates/authors.html
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/subtle/templates/authors.html
diff --git a/subtle/templates/base.html b/subtle/templates/base.html
new file mode 100755
index 0000000..64584c8
--- /dev/null
+++ b/subtle/templates/base.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <title>{% block title %}{{ SITENAME }}{%endblock%}</title>
+ <meta charset="utf-8" />
+ <link rel="stylesheet" href="{{ SITEURL }}/theme/css/{{ CSS_FILE }}" type="text/css" />
+
+
+ <!--[if IE]>
+ <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
+
+ <!--[if lte IE 7]>
+ <link rel="stylesheet" type="text/css" media="all" href="{{ SITEURL }}/css/ie.css"/>
+ <script src="{{ SITEURL }}/js/IE8.js" type="text/javascript"></script><![endif]-->
+
+ <!--[if lt IE 7]>
+ <link rel="stylesheet" type="text/css" media="all" href="{{ SITEURL }}/css/ie6.css"/><![endif]-->
+
+</head>
+
+<body id="index" class="home">
+{% include 'github.html' %}
+ <header id="banner" class="body">
+ <h1><a href="{{ SITEURL }}">{{ SITENAME }} {% if SITESUBTITLE %} <strong>{{ SITESUBTITLE }}</strong>{% endif %}</a></h1>
+ <nav><ul>
+ {% for title, link in MENUITEMS %}
+ <li><a href="{{ link }}">{{ title }}</a></li>
+ {% endfor %}
+ {% if DISPLAY_PAGES_ON_MENU %}
+ {% for page in PAGES %}
+ <li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
+ {% endfor %}
+ {% endif %}
+ {% for cat, null in categories %}
+ <li {% if cat == category %}class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li>
+ {% endfor %}
+ </ul></nav>
+ </header><!-- /#banner -->
+ {% block content %}
+ {% endblock %}
+ <section id="extras" class="body">
+ {% if LINKS %}
+ <div class="blogroll">
+ <h2>blogroll</h2>
+ <ul>
+ {% for name, link in LINKS %}
+ <li><a href="{{ link }}">{{ name }}</a></li>
+ {% endfor %}
+ </ul>
+ </div><!-- /.blogroll -->
+ {% endif %}
+ {% if SOCIAL %}
+ <div class="social">
+ <h2>social</h2>
+ <ul>
+
+ {% for name, link in SOCIAL %}
+ <li><a href="{{ link }}">{{ name }}</a></li>
+ {% endfor %}
+ </ul>
+ </div><!-- /.social -->
+ {% endif %}
+ </section><!-- /#extras -->
+
+ <footer id="contentinfo" class="body">
+
+ </footer><!-- /#contentinfo -->
+
+{% include 'analytics.html' %}
+{% include 'piwik.html' %}
+{% include 'gosquared.html' %}
+{% include 'disqus_script.html' %}
+</body>
+</html>
diff --git a/subtle/templates/categories.html b/subtle/templates/categories.html
new file mode 100755
index 0000000..e29be0c
--- /dev/null
+++ b/subtle/templates/categories.html
@@ -0,0 +1,8 @@
+{% extends "base.html" %}
+{% block content %}
+<ul>
+{% for category, articles in categories %}
+ <li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a></li>
+{% endfor %}
+</ul>
+{% endblock %}
diff --git a/subtle/templates/category.html b/subtle/templates/category.html
new file mode 100755
index 0000000..56f8e93
--- /dev/null
+++ b/subtle/templates/category.html
@@ -0,0 +1,2 @@
+{% extends "index.html" %}
+{% block title %}{{ SITENAME }} - {{ category }}{% endblock %}
diff --git a/subtle/templates/comments.html b/subtle/templates/comments.html
new file mode 100755
index 0000000..bb033c0
--- /dev/null
+++ b/subtle/templates/comments.html
@@ -0,0 +1 @@
+{% if DISQUS_SITENAME %}<p>There are <a href="{{ SITEURL }}/{{ article.url }}#disqus_thread">comments</a>.</p>{% endif %}
diff --git a/subtle/templates/disqus_script.html b/subtle/templates/disqus_script.html
new file mode 100755
index 0000000..c4f442c
--- /dev/null
+++ b/subtle/templates/disqus_script.html
@@ -0,0 +1,11 @@
+{% if DISQUS_SITENAME %}
+<script type="text/javascript">
+ var disqus_shortname = '{{ DISQUS_SITENAME }}';
+ (function () {
+ var s = document.createElement('script'); s.async = true;
+ s.type = 'text/javascript';
+ s.src = 'http://' + disqus_shortname + '.disqus.com/count.js';
+ (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
+ }());
+</script>
+{% endif %}
diff --git a/subtle/templates/github.html b/subtle/templates/github.html
new file mode 100755
index 0000000..75592ac
--- /dev/null
+++ b/subtle/templates/github.html
@@ -0,0 +1,9 @@
+{% if GITHUB_URL %}
+<a href="{{ GITHUB_URL }}">
+{% if GITHUB_POSITION != "left" %}
+<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub" />
+{% else %}
+<img style="position: absolute; top: 0; left: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_left_white_ffffff.png" alt="Fork me on GitHub" />
+{% endif %}
+</a>
+{% endif %}
diff --git a/subtle/templates/gosquared.html b/subtle/templates/gosquared.html
new file mode 100644
index 0000000..f47efcf
--- /dev/null
+++ b/subtle/templates/gosquared.html
@@ -0,0 +1,14 @@
+{% if GOSQUARED_SITENAME %}
+<script type="text/javascript">
+ var GoSquared={};
+ GoSquared.acct = "{{ GOSQUARED_SITENAME }}";
+ (function(w){
+ function gs(){
+ w._gstc_lt=+(new Date); var d=document;
+ var g = d.createElement("script"); g.type = "text/javascript"; g.async = true; g.src = "//d1l6p2sc9645hc.cloudfront.net/tracker.js";
+ var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(g, s);
+ }
+ w.addEventListener?w.addEventListener("load",gs,false):w.attachEvent("onload",gs);
+ })(window);
+</script>
+{% endif %}
diff --git a/subtle/templates/index.html b/subtle/templates/index.html
new file mode 100755
index 0000000..69dc462
--- /dev/null
+++ b/subtle/templates/index.html
@@ -0,0 +1,60 @@
+{% extends "base.html" %}
+{% block content_title %}{% endblock %}
+{% block content %}
+{% if articles %}
+ {% for article in articles_page.object_list %}
+
+ {# First item #}
+ {% if loop.first and not articles_page.has_previous() %}
+ <aside id="featured" class="body">
+ <article>
+ <h1 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></h1>
+ {% include 'article_infos.html' %}{{ article.content }}{% include 'comments.html' %}
+ </article>
+ {% if loop.length == 1 %}
+ {% include 'pagination.html' %}
+ {% endif %}
+ </aside><!-- /#featured -->
+ {% if loop.length > 1 %}
+ <section id="content" class="body">
+ <h1>Other articles</h1>
+ <hr />
+ <ol id="posts-list" class="hfeed">
+ {% endif %}
+ {# other items #}
+ {% else %}
+ {% if loop.first and articles_page.has_previous %}
+ <section id="content" class="body">
+ <ol id="posts-list" class="hfeed" start="{{ articles_paginator.per_page -1 }}">
+ {% endif %}
+ <li><article class="hentry">
+ <header>
+ <h1><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title}}">{{ article.title }}</a></h1>
+ </header>
+
+ <div class="entry-content">
+ {% include 'article_infos.html' %}
+ {{ article.summary }}
+ <a class="readmore" href="{{ SITEURL }}/{{ article.url }}">read more</a>
+ {% include 'comments.html' %}
+ </div><!-- /.entry-content -->
+ </article></li>
+ {% endif %}
+ {% if loop.last and (articles_page.has_previous()
+ or not articles_page.has_previous() and loop.length > 1) %}
+ {% include 'pagination.html' %}
+ {% endif %}
+ {% if loop.last %}
+ </ol><!-- /#posts-list -->
+ </section><!-- /#content -->
+ {% endif %}
+ {% endfor %}
+{% else %}
+<section id="content" class="body">
+<h2>Pages</h2>
+ {% for page in PAGES %}
+ <li><a href="{{ SITEURL }}/{{ page.url }}">{{ page.title }}</a></li>
+ {% endfor %}
+</section>
+{% endif %}
+{% endblock content %}
diff --git a/subtle/templates/page.html b/subtle/templates/page.html
new file mode 100755
index 0000000..9635fb8
--- /dev/null
+++ b/subtle/templates/page.html
@@ -0,0 +1,10 @@
+{% extends "base.html" %}
+{% block title %}{{ page.title }}{% endblock %}
+{% block content %}
+<section id="content" class="body">
+ <h1 class="entry-title">{{ page.title }}</h1>
+ {% if PDF_PROCESSOR %}<a href="{{ SITEURL }}/pdf/{{ page.slug }}.pdf">get
+ the pdf</a>{% endif %}
+ {{ page.content }}
+</section>
+{% endblock %}
diff --git a/subtle/templates/pagination.html b/subtle/templates/pagination.html
new file mode 100755
index 0000000..83c587a
--- /dev/null
+++ b/subtle/templates/pagination.html
@@ -0,0 +1,15 @@
+{% if DEFAULT_PAGINATION %}
+<p class="paginator">
+ {% if articles_page.has_previous() %}
+ {% if articles_page.previous_page_number() == 1 %}
+ <a href="{{ SITEURL }}/{{ page_name }}.html">&laquo;</a>
+ {% else %}
+ <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.previous_page_number() }}.html">&laquo;</a>
+ {% endif %}
+ {% endif %}
+ Page {{ articles_page.number }} / {{ articles_paginator.num_pages }}
+ {% if articles_page.has_next() %}
+ <a href="{{ SITEURL }}/{{ page_name }}{{ articles_page.next_page_number() }}.html">&raquo;</a>
+ {% endif %}
+</p>
+{% endif %}
diff --git a/subtle/templates/piwik.html b/subtle/templates/piwik.html
new file mode 100755
index 0000000..ff459af
--- /dev/null
+++ b/subtle/templates/piwik.html
@@ -0,0 +1,16 @@
+{% if PIWIK_URL and PIWIK_SITE_ID %}
+ <script type="text/javascript">
+ {% if PIWIK_SSL_URL %}
+ var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ PIWIK_SSL_URL }}/" : "http://{{ PIWIK_URL }}/");
+ {% else %}
+ var pkBaseURL = (("https:" == document.location.protocol) ? "https://{{ PIWIK_URL }}/" : "http://{{ PIWIK_URL }}/");
+ {% endif %}
+ document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
+ </script><script type="text/javascript">
+ try {
+ var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {{ PIWIK_SITE_ID }});
+ piwikTracker.trackPageView();
+ piwikTracker.enableLinkTracking();
+ } catch( err ) {}
+ </script><noscript><p><img src="http://{{ PIWIK_URL }}/piwik.php?idsite={{ PIWIK_SITE_ID }}" style="border:0" alt="" /></p></noscript>
+{% endif %} \ No newline at end of file
diff --git a/subtle/templates/tag.html b/subtle/templates/tag.html
new file mode 100755
index 0000000..68cdcba
--- /dev/null
+++ b/subtle/templates/tag.html
@@ -0,0 +1,2 @@
+{% extends "index.html" %}
+{% block title %}{{ SITENAME }} - {{ tag }}{% endblock %}
diff --git a/subtle/templates/taglist.html b/subtle/templates/taglist.html
new file mode 100755
index 0000000..c792fd7
--- /dev/null
+++ b/subtle/templates/taglist.html
@@ -0,0 +1,2 @@
+{% if article.tags %}<p>tags: {% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% endfor %}</p>{% endif %}
+{% if PDF_PROCESSOR %}<p><a href="{{ SITEURL }}/pdf/{{ article.slug }}.pdf">get the pdf</a></p>{% endif %}
diff --git a/subtle/templates/tags.html b/subtle/templates/tags.html
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/subtle/templates/tags.html
diff --git a/subtle/templates/translations.html b/subtle/templates/translations.html
new file mode 100755
index 0000000..0079883
--- /dev/null
+++ b/subtle/templates/translations.html
@@ -0,0 +1,6 @@
+{% if article.translations %}
+Translations:
+ {% for translation in article.translations %}
+ <a href="{{ SITEURL }}/{{ translation.url }}">{{ translation.lang }}</a>
+ {% endfor %}
+{% endif %}
diff --git a/subtle/templates/twitter.html b/subtle/templates/twitter.html
new file mode 100755
index 0000000..c6b159f
--- /dev/null
+++ b/subtle/templates/twitter.html
@@ -0,0 +1,3 @@
+{% if TWITTER_USERNAME %}
+<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" data-via="{{TWITTER_USERNAME}}">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
+{% endif %} \ No newline at end of file