diff --git a/docs/Makefile b/docs/Makefile
index 07c78ba3..0e09e29c 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -20,6 +20,9 @@ help:
python3 apidoc.py
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+quick:
+ @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
clean:
rm -fr doxygen-out
rm -fr source/api
diff --git a/docs/cutter_theme/layout.html b/docs/cutter_theme/layout.html
new file mode 100644
index 00000000..44b262b0
--- /dev/null
+++ b/docs/cutter_theme/layout.html
@@ -0,0 +1,45 @@
+{% extends 'basic/layout.html' %}
+{% block extrahead %}
+{% endblock %}
+
+{# https://www.sphinx-doc.org/en/master/templating.html #}
+
+{% block relbar2 %}
+{% endblock %}
+
+{% block header %}
+ {% if pagename == 'index' %}
{% endif %}
+{% endblock %}
+
+{% block sidebar1 %}
+{% endblock %}
+
+{% block sidebar2 %}
+ {%- if render_sidebar %}
+
+ {%- endif %}
+{% endblock %}
+
+{% block footer %}
+ {{ super() }}
+ {% if pagename == 'index' %}
{% endif %}
+{% endblock %}
diff --git a/docs/cutter_theme/static/cutter.css_t b/docs/cutter_theme/static/cutter.css_t
new file mode 100644
index 00000000..7ba06007
--- /dev/null
+++ b/docs/cutter_theme/static/cutter.css_t
@@ -0,0 +1,441 @@
+/*
+ * cutter.css_t
+ * based on flasky.css_t by Armin Ronacher
+ * ~~~~~~~~~~~~
+ *
+ */
+
+{% set page_width = '1300px' %}
+{% set sidebar_width = '220px' %}
+
+@import url('https://fonts.googleapis.com/css?family=Poppins&display=swap');
+@import url('https://fonts.googleapis.com/css?family=Inconsolata&display=swap');
+@import url('basic.css');
+
+/* -- page layout ---------------------------------------------------------- */
+
+body {
+ font-family: "Poppins", sans-serif;
+ font-size: 16px;
+ background-color: white;
+ color: #0d1b33;
+ margin: 0;
+ padding: 0;
+}
+
+div.document {
+ width: {{ page_width }};
+ margin: 30px auto 0 auto;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 {{ sidebar_width }};
+}
+
+div.sphinxsidebar {
+ width: {{ sidebar_width }};
+}
+
+hr {
+ border: 1px solid #b1b4b6;
+}
+
+div.body {
+ background-color: #fff;
+ color: #3e4349;
+ padding: 0 30px 0 30px;
+}
+
+img.floatingflask {
+ padding: 0 0 10px 10px;
+ float: right;
+}
+
+div.footer {
+ width: {{ page_width }};
+ margin: 20px auto 30px auto;
+ font-size: 14px;
+ color: #888;
+ text-align: right;
+}
+
+div.footer a {
+ color: #888;
+}
+
+div.related {
+ display: none;
+}
+
+div.sphinxsidebar a {
+ color: #444;
+ text-decoration: none;
+ border-bottom: 1px solid #999;
+}
+
+div.sphinxsidebar a:hover {
+ color: #216ae6;
+ border-bottom: 1px solid #999;
+}
+
+div.sphinxsidebar {
+ font-size: 14px;
+ line-height: 1.5;
+}
+
+div.sphinxsidebarwrapper {
+ padding: 18px 10px;
+}
+
+div.sphinxsidebarwrapper p.logo {
+ padding: 0 0 20px 0;
+ margin: 0;
+ text-align: center;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+ font-family: Content-font, Roboto, sans-serif;
+ color: #444;
+ font-size: 24px;
+ font-weight: normal;
+ margin: 0 0 5px 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h4 {
+ font-size: 20px;
+}
+
+div.sphinxsidebar h3 a {
+ color: #444;
+}
+
+div.sphinxsidebar p.logo a,
+div.sphinxsidebar h3 a,
+div.sphinxsidebar p.logo a:hover,
+div.sphinxsidebar h3 a:hover {
+ border: none;
+}
+
+div.sphinxsidebar p {
+ color: #555;
+ margin: 10px 0;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px 0;
+ padding: 0;
+ color: #000;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #ccc;
+ font-family: Content-font, Roboto, sans-serif;
+ font-size: 1em;
+}
+
+/* -- body styles ---------------------------------------------------------- */
+
+a {
+ color: #004b6b;
+ text-decoration: underline;
+}
+
+a:hover {
+ color: #6d4100;
+ text-decoration: underline;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+ color: #041e49;
+ font-family: Content-font, Roboto, sans-serif;
+ font-weight: 400;
+ margin: 30px 0 10px 0;
+ padding: 0;
+}
+
+{% if theme_index_logo %}
+div.indexwrapper h1 {
+ text-indent: -999999px;
+ background: url({{ theme_index_logo }}) no-repeat center center;
+ height: {{ theme_index_logo_height }};
+}
+{% endif %}
+div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
+div.body h2 { font-size: 180%; }
+div.body h3 { font-size: 150%; }
+div.body h4 { font-size: 130%; }
+div.body h5 { font-size: 100%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+ color: #216ae6;
+ padding: 0 4px;
+ text-decoration: none;
+}
+
+a.headerlink:hover {
+ color: #041e49;
+}
+
+div.body p, div.body dd, div.body li {
+ line-height: 1.4;
+}
+
+dt:target, .highlight {
+ background: #faf3e8;
+}
+
+div.note {
+ background-color: #eee;
+ border: 1px solid #ccc;
+}
+
+div.seealso {
+ background-color: #ffc;
+ border: 1px solid #ff6;
+}
+
+div.topic {
+ background-color: #eee;
+}
+
+img.screenshot {
+}
+
+img.screenshot {
+ -moz-box-shadow: 2px 2px 4px #eee;
+ -webkit-box-shadow: 2px 2px 4px #eee;
+ box-shadow: 2px 2px 4px #eee;
+}
+
+table.docutils {
+ border: 1px solid #888;
+ -moz-box-shadow: 2px 2px 4px #eee;
+ -webkit-box-shadow: 2px 2px 4px #eee;
+ box-shadow: 2px 2px 4px #eee;
+}
+
+table.docutils td, table.docutils th {
+ border: 1px solid #888;
+ padding: 0.25em 0.7em;
+}
+
+table.field-list, table.footnote {
+ border: none;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+
+table.footnote {
+ margin: 15px 0;
+ width: 100%;
+ border: 1px solid #eee;
+ background: #fdfdfd;
+ font-size: 0.9em;
+}
+
+table.footnote + table.footnote {
+ margin-top: -15px;
+ border-top: none;
+}
+
+table.field-list th {
+ padding: 0 0.8em 0 0;
+}
+
+table.field-list td {
+ padding: 0;
+}
+
+table.footnote td.label {
+ width: 0;
+ padding: 0.3em 0 0.3em 0.5em;
+}
+
+table.footnote td {
+ padding: 0.3em 0.5em;
+}
+
+dl {
+ margin: 0;
+ padding: 0;
+}
+
+dl dd {
+ margin-left: 30px;
+}
+
+blockquote {
+ margin: 0 0 0 30px;
+ padding: 0;
+}
+
+ul, ol {
+ margin: 10px 0 10px 30px;
+ padding: 0;
+}
+
+pre {
+ background: #fafafa;
+ padding: 7px 30px;
+ margin: 15px -30px;
+ line-height: 1.3;
+ font-family: 'Inconsolata', monospace;
+}
+
+span.pre {
+ color: #e83e8c;
+ word-break: break-word;
+ font-family: SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;
+}
+
+dl pre, blockquote pre, li pre {
+ margin-left: -60px;
+ padding-left: 60px;
+}
+
+dl dl pre {
+ margin-left: -90px;
+ padding-left: 90px;
+}
+
+a.reference {
+ color: #216ae6;
+ text-decoration: none;
+}
+
+a.reference:hover {
+ color: #216ae6;
+ border-bottom: 1px solid;
+}
+
+a.footnote-reference {
+ color: #216ae6;
+ text-decoration: none;
+ font-size: 0.7em;
+ vertical-align: top;
+ border-bottom: 1px solid;
+}
+
+a.footnote-reference:hover {
+ color: #216ae6;
+ border-bottom: 1px solid;
+}
+
+/* Notes box */
+.admonition {
+ border-radius: 5px;
+}
+
+.admonition.note {
+ color: #0c5460;
+ background-color: #d1ecf1;
+ border-color: #bee5eb;
+}
+
+/* API Reference */
+
+.rst-content dl:not(.docutils) dt {
+}
+
+code.descname {
+ font-size: 14px;
+}
+
+.sig-paren {
+ font-size: 14px;
+}
+
+@media screen and (max-width: 875px) {
+ body {
+ margin: 0;
+ padding: 20px 30px;
+ }
+
+ div.documentwrapper {
+ float: none;
+ background: white;
+ margin: 0;
+ }
+
+ div.sphinxsidebar {
+ display: block;
+ float: none;
+ width: 102.5%;
+ margin: 50px -30px 0;
+ padding: 10px 30px;
+ background: #333;
+ color: white;
+ }
+
+ div.sphinxsidebarwrapper {
+ padding: 0;
+ }
+
+ div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
+ div.sphinxsidebar h3 a {
+ color: white;
+ }
+
+ div.sphinxsidebar a {
+ color: #aaa;
+ }
+
+ div.sphinxsidebar p.logo {
+ display: none;
+ }
+
+ div.document {
+ width: 100%;
+ margin: 0;
+ }
+
+ div.related {
+ display: block;
+ margin: 0;
+ padding: 10px 0 20px 0;
+ }
+
+ div.related ul,
+ div.related ul li {
+ margin: 0;
+ padding: 0;
+ }
+
+ div.bodywrapper {
+ margin: 0;
+ }
+
+ div.body {
+ min-height: 0;
+ padding: 0;
+ }
+
+ .rtd_doc_footer {
+ display: none;
+ }
+
+ div.footer {
+ width: auto;
+ margin: 0 -30px -20px;
+ padding: 10px 30px 20px;
+ background: #333;
+ }
+
+ ul {
+ margin-left: 0;
+ }
+}
diff --git a/docs/cutter_theme/theme.conf b/docs/cutter_theme/theme.conf
new file mode 100644
index 00000000..24051280
--- /dev/null
+++ b/docs/cutter_theme/theme.conf
@@ -0,0 +1,11 @@
+[theme]
+inherit = basic
+stylesheet = cutter.css
+pygments_style = flasky
+
+[options]
+index_logo =
+index_logo_height = 120px
+touch_icon =
+github_fork =
+github_ribbon_color = darkblue_121621
diff --git a/docs/source/building.rst b/docs/source/building.rst
index d661382a..45b354db 100644
--- a/docs/source/building.rst
+++ b/docs/source/building.rst
@@ -1,7 +1,11 @@
Building
========
-Below you will find the instructions for building Cutter.
+.. note::
+
+ If you just want to use the latest Release version of Cutter, please note
+ that we provide pre-compiled binaries for Windows, Linux and macOS on
+ our `release page. `_
Building on Linux
@@ -34,7 +38,7 @@ Building steps
The official way to build Cutter on Linux is by using CMake.
First clone the repository with its dependencies:
-::
+.. code-block:: sh
git clone --recurse-submodules https://github.com/radareorg/cutter
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 357978ac..69d6a660 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -24,9 +24,9 @@ copyright = '2019, The Cutter Developers'
author = 'The Cutter Developers'
# The short X.Y version
-version = ''
+version = '1.9'
# The full version, including alpha/beta/rc tags
-release = ''
+release = '1.9.0'
# -- General configuration ---------------------------------------------------
@@ -38,16 +38,18 @@ release = ''
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
-extensions = [ "breathe" ]
+extensions = [
+ 'breathe',
+]
# Add any paths that contain templates here, relative to this directory.
-templates_path = ['sphinx_templates']
+templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
-# source_suffix = ['.rst', '.md']
-source_suffix = '.rst'
+# source_suffix = '.rst'
+source_suffix = ['.rst', '.md']
# The master toctree document.
master_doc = 'index'
@@ -62,15 +64,15 @@ language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = []
+exclude_patterns = ['_build']
# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = None
+pygments_style = 'rainbow_dash'
# -- Options for Breathe -----------------------------------------------------
-breathe_projects = { "cutter": "../doxygen-out/xml" }
-breathe_default_project = "cutter"
+breathe_projects = { 'cutter': '../doxygen-out/xml' }
+breathe_default_project = 'cutter'
breathe_default_members = ('members', 'undoc-members')
# -- Options for HTML output -------------------------------------------------
@@ -78,7 +80,9 @@ breathe_default_members = ('members', 'undoc-members')
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
-html_theme = 'sphinx_rtd_theme'
+html_theme = 'cutter_theme'
+html_theme_path = ['..']
+html_logo = '../../src/img/cutter.ico'
# 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
@@ -89,23 +93,25 @@ html_theme = 'sphinx_rtd_theme'
# 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 = ['sphinx_static']
+# html_static_path = ['static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
-# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
-# 'searchbox.html']``.
-#
-# html_sidebars = {}
-
+# Default: html_sidebars = {
+# '**': ['globaltoc.html', 'sourcelink.html', 'searchbox.html'],
+# 'using/windows': ['windowssidebar.html', 'searchbox.html'],
+# }
+html_sidebars = {
+ '**': ['globaltoc.html'],
+}
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
-htmlhelp_basename = 'Cutterdoc'
+htmlhelp_basename = 'CutterDoc'
# -- Options for LaTeX output ------------------------------------------------
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 90825269..8ca7848f 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -1,5 +1,5 @@
-Cutter Documentation
-====================
+Cutter
+======
Cutter is a Qt and C++ GUI for radare2. Its goal is making an advanced,
customizable and FOSS reverse-engineering platform while keeping the
@@ -15,6 +15,7 @@ Get Cutter
Cutter is available for all platforms (Linux, OS X, Windows). You can
download the latest release
`here `__.
+
- OSX: Download the latest ``.dmg`` file.
- Windows: Download the latest archive.
- Linux: use the AppImage file. Then just make it executable and run it: ``chmod +x Cutter-v1.9.0-x86_64.AppImage``
@@ -42,7 +43,6 @@ If you want to contribute to Cutter, take a look
`here `__
to know what you can do to help the project!
-
.. toctree::
:maxdepth: 2
:caption: Contents: