[tor-commits] [nyx/master] Initial docs

atagar at torproject.org atagar at torproject.org
Wed Nov 2 17:35:29 UTC 2016


commit 3d57d39df1d4bc316c3f5a613e23f00719a00688
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Apr 11 19:42:32 2016 -0700

    Initial docs
    
    Barebones sphinx site based on Stem's. I plan for Nyx's to be unique but this
    gives a good foundation to start with. Besides, parts like the download page
    and changelog will be the same.
---
 .gitignore                                         |   1 +
 docs/Makefile                                      | 131 ++++++
 docs/_static/buttons/bug_tracker.png               | Bin 0 -> 28650 bytes
 docs/_static/buttons/change_log.png                | Bin 0 -> 26676 bytes
 docs/_static/buttons/download.png                  | Bin 0 -> 27728 bytes
 docs/_static/buttons/resources/bug_tracker.xcf     | Bin 0 -> 83732 bytes
 .../buttons/resources/button_background.xcf        | Bin 0 -> 53014 bytes
 docs/_static/buttons/resources/change_log.xcf      | Bin 0 -> 66972 bytes
 docs/_static/buttons/resources/download.xcf        | Bin 0 -> 84072 bytes
 docs/_static/favicon.png                           | Bin 0 -> 1555 bytes
 docs/_static/haiku.css_t                           | 456 +++++++++++++++++++++
 docs/_static/label/archlinux.png                   | Bin 0 -> 1618 bytes
 docs/_static/label/debian.png                      | Bin 0 -> 1339 bytes
 docs/_static/label/fedora.png                      | Bin 0 -> 1399 bytes
 docs/_static/label/freebsd.png                     | Bin 0 -> 1645 bytes
 docs/_static/label/gentoo.png                      | Bin 0 -> 1147 bytes
 docs/_static/label/osx.png                         | Bin 0 -> 1767 bytes
 docs/_static/label/python_package_index.png        | Bin 0 -> 3106 bytes
 docs/_static/label/redhat.png                      | Bin 0 -> 1492 bytes
 docs/_static/label/resources/archlinux.xcf         | Bin 0 -> 3573 bytes
 docs/_static/label/resources/debian.xcf            | Bin 0 -> 3137 bytes
 docs/_static/label/resources/fedora.xcf            | Bin 0 -> 3145 bytes
 docs/_static/label/resources/freebsd.xcf           | Bin 0 -> 3611 bytes
 docs/_static/label/resources/gentoo.xcf            | Bin 0 -> 2779 bytes
 docs/_static/label/resources/osx.xcf               | Bin 0 -> 3820 bytes
 .../label/resources/python_package_index.xcf       | Bin 0 -> 6285 bytes
 docs/_static/label/resources/redhat.xcf            | Bin 0 -> 3504 bytes
 docs/_static/label/resources/slackware.xcf         | Bin 0 -> 3567 bytes
 docs/_static/label/resources/source_repository.xcf | Bin 0 -> 5479 bytes
 docs/_static/label/resources/ubuntu.xcf            | Bin 0 -> 3316 bytes
 docs/_static/label/slackware.png                   | Bin 0 -> 1783 bytes
 docs/_static/label/source_repository.png           | Bin 0 -> 2757 bytes
 docs/_static/label/ubuntu.png                      | Bin 0 -> 1126 bytes
 docs/_static/logo.png                              | Bin 0 -> 6885 bytes
 docs/_static/logo_orig.png                         | Bin 0 -> 9536 bytes
 docs/_static/section/download/archlinux.png        | Bin 0 -> 7144 bytes
 docs/_static/section/download/debian.png           | Bin 0 -> 5646 bytes
 docs/_static/section/download/fedora.png           | Bin 0 -> 4447 bytes
 docs/_static/section/download/freebsd.png          | Bin 0 -> 18114 bytes
 docs/_static/section/download/gentoo.png           | Bin 0 -> 16245 bytes
 docs/_static/section/download/git.png              | Bin 0 -> 2273 bytes
 docs/_static/section/download/git_alt.png          | Bin 0 -> 4749 bytes
 docs/_static/section/download/osx.png              | Bin 0 -> 3660 bytes
 docs/_static/section/download/pypi.png             | Bin 0 -> 3827 bytes
 docs/_static/section/download/redhat.png           | Bin 0 -> 4944 bytes
 docs/_static/section/download/resources/fedora.svg |  74 ++++
 docs/_static/section/download/slackware.png        | Bin 0 -> 10938 bytes
 docs/_static/section/download/ubuntu.png           | Bin 0 -> 4814 bytes
 docs/_static/style.css                             |  17 +
 docs/_templates/layout.html                        |  80 ++++
 docs/change_log.rst                                |  41 ++
 docs/conf.py                                       | 239 +++++++++++
 docs/contents.rst                                  |   9 +
 docs/download.rst                                  | 196 +++++++++
 docs/index.rst                                     |  32 ++
 docs/republish                                     |   7 +
 docs/republish.py                                  |  89 ++++
 docs/roles.py                                      |  73 ++++
 58 files changed, 1445 insertions(+)

diff --git a/.gitignore b/.gitignore
index e0ab993..ed86815 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
 *.pyc
 src/stem/
 build/
+docs/_build/
 *.swp
 
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000..e9ca020
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,131 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html       to make standalone HTML files"
+	@echo "  dirhtml    to make HTML files named index.html in directories"
+	@echo "  singlehtml to make a single large HTML file"
+	@echo "  pickle     to make pickle files"
+	@echo "  json       to make JSON files"
+	@echo "  htmlhelp   to make HTML files and a HTML help project"
+	@echo "  qthelp     to make HTML files and a qthelp project"
+	@echo "  devhelp    to make HTML files and a Devhelp project"
+	@echo "  epub       to make an epub"
+	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+	@echo "  text       to make text files"
+	@echo "  man        to make manual pages"
+	@echo "  changes    to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck  to check all external links for integrity"
+	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+	@rm -f ./nyx.* ./modules.rst
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+singlehtml:
+	$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+	@echo
+	@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Nyx.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Nyx.qhc"
+
+devhelp:
+	$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+	@echo
+	@echo "Build finished."
+	@echo "To view the help file:"
+	@echo "# mkdir -p $$HOME/.local/share/devhelp/Nyx"
+	@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Nyx"
+	@echo "# devhelp"
+
+epub:
+	$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+	@echo
+	@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make' in that directory to run these through (pdf)latex" \
+	      "(use \`make latexpdf' here to do that automatically)."
+
+latexpdf:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo "Running LaTeX files through pdflatex..."
+	make -C $(BUILDDIR)/latex all-pdf
+	@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+text:
+	$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+	@echo
+	@echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+man:
+	$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+	@echo
+	@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/docs/_static/buttons/bug_tracker.png b/docs/_static/buttons/bug_tracker.png
new file mode 100644
index 0000000..64650cb
Binary files /dev/null and b/docs/_static/buttons/bug_tracker.png differ
diff --git a/docs/_static/buttons/change_log.png b/docs/_static/buttons/change_log.png
new file mode 100644
index 0000000..e74fefc
Binary files /dev/null and b/docs/_static/buttons/change_log.png differ
diff --git a/docs/_static/buttons/download.png b/docs/_static/buttons/download.png
new file mode 100644
index 0000000..55eb007
Binary files /dev/null and b/docs/_static/buttons/download.png differ
diff --git a/docs/_static/buttons/resources/bug_tracker.xcf b/docs/_static/buttons/resources/bug_tracker.xcf
new file mode 100644
index 0000000..f938a92
Binary files /dev/null and b/docs/_static/buttons/resources/bug_tracker.xcf differ
diff --git a/docs/_static/buttons/resources/button_background.xcf b/docs/_static/buttons/resources/button_background.xcf
new file mode 100644
index 0000000..3766bce
Binary files /dev/null and b/docs/_static/buttons/resources/button_background.xcf differ
diff --git a/docs/_static/buttons/resources/change_log.xcf b/docs/_static/buttons/resources/change_log.xcf
new file mode 100644
index 0000000..70b243d
Binary files /dev/null and b/docs/_static/buttons/resources/change_log.xcf differ
diff --git a/docs/_static/buttons/resources/download.xcf b/docs/_static/buttons/resources/download.xcf
new file mode 100644
index 0000000..14d3339
Binary files /dev/null and b/docs/_static/buttons/resources/download.xcf differ
diff --git a/docs/_static/favicon.png b/docs/_static/favicon.png
new file mode 100644
index 0000000..00dc124
Binary files /dev/null and b/docs/_static/favicon.png differ
diff --git a/docs/_static/haiku.css_t b/docs/_static/haiku.css_t
new file mode 100644
index 0000000..cd3b28d
--- /dev/null
+++ b/docs/_static/haiku.css_t
@@ -0,0 +1,456 @@
+/*
+ * haiku.css_t
+ * ~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- haiku theme.
+ *
+ * Adapted from http://haiku-os.org/docs/Haiku-doc.css.
+ * Original copyright message:
+ *
+ *     Copyright 2008-2009, Haiku. All rights reserved.
+ *     Distributed under the terms of the MIT License.
+ *
+ *     Authors:
+ *              Francois Revol <revol at free.fr>
+ *              Stephan Assmus <superstippi at gmx.de>
+ *              Braden Ewing <brewin at gmail.com>
+ *              Humdinger <humdingerb at gmail.com>
+ *
+ * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+ at import url("basic.css");
+
+html {
+    margin: 0px;
+    padding: 0px;
+    background: #FFF url(bg-page.png) top left repeat-x;
+}
+
+body {
+    line-height: 1.5;
+    margin: auto;
+    padding: 0px;
+    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
+    min-width: 59em;
+    max-width: 70em;
+    color: {{ theme_textcolor }};
+}
+
+div.footer {
+    padding: 8px;
+    font-size: 11px;
+    text-align: center;
+    letter-spacing: 0.5px;
+}
+
+/* link colors and text decoration */
+
+a:link {
+    font-weight: bold;
+    text-decoration: none;
+    color: {{ theme_linkcolor }};
+}
+
+a:visited {
+    font-weight: bold;
+    text-decoration: none;
+    color: {{ theme_visitedlinkcolor }};
+}
+
+a:hover, a:active {
+    text-decoration: underline;
+    color: {{ theme_hoverlinkcolor }};
+}
+
+/* Some headers act as anchors, don't give them a hover effect */
+
+h1 a:hover, a:active {
+    text-decoration: none;
+    color: {{ theme_headingcolor }};
+}
+
+h2 a:hover, a:active {
+    text-decoration: none;
+    color: {{ theme_headingcolor }};
+}
+
+h3 a:hover, a:active {
+    text-decoration: none;
+    color: {{ theme_headingcolor }};
+}
+
+h4 a:hover, a:active {
+    text-decoration: none;
+    color: {{ theme_headingcolor }};
+}
+
+a.headerlink {
+    color: #a7ce38;
+    padding-left: 5px;
+}
+
+a.headerlink:hover {
+    color: #a7ce38;
+}
+
+/* basic text elements */
+
+div.content {
+    margin-top: 20px;
+    margin-left: 40px;
+    margin-right: 40px;
+    margin-bottom: 50px;
+    font-size: 0.9em;
+}
+
+/* heading and navigation */
+
+div.header {
+    position: relative;
+    left: 0px;
+    top: 0px;
+    height: 85px;
+    /* background: #eeeeee; */
+    padding: 0 40px;
+}
+div.header h1 {
+    font-size: 1.6em;
+    font-weight: normal;
+    letter-spacing: 1px;
+    color: {{ theme_headingcolor }};
+    border: 0;
+    margin: 0;
+    padding-top: 15px;
+}
+div.header h1 a {
+    font-weight: normal;
+    color: {{ theme_headingcolor }};
+}
+div.header h2 {
+    font-size: 1.3em;
+    font-weight: normal;
+    letter-spacing: 1px;
+    text-transform: uppercase;
+    color: #aaa;
+    border: 0;
+    margin-top: -3px;
+    padding: 0;
+}
+
+div.header img.rightlogo {
+    float: right;
+}
+
+
+div.title {
+    font-size: 1.3em;
+    font-weight: bold;
+    color: {{ theme_headingcolor }};
+    border-bottom: dotted thin #e0e0e0;
+    margin-bottom: 25px;
+}
+div.topnav {
+    /* background: #e0e0e0; */
+}
+div.topnav p {
+    margin-top: 0;
+    margin-left: 40px;
+    margin-right: 40px;
+    margin-bottom: 0px;
+    font-size: 0.8em;
+}
+div.bottomnav {
+    background: #eeeeee;
+}
+div.bottomnav p {
+    margin-right: 40px;
+    font-size: 0.8em;
+}
+
+a.uplink {
+    font-weight: normal;
+}
+
+
+/* contents box */
+
+table.index {
+    margin: 0px 0px 30px 30px;
+    padding: 1px;
+    border-width: 1px;
+    border-style: dotted;
+    border-color: #e0e0e0;
+}
+table.index tr.heading {
+    background-color: #e0e0e0;
+    text-align: center;
+    font-weight: bold;
+    font-size: 1.1em;
+}
+table.index tr.index {
+    background-color: #eeeeee;
+}
+table.index td {
+    padding: 5px 20px;
+}
+
+table.index a:link, table.index a:visited {
+    font-weight: normal;
+    text-decoration: none;
+    color: {{ theme_linkcolor }};
+}
+table.index a:hover, table.index a:active {
+    text-decoration: underline;
+    color: {{ theme_hoverlinkcolor }};
+}
+
+
+/* Haiku User Guide styles and layout */
+
+/* Rounded corner boxes */
+/* Common declarations */
+div.admonition {
+    -webkit-border-radius: 10px;
+    -khtml-border-radius: 10px;
+    -moz-border-radius: 10px;
+    border-radius: 10px;
+    border-style: dotted;
+    border-width: thin;
+    border-color: #dcdcdc;
+    padding: 10px 15px 10px 15px;
+    margin-bottom: 15px;
+    margin-top: 15px;
+}
+div.note {
+    padding: 10px 15px 10px 80px;
+    background: #e4ffde url(alert_info_32.png) 15px 15px no-repeat;
+    min-height: 42px;
+}
+div.warning {
+    padding: 10px 15px 10px 80px;
+    background: #fffbc6 url(alert_warning_32.png) 15px 15px no-repeat;
+    min-height: 42px;
+}
+div.seealso {
+    background: #e4ffde;
+}
+
+/* More layout and styles */
+h1 {
+    font-size: 1.3em;
+    font-weight: bold;
+    color: {{ theme_headingcolor }};
+    border-bottom: dotted thin #e0e0e0;
+    margin-top: 30px;
+}
+
+h2 {
+    font-size: 1.2em;
+    font-weight: normal;
+    color: {{ theme_headingcolor }};
+    border-bottom: dotted thin #e0e0e0;
+    margin-top: 30px;
+}
+
+h3 {
+    font-size: 1.1em;
+    font-weight: normal;
+    color: {{ theme_headingcolor }};
+    margin-top: 30px;
+}
+
+h4 {
+    font-size: 1.0em;
+    font-weight: normal;
+    color: {{ theme_headingcolor }};
+    margin-top: 30px;
+}
+
+p {
+    text-align: justify;
+}
+
+p.last {
+    margin-bottom: 0;
+}
+
+ol {
+    padding-left: 20px;
+}
+
+ul {
+    padding-left: 5px;
+    margin-top: 3px;
+}
+
+li {
+    line-height: 1.3;
+}
+
+div.content li {
+    -moz-background-clip:border;
+    -moz-background-inline-policy:continuous;
+    -moz-background-origin:padding;
+    background: transparent url(bullet_orange.png) no-repeat scroll left 0.45em;
+    list-style-image: none;
+    list-style-type: none;
+    padding: 0 0 0 1.666em;
+    margin-bottom: 3px;
+}
+
+td {
+    vertical-align: top;
+}
+
+tt {
+    background-color: #e2e2e2;
+    font-size: 1.0em;
+    font-family: monospace;
+}
+
+pre {
+    border-color: #0c3762;
+    border-style: dotted;
+    border-width: thin;
+    margin: 0 0 12px 0;
+    padding: 0.8em;
+    background-color: #f0f0f0;
+}
+
+hr {
+    border-top: 1px solid #ccc;
+    border-bottom: 0;
+    border-right: 0;
+    border-left: 0;
+    margin-bottom: 10px;
+    margin-top: 20px;
+}
+
+/* printer only pretty stuff */
+ at media print {
+    .noprint {
+        display: none;
+    }
+    /* for acronyms we want their definitions inlined at print time */
+    acronym[title]:after {
+        font-size: small;
+        content: " (" attr(title) ")";
+        font-style: italic;
+    }
+    /* and not have mozilla dotted underline */
+    acronym {
+        border: none;
+    }
+    div.topnav, div.bottomnav, div.header, table.index {
+        display: none;
+    }
+    div.content {
+        margin: 0px;
+        padding: 0px;
+    }
+    html {
+        background: #FFF;
+    }
+}
+
+.viewcode-back {
+    font-family: "DejaVu Sans", Arial, Helvetica, sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+    margin: -1px -12px;
+    padding: 0 12px;
+}
+
+/* Navbar */
+
+#navbar { 
+  list-style: none; 
+  margin: 0; 
+  padding: 0;
+  float: left;
+  position: relative;
+}
+
+#navbar li {
+  float: left;
+  position: relative;
+}
+
+/* top navbar items */
+
+#navbar li a {
+  float: left;
+  display: block;
+  text-decoration: none;
+  color: #666;
+  font-weight: normal;
+  text-indent: 10px;
+  width: 130px;
+  font-size: 0.9em;
+}
+
+#navbar li:hover a,
+#navbar li a:hover {
+  font-weight: normal;
+  background: #999;
+  color: #fff;
+}
+
+/* start child items as invisible, but make them visible on hover */
+
+#navbar ul {
+  display: none;
+}
+
+#navbar li:hover ul {
+  display: block;
+}
+
+/* attributes for child navbar items */
+
+#navbar ul {
+  float: none;
+  position: absolute;
+  list-style: none;
+  margin: 0;
+  padding: 0;
+  top: 1.1em;
+  left: 0;
+}
+
+#navbar ul li {
+  float: none;
+  clear: none;
+  margin: 0;
+  padding: 0;
+  width: auto;
+  color: #666;
+}
+
+#navbar li:hover ul li a,
+#navbar ul li {
+  font-weight: normal;
+  text-indent: 5px;
+  line-height: 200%;
+  display: block;
+  padding: 0 0 0 0;
+  float: none;
+  color: #666;
+  background-color: #e0e0e0;
+}
+
+#navbar li:hover ul li a:hover,
+#navbar ul li a:hover {
+  font-weight: normal;
+  text-indent: 5px;
+  background-color: #c1c1c1;
+  color: #000;
+}
+
diff --git a/docs/_static/label/archlinux.png b/docs/_static/label/archlinux.png
new file mode 100644
index 0000000..c27a4f6
Binary files /dev/null and b/docs/_static/label/archlinux.png differ
diff --git a/docs/_static/label/debian.png b/docs/_static/label/debian.png
new file mode 100644
index 0000000..7f7b79d
Binary files /dev/null and b/docs/_static/label/debian.png differ
diff --git a/docs/_static/label/fedora.png b/docs/_static/label/fedora.png
new file mode 100644
index 0000000..b9661f6
Binary files /dev/null and b/docs/_static/label/fedora.png differ
diff --git a/docs/_static/label/freebsd.png b/docs/_static/label/freebsd.png
new file mode 100644
index 0000000..7b2e0c4
Binary files /dev/null and b/docs/_static/label/freebsd.png differ
diff --git a/docs/_static/label/gentoo.png b/docs/_static/label/gentoo.png
new file mode 100644
index 0000000..164aed8
Binary files /dev/null and b/docs/_static/label/gentoo.png differ
diff --git a/docs/_static/label/osx.png b/docs/_static/label/osx.png
new file mode 100644
index 0000000..10e4180
Binary files /dev/null and b/docs/_static/label/osx.png differ
diff --git a/docs/_static/label/python_package_index.png b/docs/_static/label/python_package_index.png
new file mode 100644
index 0000000..e33ff2b
Binary files /dev/null and b/docs/_static/label/python_package_index.png differ
diff --git a/docs/_static/label/redhat.png b/docs/_static/label/redhat.png
new file mode 100644
index 0000000..d2614db
Binary files /dev/null and b/docs/_static/label/redhat.png differ
diff --git a/docs/_static/label/resources/archlinux.xcf b/docs/_static/label/resources/archlinux.xcf
new file mode 100644
index 0000000..7b8da17
Binary files /dev/null and b/docs/_static/label/resources/archlinux.xcf differ
diff --git a/docs/_static/label/resources/debian.xcf b/docs/_static/label/resources/debian.xcf
new file mode 100644
index 0000000..35a5ff7
Binary files /dev/null and b/docs/_static/label/resources/debian.xcf differ
diff --git a/docs/_static/label/resources/fedora.xcf b/docs/_static/label/resources/fedora.xcf
new file mode 100644
index 0000000..97e4c70
Binary files /dev/null and b/docs/_static/label/resources/fedora.xcf differ
diff --git a/docs/_static/label/resources/freebsd.xcf b/docs/_static/label/resources/freebsd.xcf
new file mode 100644
index 0000000..7dcfa98
Binary files /dev/null and b/docs/_static/label/resources/freebsd.xcf differ
diff --git a/docs/_static/label/resources/gentoo.xcf b/docs/_static/label/resources/gentoo.xcf
new file mode 100644
index 0000000..eee000e
Binary files /dev/null and b/docs/_static/label/resources/gentoo.xcf differ
diff --git a/docs/_static/label/resources/osx.xcf b/docs/_static/label/resources/osx.xcf
new file mode 100644
index 0000000..5eab942
Binary files /dev/null and b/docs/_static/label/resources/osx.xcf differ
diff --git a/docs/_static/label/resources/python_package_index.xcf b/docs/_static/label/resources/python_package_index.xcf
new file mode 100644
index 0000000..4c9c30e
Binary files /dev/null and b/docs/_static/label/resources/python_package_index.xcf differ
diff --git a/docs/_static/label/resources/redhat.xcf b/docs/_static/label/resources/redhat.xcf
new file mode 100644
index 0000000..2002d66
Binary files /dev/null and b/docs/_static/label/resources/redhat.xcf differ
diff --git a/docs/_static/label/resources/slackware.xcf b/docs/_static/label/resources/slackware.xcf
new file mode 100644
index 0000000..52fdc38
Binary files /dev/null and b/docs/_static/label/resources/slackware.xcf differ
diff --git a/docs/_static/label/resources/source_repository.xcf b/docs/_static/label/resources/source_repository.xcf
new file mode 100644
index 0000000..5a491c1
Binary files /dev/null and b/docs/_static/label/resources/source_repository.xcf differ
diff --git a/docs/_static/label/resources/ubuntu.xcf b/docs/_static/label/resources/ubuntu.xcf
new file mode 100644
index 0000000..18e1643
Binary files /dev/null and b/docs/_static/label/resources/ubuntu.xcf differ
diff --git a/docs/_static/label/slackware.png b/docs/_static/label/slackware.png
new file mode 100644
index 0000000..6888a15
Binary files /dev/null and b/docs/_static/label/slackware.png differ
diff --git a/docs/_static/label/source_repository.png b/docs/_static/label/source_repository.png
new file mode 100644
index 0000000..df29a1f
Binary files /dev/null and b/docs/_static/label/source_repository.png differ
diff --git a/docs/_static/label/ubuntu.png b/docs/_static/label/ubuntu.png
new file mode 100644
index 0000000..9b66bcf
Binary files /dev/null and b/docs/_static/label/ubuntu.png differ
diff --git a/docs/_static/logo.png b/docs/_static/logo.png
new file mode 100644
index 0000000..30f1b6c
Binary files /dev/null and b/docs/_static/logo.png differ
diff --git a/docs/_static/logo_orig.png b/docs/_static/logo_orig.png
new file mode 100644
index 0000000..2844b0a
Binary files /dev/null and b/docs/_static/logo_orig.png differ
diff --git a/docs/_static/section/download/archlinux.png b/docs/_static/section/download/archlinux.png
new file mode 100644
index 0000000..430d5db
Binary files /dev/null and b/docs/_static/section/download/archlinux.png differ
diff --git a/docs/_static/section/download/debian.png b/docs/_static/section/download/debian.png
new file mode 100644
index 0000000..659dc8d
Binary files /dev/null and b/docs/_static/section/download/debian.png differ
diff --git a/docs/_static/section/download/fedora.png b/docs/_static/section/download/fedora.png
new file mode 100644
index 0000000..30d2062
Binary files /dev/null and b/docs/_static/section/download/fedora.png differ
diff --git a/docs/_static/section/download/freebsd.png b/docs/_static/section/download/freebsd.png
new file mode 100644
index 0000000..cec7774
Binary files /dev/null and b/docs/_static/section/download/freebsd.png differ
diff --git a/docs/_static/section/download/gentoo.png b/docs/_static/section/download/gentoo.png
new file mode 100644
index 0000000..c96e01c
Binary files /dev/null and b/docs/_static/section/download/gentoo.png differ
diff --git a/docs/_static/section/download/git.png b/docs/_static/section/download/git.png
new file mode 100644
index 0000000..529aa0f
Binary files /dev/null and b/docs/_static/section/download/git.png differ
diff --git a/docs/_static/section/download/git_alt.png b/docs/_static/section/download/git_alt.png
new file mode 100644
index 0000000..88e399e
Binary files /dev/null and b/docs/_static/section/download/git_alt.png differ
diff --git a/docs/_static/section/download/osx.png b/docs/_static/section/download/osx.png
new file mode 100644
index 0000000..bb9caca
Binary files /dev/null and b/docs/_static/section/download/osx.png differ
diff --git a/docs/_static/section/download/pypi.png b/docs/_static/section/download/pypi.png
new file mode 100644
index 0000000..5fd55b7
Binary files /dev/null and b/docs/_static/section/download/pypi.png differ
diff --git a/docs/_static/section/download/redhat.png b/docs/_static/section/download/redhat.png
new file mode 100644
index 0000000..7300b91
Binary files /dev/null and b/docs/_static/section/download/redhat.png differ
diff --git a/docs/_static/section/download/resources/fedora.svg b/docs/_static/section/download/resources/fedora.svg
new file mode 100644
index 0000000..8c9cbd6
--- /dev/null
+++ b/docs/_static/section/download/resources/fedora.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) by Marsupilami -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="1024"
+   height="324"
+   viewBox="-1.77184308 -1.77184308 197.90104616 62.60512216"
+   id="svg2870"
+   inkscape:version="0.48.1 r9760"
+   sodipodi:docname="Fedora_logo_and_wordmark.svg"
+   inkscape:export-filename="/home/atagar/Desktop/fedora.png"
+   inkscape:export-xdpi="57.099247"
+   inkscape:export-ydpi="57.099247">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="668"
+     inkscape:window-height="480"
+     id="namedview8"
+     showgrid="false"
+     inkscape:zoom="0.45996094"
+     inkscape:cx="801.51734"
+     inkscape:cy="162"
+     inkscape:window-x="0"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2870" />
+  <defs
+     id="defs2872" />
+  <path
+     inkscape:connector-curvature="0"
+     id="path3584"
+     style="fill:#072b61;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="M 194.35736,16.449737 C 194.35736,7.3649625 186.99245,0 177.90779,0 168.8271,0 161.46537,7.3587875 161.45876,16.43815 l -5e-4,-5.38e-4 0,12.729488 5e-4,5.37e-4 c 0.005,2.0615 1.67683,3.730388 3.73966,3.730388 l 0.0179,-5.25e-4 9.9e-4,5.25e-4 12.69702,0 c 9.08175,-0.0034 16.44297,-7.365788 16.44297,-16.448288" />
+  <path
+     inkscape:connector-curvature="0"
+     id="path3562"
+     style="fill:#0a57a4;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 182.75,3.90625 c -4.26397,10e-8 -7.71875,3.4548375 -7.71875,7.71875 l 0,4.09375 -4.09375,0 c -4.26396,0 -7.71875,3.423888 -7.71875,7.6875 -1e-5,4.263838 3.45479,7.71875 7.71875,7.71875 4.26373,1e-6 7.71875,-3.454912 7.71875,-7.71875 l 0,-4.09375 4.09375,0 c 4.26369,1e-6 7.71875,-3.423663 7.71875,-7.6875 0,-4.263912 -3.45506,-7.71875 -7.71875,-7.71875 z m 0,3.625 c 2.25071,2e-7 4.09375,1.842775 4.09375,4.09375 0,2.250363 -1.84304,4.09375 -4.09375,4.09375 l -0.0312,0 -3.46875,0 c -0.31826,0 -0.59375,-0.276063 -0.59375,-0.59375 l 0,-3.5 c 0.004,-2.2480751 1.84598,-4.09375 4.09375,-4.09375 z m -11.8125,11.78125 3.5,0 c 0.31773,1e-6 0.59375,0.244663 0.59375,0.5625 l 0,3.53125 c -0.003,2.247326 -1.84571,4.09375 -4.09375,4.09375 -2.25041,1e-6 -4.09375,-1.843388 -4.09375,-4.09375 0,-2.25075 1.84334,-4.09375 4.09375,-4.09375 z"
+     sodipodi:nodetypes="sscsssscssscsscsscccssscsss" />
+  <path
+     inkscape:connector-curvature="0"
+     id="path3588"
+     style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+     d="m 175.01713,15.7113 0,-4.086387 0,-0.0053 c 0,-4.263913 3.45636,-7.720338 7.72033,-7.720338 0.64712,0 1.10663,0.072625 1.7058,0.2295625 0.87288,0.2287375 1.58589,0.9440625 1.58643,1.7769625 2.4e-4,1.00655 -0.73035,1.7381375 -1.82225,1.7381375 -0.5204,0 -0.70824,-0.099563 -1.47026,-0.099563 -2.24777,0 -4.07055,1.82045 -4.07449,4.0685245 l 0,3.522563 0,5.37e-4 c 0,0.317688 0.25716,0.575338 0.57542,0.575338 l 0.002,0 2.67567,0 c 0.99728,0 1.8022,0.797875 1.80304,1.797475 0,1.00045 -0.80603,1.7968 -1.80304,1.7968 l -3.25271,0 0,4.10385 0,0.0054 c 0,4.2633 -3.45661,7.720225 -7.72034,7.720225 -0.64685,0 -1.10662,-0.07299 -1.70525,-0.2295 -0.8732,-0.228425 -1.58673,-0.944325 -1.58698,-1.776925 0,-1.0065 0.73065,-1.738475 1.82252,-1.738475 0.51985,0 0.70849,0.09988 1.46971,0.09988 2.24804,0 4.07135,-1.82095 4.07505,-4.0688 l 0,-3.5408 c 0,-0.3173 -0.25771,-0.574338 -0.57545,-0.574338 l -0.002,0 -2.6757,-5.37e-4 c -0.99726,0 -1.80297,-0.795588 -1.80297,-1.795725 -5.7e-4,-1.006325 0.8
 1415,-1.79855 1.82221,-1.79855 l 3.23323,0" />
+</svg>
+<!-- version: 20080810, original size: 194.35736 59.061436, border: 3% -->
+
diff --git a/docs/_static/section/download/slackware.png b/docs/_static/section/download/slackware.png
new file mode 100644
index 0000000..324e046
Binary files /dev/null and b/docs/_static/section/download/slackware.png differ
diff --git a/docs/_static/section/download/ubuntu.png b/docs/_static/section/download/ubuntu.png
new file mode 100644
index 0000000..90a9c6e
Binary files /dev/null and b/docs/_static/section/download/ubuntu.png differ
diff --git a/docs/_static/style.css b/docs/_static/style.css
new file mode 100644
index 0000000..fe9db20
--- /dev/null
+++ b/docs/_static/style.css
@@ -0,0 +1,17 @@
+div.literal-block-wrapper {
+    padding: 0;
+}
+
+span.caption-text {
+    float: right;
+}
+
+span.red {
+    color: red;
+    font-weight: bold;
+}
+
+span.green {
+    color: green;
+    font-weight: bold;
+}
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
new file mode 100644
index 0000000..6e428a5
--- /dev/null
+++ b/docs/_templates/layout.html
@@ -0,0 +1,80 @@
+{#
+    haiku/layout.html
+    ~~~~~~~~~~~~~~~~~
+
+    Sphinx layout template for the haiku theme.
+
+    :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+#}
+{% extends "basic/layout.html" %}
+
+{% set css_files = css_files + ['_static/style.css'] %}
+
+{# do not display relbars #}
+{% block relbar1 %}{% endblock %}
+{% block relbar2 %}{% endblock %}
+
+{% macro nav() %}
+        <p>
+        {%- block haikurel1 %}
+        {%- endblock %}
+
+        <ul id="navbar">
+          <li><a href="{{ pathto(master_doc) }}">Home</a></li>
+          <li><a href="{{ pathto('screenshots') }}">Screenshots</a></li>
+          <li><a href="https://trac.torproject.org/projects/tor/wiki/doc/nyx">Development</a>
+            <ul>
+              <li><a href="{{ pathto('faq') }}">FAQ</a></li>
+              <li><a href="{{ pathto('change_log') }}">Change Log</a></li>
+              <li><a href="https://trac.torproject.org/projects/tor/wiki/doc/nyx/bugs">Bug Tracker</a></li>
+              <li><a href="https://trac.torproject.org/projects/tor/wiki/doc/nyx">Wiki</a></li>
+              <li><a href="{{ pathto('download') }}">Download</a></li>
+            </ul>
+          </li>
+          <li><a href="{{ pathto('faq') }}#where-can-i-get-help">Contact</a>
+            <ul>
+              <li><a href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev">Email List</a></li>
+              <li><a href="https://www.torproject.org/about/contact.html.en#irc">IRC</a></li>
+              <li><a href="https://www.atagar.com/contact/">Author</a></li>
+            </ul>
+          </li>
+        </ul>
+
+        {%- block haikurel2 %}
+        {%- endblock %}
+        </p>
+{% endmacro %}
+
+{% block content %}
+      <div class="header">
+        {%- block haikuheader %}
+        {%- if theme_full_logo != "false" %}
+        <a href="{{ pathto('index') }}">
+          <img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
+        </a>
+        {%- else %}
+        {%- if logo -%}
+          <img class="rightlogo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/>
+        {%- endif -%}
+        <h1 class="heading"><a href="{{ pathto('index') }}">
+          <span>{{ shorttitle|e }}</span></a></h1>
+        <h2 class="heading"><span>{{ title|striptags|e }}</span></h2>
+        {%- endif %}
+        {%- endblock %}
+      </div>
+      <div class="topnav">
+      {{ nav() }}
+      </div>
+      <div class="content">
+        {#{%- if display_toc %}
+        <div id="toc">
+          <h3>Table Of Contents</h3>
+          {{ toc }}
+        </div>
+        {%- endif %}#}
+        {% block body %}{% endblock %}
+      </div>
+      <div class="bottomnav">
+      </div>
+{% endblock %}
diff --git a/docs/change_log.rst b/docs/change_log.rst
new file mode 100644
index 0000000..9613a87
--- /dev/null
+++ b/docs/change_log.rst
@@ -0,0 +1,41 @@
+Change Log
+==========
+
+The following is a log of all user-facing changes to Nyx, both released and
+unreleased. For a monthly report on work being done see my `development log
+<http://blog.atagar.com/>`_.
+
+* :ref:`versioning`
+* :ref:`unreleased`
+
+.. _versioning:
+
+Versioning
+----------
+
+As of the 2.x release Nyx uses `semantic versioning <http://semver.org/>`_,
+which means that **versions consist of three numbers** (such as '**1.2.4**').
+These are used to convey the kind of backward compatibility a release has...
+
+ * The first value is the **major version**. This changes infrequently, and
+   indicates that backward incompatible changes have been made (such as the
+   removal of deprecated functions).
+
+ * The second value is the **minor version**. This is the most common kind of
+   release, and denotes that the improvements are backward compatible.
+
+ * The third value is the **patch version**. When a Nyx release has a major
+   issue another release is made which fixes just that problem. These do not
+   contain substantial improvements or new features. This value is sometimes
+   left off to indicate all releases with a given major/minor version.
+
+Prior to version 2.x nyx did not follow any particular versioning scheme.
+
+.. _unreleased:
+
+Unreleased
+----------
+
+The following are only available within Nyx's `git repository
+<download.html>`_.
+
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..5221073
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,239 @@
+# -*- coding: utf-8 -*-
+#
+# Nyx documentation build configuration file, created by
+# sphinx-quickstart on Thu May 31 09:56:13 2012.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+
+sys.path.insert(0, os.path.abspath('..'))
+sys.path.append(os.path.abspath('.'))
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+needs_sphinx = '1.1' # required for the sphinx-apidoc command
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'roles']
+
+autodoc_member_order = 'bysource'
+autodoc_default_flags = ['members', 'show-inheritance', 'undoc-members']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+from nyx import __version__, __author__, __contact__
+
+# Ignore the '-dev' version suffix.
+
+if __version__.endswith('-dev'):
+  __version__ = __version__[:-4]
+
+# General information about the project.
+project = 'Nyx'
+copyright = '2009, %s' % __author__
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = __version__[:__version__.rfind(".")]
+# The full version, including alpha/beta/rc tags.
+release = __version__
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#html_theme = 'default'
+html_theme = 'haiku'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+html_short_title = 'Nyx'
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+
+html_logo = 'logo.png'
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+
+html_favicon = 'favicon.png'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+html_use_smartypants = False
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+html_show_sourcelink = False
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+html_show_sphinx = False
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+html_show_copyright = False
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Nyxdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'Nyx.tex', 'Nyx Documentation',
+   'Damian Johnson', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'Nyx', 'Nyx Documentation',
+     ['%s (%s)' % (__author__, __contact__)], 1)
+]
+
+trac_url = 'https://trac.torproject.org/{slug}'
+
+def skip_members(app, what, name, obj, skip, options):
+  if name in ('ATTRIBUTES', 'PARSER_FOR_LINE'):
+    return True  # skip the descriptor's parser constants
+
+def setup(app):
+  app.connect('autodoc-skip-member', skip_members)
diff --git a/docs/contents.rst b/docs/contents.rst
new file mode 100644
index 0000000..4f04878
--- /dev/null
+++ b/docs/contents.rst
@@ -0,0 +1,9 @@
+Contents
+========
+
+.. toctree::
+   :maxdepth: 2
+
+   change_log
+   download
+
diff --git a/docs/download.rst b/docs/download.rst
new file mode 100644
index 0000000..1673565
--- /dev/null
+++ b/docs/download.rst
@@ -0,0 +1,196 @@
+Download
+========
+
+.. Image Sources:
+   
+   * PyPI
+     Source: http://www.python.org/community/logos/
+     License: http://www.python.org/psf/trademarks
+   
+   * OSX
+     Source: IconArchive (http://www.iconarchive.com/show/papercut-social-icons-by-graphicloads/Apple-icon.html)
+     Author: GraphicLoads, Papercut Social Icons
+     License: Freeware
+   
+   * Debian
+     Source: NuoveXT (http://nuovext.pwsp.net/)
+     Author: Alexandre Moore (http://sa-ki.deviantart.com/)
+     License: GPL v2
+     File: NuoveXT/128x128/apps/debian-logo.png
+   
+   * Ubuntu
+     Source: http://logonoid.com/ubuntu-logo/
+     Not quite sure of the license, probably covered by...
+     http://design.ubuntu.com/brand/ubuntu-logo
+   
+   * Fedora
+     Source: https://en.wikipedia.org/wiki/File:Fedora_logo_and_wordmark.svg
+     Author: Unknown
+   
+   * Red Hat
+     Source: NuoveXT (http://nuovext.pwsp.net/)
+     Author: Alexandre Moore (http://sa-ki.deviantart.com/)
+     License: GPL v2
+     File: NuoveXT/128x128/apps/fedora.png
+   
+   * Gentoo
+     Source: https://www.gentoo.org/main/en/name-logo.xml
+   
+   * Arch Linux
+     Source: https://en.wikipedia.org/wiki/File:Archlinux-official-fullcolour.svg
+   
+   * Slackware
+     Source: NuoveXT (http://nuovext.pwsp.net/)
+     Author: Alexandre Moore (http://sa-ki.deviantart.com/)
+     License: GPL v2
+     File: NuoveXT/128x128/apps/slackware.png
+   
+   * FreeBSD
+     Source: https://en.wikipedia.org/wiki/File:Freebsd_logo.svg
+     Author: Anton Gural
+   
+   * Git
+     Source: https://en.wikipedia.org/wiki/File:Git-logo.svg
+     Author: Jason Long
+     License: CC v3 (A)
+   
+   * Git (Alternate)
+     Source: http://www.dylanbeattie.net/git_logo/
+     Author: Dylan Beattie
+     License: CC v3 (A, SA)
+
+.. list-table::
+   :widths: 1 10
+   :header-rows: 0
+
+   * - .. image:: /_static/section/download/pypi.png
+          :target: https://pypi.python.org/pypi/stem/
+
+     - .. image:: /_static/label/python_package_index.png
+          :target: https://pypi.python.org/pypi/stem/
+
+       Signed releases and instructions for both Python 2.x and 3.x. You can
+       easily install from its `tarball
+       <https://pypi.python.org/packages/source/s/stem/stem-1.4.1b.tar.bz2>`_
+       (`sig
+       <https://pypi.python.org/packages/source/s/stem/stem-1.4.1b.tar.bz2.asc>`_),
+       or with **pip**...
+
+       ::
+
+         % sudo easy_install pip
+         % sudo pip install stem
+
+   * - .. image:: /_static/section/download/osx.png
+
+     - .. image:: /_static/label/osx.png
+
+       As of OSX 10.8 the platform bundles Python 2.7 by default. This makes
+       installation easy...
+
+       ::
+
+         % sudo easy_install pip
+         % sudo pip install stem
+
+   * - .. image:: /_static/section/download/debian.png
+          :target: http://packages.debian.org/sid/python-stem
+
+     - .. image:: /_static/label/debian.png
+          :target: http://packages.debian.org/sid/python-stem
+
+       Package maintained by Dererk for Debian.
+
+       ::
+
+         % sudo apt-get install python-stem
+
+   * - .. image:: /_static/section/download/ubuntu.png
+          :target: https://launchpad.net/ubuntu/+source/python-stem
+
+     - .. image:: /_static/label/ubuntu.png
+          :target: https://launchpad.net/ubuntu/+source/python-stem
+
+       Package derived from Debian for Ubuntu.
+
+       ::
+
+         % sudo apt-get install python-stem
+
+   * - .. image:: /_static/section/download/fedora.png
+          :target: https://apps.fedoraproject.org/packages/python-stem
+
+     - .. image:: /_static/label/fedora.png
+          :target: https://apps.fedoraproject.org/packages/python-stem
+
+       Packages maintained by Juan for Fedora. These include **python-stem**
+       (Stem for Python 2.x), **python3-stem** (Stem for Python 3.x), and
+       **python-stem-doc** (this website).
+
+       ::
+
+         % sudo yum install python-stem
+
+   * - .. image:: /_static/section/download/gentoo.png
+          :target: http://packages.gentoo.org/package/net-libs/stem
+
+     - .. image:: /_static/label/gentoo.png
+          :target: http://packages.gentoo.org/package/net-libs/stem
+
+       Package maintained by Anthony Basile for Gentoo.
+
+       ::
+
+         % sudo emerge stem
+
+   * - .. image:: /_static/section/download/archlinux.png
+          :target: https://aur.archlinux.org/packages/stem/
+
+     - .. image:: /_static/label/archlinux.png
+          :target: https://aur.archlinux.org/packages/stem/
+
+       Package maintained by Sjon for `Arch Linux
+       <https://wiki.archlinux.org/index.php/AUR#Installing_packages>`_.
+
+       ::
+
+           % wget https://aur.archlinux.org/packages/st/stem/stem.tar.gz
+           % tar -xvf stem.tar.gz
+           % cd stem
+           % makepkg --install
+
+   * - .. image:: /_static/section/download/slackware.png
+          :target: http://slackbuilds.org/repository/14.1/python/stem/
+
+     - .. image:: /_static/label/slackware.png
+          :target: http://slackbuilds.org/repository/14.1/python/stem/
+
+       Package maintained by Markus for `Slackware
+       <http://slackbuilds.org/howto/>`_.
+
+   * - .. image:: /_static/section/download/freebsd.png
+          :target: http://www.freshports.org/security/py-stem/
+
+     - .. image:: /_static/label/freebsd.png
+          :target: http://www.freshports.org/security/py-stem/
+
+       Port maintained by Carlo for `FreeBSD
+       <http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports.html>`_.
+
+       ::
+
+           % pkg install security/py-stem
+
+   * - .. image:: /_static/section/download/git.png
+          :target: https://gitweb.torproject.org/stem.git
+
+     - .. image:: /_static/label/source_repository.png
+          :target: https://gitweb.torproject.org/stem.git
+
+       For those wanting to live on the bleeding edge or contribute to Stem,
+       Stem's git repository can be fetched with...
+
+       ::
+
+         % git clone https://git.torproject.org/stem.git
+
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..6cf8d55
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,32 @@
+Welcome to Nyx!
+===============
+
+Nyx is a command line interface for `Tor <https://www.torproject.org/>`_, providing detailed real-time relaying information. With it you can view bandwidth usage, connections, logs, and much more. Nyx's latest version is **1.4.5** (released April 28th, 2012).
+
+.. Source: Nuovo (http://www.silvestre.com.ar/?p=5)
+   Author: Silvestre Herrera (http://www.silvestre.com.ar/)
+   License: GPL v2
+   File: Nuovo/128x128/mimetypes/gnome-mime-text-log.png
+
+.. image:: /_static/buttons/change_log.png
+   :target: change_log.html
+
+.. Source: Crystal (http://www.everaldo.com/crystal/)
+   Author: Everaldo Coelho (http://www.everaldo.com/)
+   License: LGPL v2
+   File: Crystal/64x64/apps/bug.png
+
+.. image:: /_static/buttons/bug_tracker.png
+   :target: https://trac.torproject.org/projects/tor/wiki/doc/nyx/bugs
+
+.. Source: ColorCons (http://mouserunner.com/Spheres_ColoCons1_Free_Icons.html)
+   Author: Ken Saunders (http://mouserunner.com/MRDS_Cell.html)
+   License: CC v2.5 (A, SA)
+   File: ColorCons/Blue/Download.png
+
+.. image:: /_static/buttons/download.png
+   :target: download.html
+
+.. toctree::
+   :maxdepth: 1
+
diff --git a/docs/republish b/docs/republish
new file mode 100755
index 0000000..c3c683a
--- /dev/null
+++ b/docs/republish
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+export PATH=/home/nyx/bin:$PATH
+export PYTHONPATH=/home/nyx/lib/python
+
+python /home/nyx/nyx/docs/republish.py $*&
+
diff --git a/docs/republish.py b/docs/republish.py
new file mode 100644
index 0000000..f9e9d29
--- /dev/null
+++ b/docs/republish.py
@@ -0,0 +1,89 @@
+import getopt
+import logging
+import subprocess
+import sys
+import time
+
+LOGGER = logging.getLogger('republish')
+LOGGER.setLevel(logging.INFO)
+
+handler = logging.FileHandler('/home/nyx/republish.log')
+handler.setFormatter(logging.Formatter(
+  fmt = '%(asctime)s [%(levelname)s] %(message)s',
+  datefmt = '%m/%d/%Y %H:%M:%S',
+))
+LOGGER.addHandler(handler)
+
+OPT = 'r:h'
+OPT_EXPANDED = ['repeat=', 'help']
+
+HELP_MSG = """\
+Republishes nyx's website. This can either be done or on a reoccurring basis.
+If nyx's repository is unchanged then this is a no-op.
+
+  -r, --repeat RATE     tries to republish the site at a set rate, in minutes
+"""
+
+
+def run(command, cwd = None):
+  # Runs the given command. This returns the stdout if successful, and raises
+  # an OSError if it fails.
+
+  cmd = subprocess.Popen(command.split(' '), stdout = subprocess.PIPE, stderr = subprocess.PIPE, cwd = cwd)
+
+  if cmd.wait() == 0:
+    return cmd.communicate()[0]
+  else:
+    stdout, stderr = cmd.communicate()
+    raise OSError("'%s' failed\n  stdout: %s\n  stderr: %s" % (command, stdout.strip(), stderr.strip()))
+
+
+def republish_site():
+  # Checks if nyx's repository has changed, rebuilding the site if so. Ideally
+  # we'd use plumbing commands to check this but... meh. Patches welcome.
+
+  if 'Already up-to-date.' not in run('git pull', cwd = '/home/nyx/nyx'):
+    start_time = time.time()
+    LOGGER.log(logging.INFO, "Nyx's repository has changed. Republishing...")
+    run('make html', cwd = '/home/nyx/nyx/docs')
+    run('sudo -u mirroradm static-master-update-component nyx.torproject.org')
+
+    runtime = int(time.time() - start_time)
+    LOGGER.log(logging.INFO, '  site republished (took %s seconds)' % runtime)
+
+
+if __name__ == '__main__':
+  try:
+    opts = getopt.getopt(sys.argv[1:], OPT, OPT_EXPANDED)[0]
+  except getopt.GetoptError as exc:
+    print('%s (for usage provide --help)' % exc)
+    sys.exit(1)
+
+  repeat_rate = None
+
+  for opt, arg in opts:
+    if opt in ('-r', '--repeat'):
+      if arg.isdigit():
+        repeat_rate = int(arg)
+      else:
+        print("The --repeat argument must be an integer, got '%s'" % arg)
+        sys.exit(1)
+    elif opt in ('-h', '--help'):
+      print(HELP_MSG)
+      sys.exit()
+
+  if repeat_rate:
+    LOGGER.log(logging.INFO, 'Starting nyx site republisher')
+    latest_run = 0  # unix timestamp for when we last ran
+
+    while True:
+      while time.time() < (latest_run + repeat_rate * 60):
+        time.sleep(15)
+
+      try:
+        latest_run = time.time()
+        republish_site()
+      except OSError as exc:
+        LOGGER.log(logging.WARN, str(exc))
+  else:
+    republish_site()
diff --git a/docs/roles.py b/docs/roles.py
new file mode 100644
index 0000000..89db29a
--- /dev/null
+++ b/docs/roles.py
@@ -0,0 +1,73 @@
+import re
+
+from docutils.utils import unescape
+from docutils.nodes import reference
+from docutils.parsers.rst.roles import set_classes
+
+
+def role_trac(name, rawtext, text, lineno, inliner, options={}, content=[]):
+  """
+  Aliases :trac:`1234` to 'https://trac.torproject.org/1234'.
+
+  :param name: the role name used in the document
+  :param rawtext: the entire markup snippet, with role
+  :param text: the text marked with the role
+  :param lineno: the line number where rawtext appears in the input
+  :param inliner: the inliner instance that called us
+  :param options: directive options for customization
+  :param content: the directive content for customization
+  """
+
+  # checking if the number is valid
+  try:
+    ticket_num = int(text)
+
+    if ticket_num <= 0:
+      raise ValueError
+  except ValueError:
+    msg = inliner.reporter.error('Invalid trac ticket: %s' % text, line=lineno)
+    prb = inliner.problematic(rawtext, rawtext, msg)
+
+    return ([prb], [msg])
+
+  app = inliner.document.settings.env.app
+  link_text = 'ticket %s' % unescape(str(ticket_num))
+
+  return (
+    [make_link_node(rawtext, app, 'trac_url', link_text, str(ticket_num), options)],
+    [],
+  )
+
+
+def make_link_node(rawtext, app, url_type, link_text, slug, options):
+  """
+  Creates a link to a trac ticket.
+
+  :param rawtext: text being replaced with link node
+  :param app: sphinx application context
+  :param url_type: base for our url
+  :param link_text: text for the link
+  :param slug: ID of the thing to link to
+  :param options: options dictionary passed to role func
+  """
+
+  base_url = getattr(app.config, url_type, None)
+
+  if not base_url:
+    raise ValueError("'%s' isn't set in our config" % url_type)
+
+  ref = base_url.format(slug = slug)
+  set_classes(options)
+
+  return reference(rawtext, link_text, refuri = ref, **options)
+
+
+def setup(app):
+  """
+  Installs the plugin.
+
+  :param app: sphinx application context
+  """
+
+  app.add_role('trac', role_trac)
+  app.add_config_value('trac_url', None, 'env')





More information about the tor-commits mailing list