Merge 2.7.3 release into current main

This commit is contained in:
Veronica Berglyd Olsen
2025-07-07 18:41:36 +02:00
193 changed files with 6945 additions and 2592 deletions
+22 -8
View File
@@ -55,19 +55,33 @@ The following libraries are dependencies of novelWriter:
* **Enchant** by Dom Lachowicz
* **PyEnchant** by Dimitri Merejkowsky
## Assets
## Icon Themes
Some of the assets bundled with novelWriter were adapted from the following sources:
The following icon themes are bundles with novelWriter:
* **Material Symbols** icons by Google Inc (Apache 2.0)
* **Remix** icons by RemixIcon (Apache 2.0)
* **Font Awesome** icons by Fonticons Inc (CC BY 4.0)
* **Tomorrow** syntax themes by Chris Kempson (MIT License)
* **Owl** syntax themes by Sarah Drasner (MIT License)
* **Solarized** themes by Ethan Schoonover (MIT License)
* **Cyberpunk Night** theme by Anders Lemvigh (CC BY-SA 4.0)
* **Dracula** theme by Zeno Rocha (MIT License)
* **Snazzy Light** theme by Florian Reuschel (MIT License)
## Colour Themes
Some colour themes included with novelWriter were adapted from the following sources:
* **Dracula** theme by Zeno Rocha
* **Espresso** theme by Sainnhe Park and Antoine Cotten
* **Noctis** themes by Liviu Schera, and contributors
* **Owl** themes by Sarah Drasner
* **Primer** themes by GitHub Inc and Myian
* **Snazzy Light** theme by Florian Reuschel
* **Solarized** themes by Ethan Schoonover
* **Tango** themes by the Tango Desktop Project
* **Tomorrow** themes by Chris Kempson
Other themes were created for novelWriter:
* **Blue Streak** themes by Veronica Berglyd Olsen
* **Cyberpunk Night** theme by Anders Lemvigh
* **LCARS** theme by Veronica Berglyd Olsen
## Fonts
+1
View File
@@ -101,6 +101,7 @@ Text Formatting Shortcuts
":kbd:`Ctrl+B`", "Format selected text, or word under cursor, with bold"
":kbd:`Ctrl+D`", "Format selected text, or word under cursor, with strike through"
":kbd:`Ctrl+I`", "Format selected text, or word under cursor, with italic"
":kbd:`Ctrl+M`", "Highlight selected text, or word under cursor"
":kbd:`Ctrl+Shift+/`", "Remove format for block or selected text"
":kbd:`Ctrl+Shift+D`", "Toggle ignored text format for block or selected text"
+1
View File
@@ -75,6 +75,7 @@ storage for robustness.
more/counting
more/typography
more/dictionaries
more/customise
more/handling_errors
more/project_format
+196 -170
View File
@@ -1,94 +1,35 @@
.. _docs_more_custom:
**************
Customisations
**************
*************
Custom Themes
*************
.. _Enchant: https://rrthomas.github.io/enchant/
.. _Free Desktop: https://cgit.freedesktop.org/libreoffice/dictionaries/tree/
There are a few ways you can customise novelWriter yourself. Currently, you can add new GUI themes,
your own syntax themes, and install additional dictionaries.
.. _docs_more_custom_dict:
Spell Check Dictionaries
========================
novelWriter uses Enchant_ as the spell checking tool. Depending on your operating system, it may or
may not load all installed spell check dictionaries automatically.
Linux and MacOS
---------------
On Linux and MacOS, you generally only have to install hunspell, aspell or myspell dictionaries on
your system like you do for other applications. See your distro or OS documentation for how to do
this. These dictionaries should show up as available spell check languages in novelWriter.
Windows
-------
For Windows, English is included with the installation. For other languages you have to download
and add dictionaries yourself.
**Install Tool**
A small tool to assist with this can be found under **Tools > Add Dictionaries**. It will import
spell checking dictionaries from Free Office or Libre Office extensions. The dictionaries are then
installed in the install location for the Enchant library and should thus work for any application
that uses Enchant for spell checking.
**Manual Install**
If you prefer to do this manually or want to use a different source than the ones mentioned above,
You need to get compatible dictionary files for your language. You need two files files ending with
``.aff`` and ``.dic``. These files must then be copied to the following location:
``C:\Users\<USER>\AppData\Local\enchant\hunspell``
This assumes your user profile is stored at ``C:\Users\<USER>``. The last one or two folders may
not exist, so you may need to create them.
You can find the various dictionaries on the `Free Desktop`_ website.
.. note::
The Free Desktop link points to a repository, and what may look like file links inside the
dictionary folder are actually links to web pages. If you right-click and download those, you
get HTML files, not dictionaries!
In order to download the actual dictionary files, right-click the "plain" label at the end of
each line and download that.
There are a few ways you can customise novelWriter yourself. Currently, you can relatively easily
add new GUI themes. You can also add new icon themes, although this is not as straightforward.
.. _docs_more_custom_theme:
Syntax and GUI Themes
=====================
Colour Themes
=============
Adding your own GUI and syntax themes is relatively easy, although it requires that you manually
edit config files with colour values. The themes are defined by simple plain text config files with
meta data and colour settings.
Adding your own colour themes is relatively easy, although it requires that you manually edit
config files with colour values. The themes are defined by simple plain text config files with meta
data and colour settings.
In order to make your own versions, first copy one of the existing files to your local computer and
modify it as you like.
* The existing syntax themes are stored in
`novelwriter/assets/syntax <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/syntax>`_.
* The existing GUI themes are stored in
`novelwriter/assets/themes <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/themes>`_.
* The existing icon themes are stored in
`novelwriter/assets/icons <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/icons>`_.
The existing colour themes are stored in
`novelwriter/assets/themes <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/themes>`_.
Remember to also change the name of your theme by modifying the ``name`` setting at the top of the
file, otherwise you may not be able to distinguish them in **Preferences**.
For novelWriter to be able to locate the custom theme files, you must copy them to the
:ref:`docs_technical_locations_data` location in your home or user area. There should be a folder there named
``syntax`` for syntax themes, just ``themes`` for GUI themes, and ``icons`` for icon themes. These
folders are created the first time you start novelWriter.
:ref:`docs_technical_locations_data` location in your home or user area. There should be a folder
there named ``themes`` for colour themes. These folders are created the first time you start
novelWriter.
Once the files are copied there, they should show up in **Preferences** with the label you
set as ``name`` inside the file.
@@ -99,71 +40,130 @@ set as ``name`` inside the file.
files up to date.
Custom GUI and Icons Theme
--------------------------
The Theme File Format
---------------------
A GUI theme ``.conf`` file consists of the following settings:
A colour theme ``.conf`` file consists of the following settings:
.. code-block:: cfg
:caption: The theme file for the "Default Light Theme"
[Main]
name = My Custom Theme
description = A description of my custom theme
author = Jane Doe
credit = John Doe
url = https://example.com
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
name = Default Light Theme
mode = light
description = The novelWriter standard light theme
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
[Icons]
default = 100, 100, 100
faded = 100, 100, 100
red = 255, 0, 0
orange = 255, 128, 0
yellow = 255, 255, 0
green = 0, 255, 0
aqua = 0, 255, 255
blue = 0, 0, 255
purple = 255, 0, 255
[Base]
base = #fcfcfc
default = #303030
faded = #6c6c6c
red = #a62a2d
orange = #b36829
yellow = #a39c34
green = #296629
cyan = #269999
blue = #3a70a6
purple = #b35ab3
[Project]
root = 0, 255, 255
folder = 255, 255, 0
file = 100, 100, 100
title = 0, 255, 0
chapter = 255, 0, 0
scene = 0, 0, 255
note = 255, 255, 0
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 100, 100, 100
windowtext = 100, 100, 100
base = 100, 100, 100
alternatebase = 100, 100, 100
text = 100, 100, 100
tooltipbase = 100, 100, 100
tooltiptext = 100, 100, 100
button = 100, 100, 100
buttontext = 100, 100, 100
brighttext = 100, 100, 100
highlight = 100, 100, 100
highlightedtext = 100, 100, 100
link = 100, 100, 100
linkvisited = 100, 100, 100
window = base:D105
windowtext = default
base = base
alternatebase = #e0e0e0
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = #efefef
buttontext = default
brighttext = base
highlight = #3087c6
highlightedtext = base
link = blue
linkvisited = blue
accent = #3087c6
[GUI]
helptext = 0, 0, 0
fadedtext = 128, 128, 128
errortext = 255, 0, 0
helptext = #5c5c5c
fadedtext = #6c6c6c
errortext = red
In the Main section you must at least define the ``name`` settings.
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = green
headertag = green:L135
emphasis = orange
dialog = blue
altdialog = blue
note = yellow:D125
hidden = faded
shortcode = green
keyword = red
tag = green
value = blue
optional = green
spellcheckline = red
errorline = green
replacetag = green
modifier = green
texthighlight = yellow:72
The Palette values correspond to the Qt enum values for ``QPalette::ColorRole``, see the
`Qt documentation <https://doc.qt.io/qt-6/qpalette.html#ColorRole-enum>`_ for more details. The
colour values are RGB numbers on the format ``r, g, b`` where each is an integer from ``0`` to
``255``. Omitted values are not loaded and will use default values. If the ``helptext`` colour is
not defined, it is computed as a colour between the ``window`` and ``windowtext`` colour.
Additional shades of some of the colours are also computed. These are mainly used for 3D effects.
Theme Sections
--------------
.. _ColorRole: https://doc.qt.io/qt-6/qpalette.html#ColorRole-enum
The theme file is made up of different sections depending on what part of novelWriter the theme
affects.
.. csv-table:: Theme Sections Overview
:header: "Section", "Description"
:class: "tight-table"
"``[Main]``", "Meta data about the theme, You must at least set ``name``, ``mode`` and ``author``, and ``mode`` must be either ``light`` or ``dark``."
"``[Base]``", "The base colours of the theme. These are also selectable colours in various places inside the app, like for icon colours in **Preferences**."
"``[Project]``", "The colours used for icons and markers for the different project item types."
"``[Palette]``", "The colours used for styling the user interface. The values correspond to the ColorRole_ values in the Qt library."
"``[GUI]``", "The colours used for styling additional elements of the user interface."
"``[Syntax]``", "The colours used for syntax highlighting in documents."
Colour Value Formats
--------------------
There are several ways to enter colour values:
.. csv-table:: Colour Formats
:header: "Syntax", "Description"
:widths: 15, 85
:class: "tight-table"
"``#RRGGBB``", "A CSS style hexadecimal values, like ``#ff0000`` for red."
"``#RRGGBBAA``", "A CSS style hexadecimal values with transparency, like ``#ff00007f`` for half-transparent red."
"``name``", "A name referring to one of the colours already specified under the ``[Base]`` section, like ``red``. Note that you should not use named colours in the ``[Base]`` section itself as that may have unintended results."
"``name:255``", "A name referring to one of the colours already specified under the ``[Base]`` section, with a transparency value added. The value must be in the range ``0`` to ``255``, like ``red:127`` for half-transparent red."
"``name:L100``", "A name referring to one of the colours already specified under the ``[Base]`` section, where the L-number is a percentage value that makes it lighter. The value must be greater than ``0``. ``L100`` means no change."
"``name:D100``", "A name referring to one of the colours already specified under the ``[Base]`` section, where the D-number is a percentage value that makes it darker. The value must be greater than ``0``. ``D100`` means no change."
"``r, g, b``", "A set of red, green and blue numbers in the range ``0`` to ``255``, like ``255, 0, 0`` for red."
"``r, g, b, a``", "A set of red, green, blue and alpha numbers in the range ``0`` to ``255``, like ``255, 0, 0, 127`` for half-transparent red."
.. versionadded:: 2.5
The ``fadedtext`` and ``errortext`` theme colour entries were added.
@@ -172,60 +172,86 @@ Additional shades of some of the colours are also computed. These are mainly use
The ``icontheme`` setting was dropped as the icon theme is now its own setting.
The ``[Icons]`` and ``[Project]`` sections were added, and the ``status*`` settings removed.
.. versionadded:: 2.8
The ``[Syntax]`` section was moved into the main theme file. Previously, these settings were in
their own file. The ``[Icons]`` section was renamed to ``[Base]``. Added the ``line`` setting.
Dropped the ``license`` and ``licenseurl`` settings. The ``description`` and ``author`` fields
are now required if the theme is included in the app, but not for user themes.
Custom Syntax Theme
-------------------
A syntax theme ``.conf`` file consists of the following settings:
Icon Themes
===========
Icon themes are *not* straightforward to add, but if you want to make the effort, this section
describes how to do it.
The existing icon themes are stored in
`novelwriter/assets/icons <https://github.com/vkbo/novelWriter/tree/main/novelwriter/assets/icons>`_.
As with colour themes, remember to change the name of your theme by modifying the ``name`` setting
at the top of the file, otherwise you may not be able to distinguish them in **Preferences**.
For novelWriter to be able to locate the custom theme files, you must copy them to the
:ref:`docs_technical_locations_data` location in your home or user area. There should be a folder
there ``icons`` for icon themes. These folders are created the first time you start novelWriter.
The Icons File Format
---------------------
Icon themes are kept in files with the ``.icons`` file extension. The file format is a custom
format with entries on the form ``section:key = value``.
.. code-block:: cfg
:caption: The icons file for "Material Symbols - Rounded Medium" (truncated)
[Main]
name = My Syntax Theme
author = Jane Doe
credit = John Doe
url = https://example.com
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
# Meta
meta:name = Material Symbols - Rounded Medium
meta:author = Google Inc
meta:license = Apache 2.0
[Syntax]
background = 255, 255, 255
text = 0, 0, 0
link = 0, 0, 0
headertext = 0, 0, 0
headertag = 0, 0, 0
emphasis = 0, 0, 0
dialog = 0, 0, 0
altdialog = 0, 0, 0
note = 0, 0, 0
hidden = 0, 0, 0
shortcode = 0, 0, 0
keyword = 0, 0, 0
tag = 0, 0, 0
value = 0, 0, 0
optional = 0, 0, 0
spellcheckline = 0, 0, 0
errorline = 0, 0, 0
replacetag = 0, 0, 0
modifier = 0, 0, 0
texthighlight = 255, 255, 255, 128
# Icons
icon:alert_error = <svg ...>
icon:alert_info = <svg ...>
icon:alert_question = <svg ...>
icon:alert_warn = <svg ...>
icon:cls_archive = <svg ...>
icon:cls_character = <svg ...>
icon:cls_custom = <svg ...>
icon:cls_entity = <svg ...>
icon:cls_none = <svg ...>
icon:cls_novel = <svg ...>
icon:cls_object = <svg ...>
icon:cls_plot = <svg ...>
icon:cls_template = <svg ...>
icon:cls_timeline = <svg ...>
icon:cls_trash = <svg ...>
icon:cls_world = <svg ...>
In the Main section, you must define at least the ``name`` setting. The Syntax colour values are
RGB(A) numbers of the format ``r, g, b, a`` where each is an integer from ``0`` to ``255``. The
fourth value is the alpha channel, which can be omitted.
The icon keys are associated with icon placement locations inside novelWriter, and the template for
them is defined in the script that generates the default icon themes.
Omitted syntax colours default to black, except ``background`` which defaults to white, and
``texthighlight`` which defaults to white with half transparency.
The script can be found under
`utils/icon_themes.py <https://github.com/vkbo/novelWriter/blob/main/utils/icon_themes.py>`__
in the source code.
.. versionadded:: 2.2
The ``shortcode`` syntax colour entry was added.
This file includes all the code needed to generate the themes that are included in novelWriter. The
icon keys are mapped to icon keys from the specific themes in JSON files in the ``icon_themes``
folder next to the script. This is the recommended way to generate these themes. Doing it manually
is not advisable.
.. versionadded:: 2.3
The ``optional`` syntax colour entry was added.
.. versionadded:: 2.4
The ``texthighlight`` syntax colour entry was added.
Icon Value Format
-----------------
.. versionadded:: 2.5
The ``dialog``, ``altdialog``, ``note`` and ``tag`` syntax colour entries were added.
``straightquotes``, ``doublequotes`` and ``singlequotes`` were removed.
As can be seen from the example, an icon is defined in the ``icon`` section with a key and an
in-line SVG XML block. The XML must fit on one line and obey the following rules:
#. It must be single colour, that is, the fill colour attribute must be able to colourise the
entire icon.
#. The fill colour attribute *must* be defined and must be set to: ``fill="#000000"``. This value
is replaced by the relevant theme colour when the icon is processed in novelWriter.
.. versionadded:: 2.7
The icon theme files were added. Previously, icons were stored as individual SVG files with a
config file mapping the file names to the internal icon keys.
+55
View File
@@ -0,0 +1,55 @@
.. _docs_more_dictionaries:
************************
Spell Check Dictionaries
************************
.. _Enchant: https://rrthomas.github.io/enchant/
.. _Free Desktop: https://cgit.freedesktop.org/libreoffice/dictionaries/tree/
Spell checking is provided by the Enchant_ library. Depending on your operating system, it may or
may not load all installed spell check dictionaries automatically.
Linux and MacOS
===============
On Linux and MacOS, you generally only have to install hunspell, aspell or myspell dictionaries on
your system like you do for other applications. See your distro or OS documentation for how to do
this. These dictionaries should show up as available spell check languages in novelWriter.
Windows
=======
For Windows, English is included with the installation. For other languages you have to download
and add dictionaries yourself.
**Install Tool**
A small tool to assist with this can be found under **Tools > Add Dictionaries**. It will import
spell checking dictionaries from Free Office or Libre Office extensions. The dictionaries are then
installed in the install location for the Enchant library and should thus work for any application
that uses Enchant for spell checking.
**Manual Install**
If you prefer to do this manually or want to use a different source than the ones mentioned above,
You need to get compatible dictionary files for your language. You need two files files ending with
``.aff`` and ``.dic``. These files must then be copied to the following location:
``C:\Users\<USER>\AppData\Local\enchant\hunspell``
This assumes your user profile is stored at ``C:\Users\<USER>``. The last one or two folders may
not exist, so you may need to create them.
You can find the various dictionaries on the `Free Desktop`_ website.
.. note::
The Free Desktop link points to a repository, and what may look like file links inside the
dictionary folder are actually links to web pages. If you right-click and download those, you
get HTML files, not dictionaries!
In order to download the actual dictionary files, right-click the "plain" label at the end of
each line and download that.
+1 -1
View File
@@ -55,7 +55,7 @@ edited from the **Project Word List** tool available from the **Tools** menu.
.. note::
Generally, spell checking dictionaries are collected from your operating system, but on Windows
they are not. See :ref:`docs_more_custom_dict` for how to add spell checking dictionaries on
they are not. See :ref:`docs_more_dictionaries` for how to add spell checking dictionaries on
Windows.
+5 -4
View File
@@ -49,9 +49,9 @@ __license__ = "GPLv3"
__author__ = "Veronica Berglyd Olsen"
__maintainer__ = "Veronica Berglyd Olsen"
__email__ = "code@vkbo.net"
__version__ = "2.7.3"
__hexversion__ = "0x020703f0"
__date__ = "2025-07-07"
__version__ = "2.8a1"
__hexversion__ = "0x020800a1"
__date__ = "2025-06-13"
__status__ = "Stable"
__domain__ = "novelwriter.io"
@@ -296,7 +296,8 @@ def _createApp(style: str) -> QApplication:
"""Create the app. This is done in a function to make it easier to
block app creation during testing.
"""
app = QApplication([CONFIG.appName, f"-style={style}"])
app = QApplication([CONFIG.appName])
app.setStyle(style)
app.setApplicationName(CONFIG.appName)
app.setApplicationVersion(__version__)
app.setOrganizationDomain(__domain__)
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="#000000" height="128" width="128"><path d="M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="#000000" height="128" width="128"><path d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" viewBox="-32 0 512 512" fill="#000000" height="128" width="128"><path d="M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="#000000" height="128" width="128"><path d="M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" viewBox="-64 0 512 512" fill="#000000" height="128" width="128"><path d="M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="#000000" height="128" width="128"><path d="M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" viewBox="-32 0 512 512" fill="#000000" height="128" width="128"><path d="M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" viewBox="-64 0 512 512" fill="#000000" height="128" width="128"><path d="M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" viewBox="32 0 512 512" fill="#000000" height="128" width="128"><path d="M88.7 223.8L0 375.8 0 96C0 60.7 28.7 32 64 32l117.5 0c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7L416 96c35.3 0 64 28.7 64 64l0 32-336 0c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224l400 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480L32 480c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M556.61-113.78v-63.74q0-10.83 4.13-20.31 4.13-9.47 11.83-17.17L781-423q10.7-10.7 23.67-15.54 12.98-4.85 26.24-4.85 14.26 0 27.24 5.35 12.98 5.34 23.68 16.04l37 37q9.69 10.7 15.04 23.67 5.35 12.98 5.35 26.24 0 13.83-4.85 27.03-4.85 13.19-15.54 23.89l-208 208q-7.7 7.69-17.18 11.54-9.48 3.85-20.3 3.85h-63.74q-22.09 0-37.54-15.46-15.46-15.46-15.46-37.54Zm279.96-187.96 31.34-33.35-37-37-32.34 32.35 38 38ZM166.78-140.78q-44.3 0-75.15-30.85-30.85-30.85-30.85-75.15v-466.44q0-44.3 30.85-75.15 30.85-30.85 75.15-30.85h181q21.09 0 40.39 7.98 19.31 7.98 34.26 22.94L480-730.74h313.22q44.3 0 75.15 30.85 30.85 30.85 30.85 75.15v57q0 21.96-17.89 35.22-17.89 13.26-40.85 9.13-9.78-.57-19.35.28-9.57.85-18.78 3.68-21.79 2.82-41.76 12.82-19.98 10-36.59 26.61L507.52-263.52q-14.95 14.95-22.93 33.98-7.98 19.02-7.98 40.67v1.31q0 19.82-13.48 33.3-13.48 13.48-33.3 13.48H166.78Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M375.48-307q-114.09 0-193.55-79.46-79.45-79.45-79.45-193.54 0-114.09 79.45-193.54Q261.39-853 375.48-853q114.09 0 193.54 79.46 79.46 79.45 79.46 193.54 0 45.13-12.87 83.28T601-429.7l219.48 220.05q14.96 15.52 14.96 37.32 0 21.81-15.53 36.77-14.95 14.95-37.04 14.95t-37.04-14.95L526.91-354.48q-29.43 21.74-68.15 34.61Q420.04-307 375.48-307Zm0-106q69.91 0 118.45-48.54 48.55-48.55 48.55-118.46t-48.55-118.46Q445.39-747 375.48-747t-118.46 48.54Q208.48-649.91 208.48-580t48.54 118.46Q305.57-413 375.48-413Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M694.7-140.78q-22.09 0-37.55-15.46-15.45-15.46-15.45-37.54v-201.13q0-22.09 15.45-37.55 15.46-15.45 37.55-15.45h71.52q22.08 0 37.54 15.45 15.46 15.46 15.46 37.55v201.13q0 22.08-15.46 37.54t-37.54 15.46H694.7Zm-250.18 0q-22.09 0-37.54-15.46-15.46-15.46-15.46-37.54v-572.44q0-22.08 15.46-37.54 15.45-15.46 37.54-15.46h70.96q22.09 0 37.54 15.46 15.46 15.46 15.46 37.54v572.44q0 22.08-15.46 37.54-15.45 15.46-37.54 15.46h-70.96Zm-250.74 0q-22.08 0-37.54-15.46t-15.46-37.54v-372.44q0-22.08 15.46-37.54t37.54-15.46h71.52q22.09 0 37.55 15.46 15.45 15.46 15.45 37.54v372.44q0 22.08-15.45 37.54-15.46 15.46-37.55 15.46h-71.52Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-280q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM80-427q-22.09 0-37.54-15.46Q27-457.91 27-480t15.46-37.54Q57.91-533 80-533h80q22.09 0 37.54 15.46Q213-502.09 213-480t-15.46 37.54Q182.09-427 160-427H80Zm720 0q-22.09 0-37.54-15.46Q747-457.91 747-480t15.46-37.54Q777.91-533 800-533h80q22.09 0 37.54 15.46Q933-502.09 933-480t-15.46 37.54Q902.09-427 880-427h-80ZM480-747q-22.09 0-37.54-15.46Q427-777.91 427-800v-80q0-22.09 15.46-37.54Q457.91-933 480-933t37.54 15.46Q533-902.09 533-880v80q0 22.09-15.46 37.54Q502.09-747 480-747Zm0 720q-22.09 0-37.54-15.46Q427-57.91 427-80v-80q0-22.09 15.46-37.54Q457.91-213 480-213t37.54 15.46Q533-182.09 533-160v80q0 22.09-15.46 37.54Q502.09-27 480-27ZM216.96-668.39l-43-42Q158-725.35 158.5-747.43q.5-22.09 15.46-38.61Q189.35-802 211.43-802q22.09 0 37.61 15.96l42.57 43q14.96 15.39 14.67 36.76-.28 21.37-14.67 37.32-14.96 15.96-36.83 16.03-21.87.06-37.82-15.46Zm494 494.43-42.57-43q-14.96-15.39-14.96-36.97 0-21.59 14.96-37.11 14.96-15.96 36.83-15.46 21.87.5 37.82 15.46l43 41.43q15.96 14.96 15.46 37.04-.5 22.09-15.46 38.61Q770.65-158 748.57-158q-22.09 0-37.61-15.96Zm-42-494.43Q653-683.35 653.5-705.22q.5-21.87 15.46-37.82l41.43-43q14.96-15.96 37.04-15.46 22.09.5 38.61 15.46Q802-770.65 802-748.57q0 22.09-15.96 37.61l-43 42.57q-15.39 14.96-36.76 14.67-21.37-.28-37.32-14.67Zm-495 494.43Q158-189.35 158-211.43q0-22.09 15.96-37.61l43-42.57q15.39-14.96 36.97-14.96 21.59 0 37.11 14.96 15.96 14.96 15.46 36.83-.5 21.87-15.46 37.82l-41.43 43Q234.65-158 212.57-158.5q-22.09-.5-38.61-15.46Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480.57-111.52q-157.22 0-263.14-105.63Q111.52-322.78 111.52-480q0-128.39 77.57-229.89 77.56-101.5 214.17-129.24 18.65-5.39 33.74-1.59 15.09 3.81 25.04 13.37 10.52 9.57 14.13 23.83 3.61 14.26-1 30.35-9.65 23.74-15.6 47.08-5.96 23.35-5.96 48 0 93.96 66.11 159.79 66.11 65.82 160.63 65.82 24.78 0 49.63-5.32 24.85-5.33 46.02-14.55 15.52-4.17 28.72-.85 13.19 3.33 22.19 11.72 9.44 8.39 13.24 22.63 3.81 14.24-1.02 33.33Q814.96-276 713.72-193.76q-101.24 82.24-233.15 82.24Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M479.95-60.78q-86.91 0-163.3-32.91-76.39-32.92-133.22-89.74-56.82-56.83-89.74-133.27-32.91-76.44-32.91-163.35t32.91-163.3q32.92-76.39 89.74-133.22 56.83-56.82 133.27-89.74 76.44-32.91 163.35-32.91t163.3 32.91q76.39 32.92 133.22 89.74 56.82 56.83 89.74 133.27 32.91 76.44 32.91 163.35t-32.91 163.3q-32.92 76.39-89.74 133.22-56.83 56.82-133.27 89.74-76.44 32.91-163.35 32.91Zm46.83-110.13Q641.26-188.17 717.24-274t75.98-206q0-118.63-75.98-204.94-75.98-86.32-190.46-103.58v617.61Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M427-427H233.78q-22.08 0-37.54-15.46-15.46-15.45-15.46-37.54t15.46-37.54Q211.7-533 233.78-533H427v-193.22q0-22.08 15.46-37.54 15.45-15.46 37.54-15.46t37.54 15.46Q533-748.3 533-726.22V-533h193.22q22.08 0 37.54 15.46 15.46 15.45 15.46 37.54t-15.46 37.54Q748.3-427 726.22-427H533v193.22q0 22.08-15.46 37.54-15.45 15.46-37.54 15.46t-37.54-15.46Q427-211.7 427-233.78V-427Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M387-150.39 241.04-86.87q-53 22.65-100.87-8.48-47.87-31.13-47.87-88.83v-461.34q0-44.3 30.85-75.15 30.85-30.85 75.15-30.85h377.39q44.31 0 75.16 30.85 30.85 30.85 30.85 75.15v461.34q0 57.7-47.87 88.83-47.87 31.13-100.88 8.48L387-150.39Zm427.7-27.13q-22.09 0-37.55-15.46-15.45-15.46-15.45-37.54v-601h-441q-22.09 0-37.55-15.46-15.45-15.45-15.45-37.54t15.45-37.55q15.46-15.45 37.55-15.45h441q44.3 0 75.15 30.85 30.85 30.84 30.85 75.15v601q0 22.08-15.46 37.54t-37.54 15.46Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M166.78-140.78q-44.3 0-75.15-30.85-30.85-30.85-30.85-75.15v-466.44q0-44.87 30.85-75.43 30.85-30.57 75.15-30.57h181q21.09 0 40.39 7.98 19.31 7.98 34.26 22.94L480-730.74h366.22q22.08 0 37.54 15.46 15.46 15.45 15.46 37.54t-15.46 37.54q-15.46 15.46-37.54 15.46H340.57q-69.35 0-121.57 43.52-52.22 43.53-52.22 110.31v226.95l70.52-226.82q10.83-33.35 38.55-53.65 27.72-20.31 62.76-20.31h471.91q54 0 85.7 43.52 31.69 43.53 15.61 94.53l-53.92 174.43q-14.78 45.78-46.17 68.63-31.39 22.85-78.31 22.85H166.78Z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M560-120v-66q0-8 3-15.5t9-13.5l209-208q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q8 9 12.5 20t4.5 22q0 11-4 22.5T903-300L695-92q-6 6-13.5 9T666-80h-66q-17 0-28.5-11.5T560-120Zm263-184 37-39-37-37-38 38 38 38ZM160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h320q33 0 56.5 23.5T880-640v83q0 18-14.5 29t-33.5 8h-11q-28 0-52.5 10T724-480L503-259q-11 11-17 25.5t-6 30.5v3q0 17-11.5 28.5T440-160H160Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M380-320q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l224 224q11 11 11 28t-11 28q-11 11-28 11t-28-11L532-372q-30 24-69 38t-83 14Zm0-80q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M680-160q-17 0-28.5-11.5T640-200v-200q0-17 11.5-28.5T680-440h80q17 0 28.5 11.5T800-400v200q0 17-11.5 28.5T760-160h-80Zm-240 0q-17 0-28.5-11.5T400-200v-560q0-17 11.5-28.5T440-800h80q17 0 28.5 11.5T560-760v560q0 17-11.5 28.5T520-160h-80Zm-240 0q-17 0-28.5-11.5T160-200v-360q0-17 11.5-28.5T200-600h80q17 0 28.5 11.5T320-560v360q0 17-11.5 28.5T280-160h-80Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-280q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM80-440q-17 0-28.5-11.5T40-480q0-17 11.5-28.5T80-520h80q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440H80Zm720 0q-17 0-28.5-11.5T760-480q0-17 11.5-28.5T800-520h80q17 0 28.5 11.5T920-480q0 17-11.5 28.5T880-440h-80ZM480-760q-17 0-28.5-11.5T440-800v-80q0-17 11.5-28.5T480-920q17 0 28.5 11.5T520-880v80q0 17-11.5 28.5T480-760Zm0 720q-17 0-28.5-11.5T440-80v-80q0-17 11.5-28.5T480-200q17 0 28.5 11.5T520-160v80q0 17-11.5 28.5T480-40ZM226-678l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226-678Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734-282l43 42q12 11 11.5 28T777-183q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678-734l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183-183q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282-226l-42 43q-11 12-28 11.5T183-183Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-151 0-255.5-104.5T120-480q0-138 90-239.5T440-838q13-2 23 3.5t16 14.5q6 9 6.5 21t-7.5 23q-17 26-25.5 55t-8.5 61q0 90 63 153t153 63q31 0 61.5-9t54.5-25q11-7 22.5-6.5T819-479q10 5 15.5 15t3.5 24q-14 138-117.5 229T480-120Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm40-83q119-15 199.5-104.5T800-480q0-123-80.5-212.5T520-797v634Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-440H240q-17 0-28.5-11.5T200-480q0-17 11.5-28.5T240-520h200v-200q0-17 11.5-28.5T480-760q17 0 28.5 11.5T520-720v200h200q17 0 28.5 11.5T760-480q0 17-11.5 28.5T720-440H520v200q0 17-11.5 28.5T480-200q-17 0-28.5-11.5T440-240v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M400-160 232-88q-40 17-76-6.5T120-161v-519q0-33 23.5-56.5T200-760h400q33 0 56.5 23.5T680-680v519q0 43-36 66.5T568-88l-168-72Zm400 0q-17 0-28.5-11.5T760-200v-640H280q-17 0-28.5-11.5T240-880q0-17 11.5-28.5T280-920h480q33 0 56.5 23.5T840-840v640q0 17-11.5 28.5T800-160Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h360q17 0 28.5 11.5T880-680q0 17-11.5 28.5T840-640H314q-62 0-108 39t-46 99v262l79-263q8-26 29.5-41.5T316-560h516q41 0 64.5 32.5T909-457l-72 240q-8 26-29.5 41.5T760-160H160Z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M569.23-152.31v-42.92q0-6.46 2.23-12.04 2.23-5.58 7.46-10.81l203.62-202.61q5.92-5.16 12.31-7.62 6.38-2.46 12.77-2.46 6.61 0 13.38 2.58 6.77 2.57 11.92 7.73l37 37.77q4.93 5.92 7.5 12.31Q880-364 880-357.62q0 6.39-2.08 12.89-2.07 6.5-8 12.42L667.31-129.69q-5.23 5.23-10.81 7.46-5.58 2.23-12.04 2.23h-42.92q-13.92 0-23.12-9.19-9.19-9.19-9.19-23.12Zm238.39-167.07 37-38.24-37-37.76-38 38 38 38ZM184.62-200q-27.62 0-46.12-18.5Q120-237 120-264.62v-430.76q0-27.62 18.5-46.12Q157-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h311.53q27.62 0 46.12 18.5Q840-643 840-615.38v61.46q0 12.61-9.88 20.92-9.89 8.31-22.74 6.85H804.85q-22.62 0-44.43 8.46-21.8 8.46-40.27 24.61L493-266.69q-8.69 8.69-13.92 20.5t-5.23 24.73v.69q0 8.54-6.12 14.65-6.11 6.12-14.65 6.12H184.62Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M381.54-350.77q-95.92 0-162.58-66.65-66.65-66.66-66.65-162.58 0-95.92 66.65-162.58 66.66-66.65 162.58-66.65 95.92 0 162.58 66.65 66.65 66.66 66.65 162.58 0 41.69-14.77 80.69t-38.77 66.69l236.31 236.31q5.61 5.62 6 13.77.38 8.16-6 14.54-6.39 6.38-14.16 6.38-7.76 0-14.15-6.38L528.92-404.31q-30 25.54-69 39.54t-78.38 14Zm0-40q79.61 0 134.42-54.81 54.81-54.8 54.81-134.42 0-79.62-54.81-134.42-54.81-54.81-134.42-54.81-79.62 0-134.42 54.81-54.81 54.8-54.81 134.42 0 79.62 54.81 134.42 54.8 54.81 134.42 54.81Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M672.31-200q-13.73 0-23.02-9.29T640-232.31V-360q0-13.73 9.29-23.02t23.02-9.29h55.38q13.73 0 23.02 9.29T760-360v127.69q0 13.73-9.29 23.02T727.69-200h-55.38Zm-220 0q-13.73 0-23.02-9.29T420-232.31v-495.38q0-13.73 9.29-23.02t23.02-9.29h55.38q13.73 0 23.02 9.29t9.29 23.02v495.38q0 13.73-9.29 23.02T507.69-200h-55.38Zm-220 0q-13.73 0-23.02-9.29T200-232.31v-302.7q0-14.3 9.29-23.49 9.29-9.19 23.02-9.19h55.38q13.73 0 23.02 9.29 9.29 9.28 9.29 23.02v302.7q0 14.3-9.29 23.49-9.29 9.19-23.02 9.19h-55.38Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-320q-66.85 0-113.42-46.58Q320-413.15 320-480t46.58-113.42Q413.15-640 480-640t113.42 46.58Q640-546.85 640-480t-46.58 113.42Q546.85-320 480-320ZM80-460q-8.5 0-14.25-5.76T60-480.03q0-8.51 5.75-14.24T80-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T180-460H80Zm700 0q-8.5 0-14.25-5.76T760-480.03q0-8.51 5.75-14.24T780-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T880-460H780ZM479.97-760q-8.51 0-14.24-5.75T460-780v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-880v100q0 8.5-5.76 14.25T479.97-760Zm0 700q-8.51 0-14.24-5.75T460-80v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-180v100q0 8.5-5.76 14.25T479.97-60ZM254.46-678.77l-57.61-55.85q-5.85-5.61-5.73-13.76.11-8.16 5.96-14.77 6.38-6.62 14.15-6.62 7.77 0 14.15 6.62L282-706.31q6.38 6.62 6.38 14.16 0 7.53-6 14.15t-13.65 6.12q-7.65-.5-14.27-6.89Zm480.16 481.92L678-253.69q-6.38-6.62-6.38-14.27 0-7.66 6.38-14.04 5.23-6.62 13.08-6.12 7.84.5 14.46 6.89l57.61 55.85q5.85 5.61 5.73 13.76-.11 8.16-5.96 14.77-6.38 6.62-14.15 6.62-7.77 0-14.15-6.62ZM678-677.62q-6.62-6-6.12-13.65t6.89-14.27l55.85-57.61q5.61-5.85 13.76-5.73 8.16.11 14.77 5.96 6.62 6.38 6.62 14.15 0 7.77-6.62 14.15L706.31-678q-6.62 6.38-14.16 6.38-7.53 0-14.15-6ZM196.85-196.68q-6.62-6.78-6.62-14.55 0-7.77 6.62-14.15L253.69-282q6.62-6.38 14.27-6.38 7.66 0 14.04 6.38 5.85 5.23 5.35 13.08-.5 7.84-6.12 14.46l-55.85 57.61q-6.38 6.62-14.15 6.5-7.77-.11-14.38-6.33Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M482.31-160Q349-160 255.65-253.35 162.31-346.69 162.31-480q0-98.77 56.54-181.42 56.53-82.66 160.38-118.89 12.23-4.31 21.46-2.27 9.23 2.04 15.23 7.96 6 5.93 7.66 15.24 1.65 9.3-2.5 19.53-7.77 19.08-11.27 38.85-3.5 19.77-3.5 41 0 106.92 74.54 181.46Q555.38-404 662.31-404q27.92 0 51.11-5.92 23.2-5.93 39.5-9.62 8.7-1.61 15.96.42 7.27 2.04 11.66 7.04 4.61 5 6.27 12.31 1.65 7.31-1.89 16.69-28.61 98-112.11 160.54Q589.31-160 482.31-160Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120ZM500-160.69q123.62-8.08 211.81-98.35T800-480q0-130.69-87.42-220.19-87.43-89.5-212.58-99.12v638.62Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-460H260q-8.5 0-14.25-5.76T240-480.03q0-8.51 5.75-14.24T260-500h200v-200q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-700v200h200q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T700-460H500v200q0 8.5-5.76 14.25T479.97-240q-8.51 0-14.24-5.75T460-260v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m420-203.08-149.54 64.31q-32.31 13.92-61.38-5.35Q180-163.38 180-197.92v-457.46q0-27.62 18.5-46.12Q217-720 244.62-720h350.76q27.62 0 46.12 18.5Q660-683 660-655.38v457.46q0 34.54-29.08 53.8-29.07 19.27-61.38 5.35L420-203.08ZM760-220q-8.54 0-14.27-5.73T740-240v-535.39q0-9.23-7.69-16.92-7.69-7.69-16.93-7.69H320q-8.54 0-14.27-5.73T300-820q0-8.54 5.73-14.27T320-840h395.38q27.62 0 46.12 18.5Q780-803 780-775.39V-240q0 8.54-5.73 14.27T760-220Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M180-200q-25.31 0-42.65-17.35Q120-234.69 120-260v-435.38q0-25.31 19.65-44.97Q159.31-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h349.23q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T813.08-640H297.85Q242-640 201-604.08q-41 35.93-41 90.54v248.92q0 8.47 4.23 13.85 4.23 5.39 11.15 9.23l76.7-256.84q6.46-20.62 23.73-33.43 17.27-12.81 38.65-12.81h512.92q32.54 0 52.2 25.97 19.65 25.96 10.19 57.03l-65.85 219.24q-5.69 19.07-21.8 30.73Q786-200 766.15-200H180Z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M166.78-246.78v-466.44 466.44Zm0 106q-44.3 0-75.15-30.85-30.85-30.85-30.85-75.15v-466.44q0-44.3 30.85-75.15 30.85-30.85 75.15-30.85h181q21.23 0 40.46 7.98 19.24 7.98 34.19 22.94L480-730.74h313.22q44.3 0 75.15 30.85 30.85 30.85 30.85 75.15v51.17q0 22.09-15.46 37.55-15.46 15.45-37.54 15.45-22.09 0-37.55-15.45-15.45-15.46-15.45-37.55v-51.17H436.26l-88.48-88.48h-181v466.44h256.83q22.09 0 37.54 15.45 15.46 15.46 15.46 37.55 0 22.08-15.46 37.54-15.45 15.46-37.54 15.46H166.78Zm389.83 27v-63.74q0-10.83 4.13-20.31 4.13-9.47 11.83-17.17L781-423q10.7-10.8 23.77-15.59 13.07-4.8 26.14-4.8 14.26 0 27.27 5.35 13.01 5.34 23.65 16.04l37 37q9.59 10.7 14.99 23.77t5.4 26.14q0 13.83-4.85 27.03-4.85 13.19-15.54 23.89l-208 208q-7.62 7.69-17.14 11.54-9.52 3.85-20.34 3.85h-63.74q-22.09 0-37.54-15.46-15.46-15.46-15.46-37.54Zm311.3-221.31-37-37 37 37Zm-240 203h38l118.74-119.74-18-19-19-18-119.74 118.74v38Zm138.74-138.74-19-18 37 37-18-19Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M375.48-307q-114.09 0-193.55-79.46-79.45-79.45-79.45-193.54 0-114.09 79.45-193.54Q261.39-853 375.48-853q114.09 0 193.54 79.46 79.46 79.45 79.46 193.54 0 45.13-12.87 83.28T601-429.7l219.48 220.05q14.96 15.52 14.96 37.32 0 21.81-15.53 36.77-14.95 14.95-37.04 14.95t-37.04-14.95L526.91-354.48q-29.43 21.74-68.15 34.61Q420.04-307 375.48-307Zm0-106q69.91 0 118.45-48.54 48.55-48.55 48.55-118.46t-48.55-118.46Q445.39-747 375.48-747t-118.46 48.54Q208.48-649.91 208.48-580t48.54 118.46Q305.57-413 375.48-413Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M694.7-140.78q-22.09 0-37.55-15.46-15.45-15.46-15.45-37.54v-201.13q0-22.09 15.45-37.55 15.46-15.45 37.55-15.45h71.52q22.08 0 37.54 15.45 15.46 15.46 15.46 37.55v201.13q0 22.08-15.46 37.54t-37.54 15.46H694.7Zm-250.18 0q-22.09 0-37.54-15.46-15.46-15.46-15.46-37.54v-572.44q0-22.08 15.46-37.54 15.45-15.46 37.54-15.46h70.96q22.09 0 37.54 15.46 15.46 15.46 15.46 37.54v572.44q0 22.08-15.46 37.54-15.45 15.46-37.54 15.46h-70.96Zm-250.74 0q-22.08 0-37.54-15.46t-15.46-37.54v-372.44q0-22.08 15.46-37.54t37.54-15.46h71.52q22.09 0 37.55 15.46 15.45 15.46 15.45 37.54v372.44q0 22.08-15.45 37.54-15.46 15.46-37.55 15.46h-71.52Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-386q39.26 0 66.63-27.37Q574-440.74 574-480q0-39.26-27.37-66.63Q519.26-574 480-574q-39.26 0-66.63 27.37Q386-519.26 386-480q0 39.26 27.37 66.63Q440.74-386 480-386Zm0 106q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM80-427q-22.09 0-37.54-15.46Q27-457.91 27-480t15.46-37.54Q57.91-533 80-533h80q22.09 0 37.54 15.46Q213-502.09 213-480t-15.46 37.54Q182.09-427 160-427H80Zm720 0q-22.09 0-37.54-15.46Q747-457.91 747-480t15.46-37.54Q777.91-533 800-533h80q22.09 0 37.54 15.46Q933-502.09 933-480t-15.46 37.54Q902.09-427 880-427h-80ZM480-747q-22.09 0-37.54-15.46Q427-777.91 427-800v-80q0-22.09 15.46-37.54Q457.91-933 480-933t37.54 15.46Q533-902.09 533-880v80q0 22.09-15.46 37.54Q502.09-747 480-747Zm0 720q-22.09 0-37.54-15.46Q427-57.91 427-80v-80q0-22.09 15.46-37.54Q457.91-213 480-213t37.54 15.46Q533-182.09 533-160v80q0 22.09-15.46 37.54Q502.09-27 480-27ZM216.96-668.39l-43-42Q158-725.35 158.5-747.43q.5-22.09 15.46-38.61Q189.35-802 211.43-802q22.09 0 37.61 15.96l42.57 43q14.96 15.39 14.67 36.76-.28 21.37-14.67 37.32-14.96 15.96-36.83 16.03-21.87.06-37.82-15.46Zm494 494.43-42.57-43q-14.96-15.39-14.96-36.97 0-21.59 14.96-37.11 14.96-15.96 36.83-15.46 21.87.5 37.82 15.46l43 41.43q15.96 14.96 15.46 37.04-.5 22.09-15.46 38.61Q770.65-158 748.57-158q-22.09 0-37.61-15.96Zm-42-494.43Q653-683.35 653.5-705.22q.5-21.87 15.46-37.82l41.43-43q14.96-15.96 37.04-15.46 22.09.5 38.61 15.46Q802-770.65 802-748.57q0 22.09-15.96 37.61l-43 42.57q-15.39 14.96-36.76 14.67-21.37-.28-37.32-14.67Zm-495 494.43Q158-189.35 158-211.43q0-22.09 15.96-37.61l43-42.57q15.39-14.96 36.97-14.96 21.59 0 37.11 14.96 15.96 14.96 15.46 36.83-.5 21.87-15.46 37.82l-41.43 43Q234.65-158 212.57-158.5q-22.09-.5-38.61-15.46ZM480-480Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480.57-111.52q-157.22 0-263.14-105.63Q111.52-322.78 111.52-480q0-128.39 77.57-229.89 77.56-101.5 214.17-129.24 18.65-5.39 33.74-1.59 15.09 3.81 25.33 13.37 10.23 9.57 13.84 23.83 3.61 14.26-1 30.35-9.65 23.74-15.6 47.08-5.96 23.35-5.96 48 0 94.01 66.13 159.81t160.61 65.8q24.78 0 49.63-5.32 24.85-5.33 46.02-14.55 15.52-4.17 28.72-.85 13.19 3.33 21.93 11.72 9.7 8.39 13.5 22.63 3.81 14.24-1.02 33.33Q814.96-276 713.72-193.76q-101.24 82.24-233.15 82.24Zm0-106q73.3 0 133.97-37.2 60.68-37.19 93.24-98.8-14.35 2.74-28.41 4.04-14.07 1.31-27.85.18-120.74-9.61-205.82-93.29-85.09-83.67-95.83-208.93-.57-13.78.46-28.13 1.02-14.35 4.32-28.13-61.04 33.13-98.8 94.09-37.76 60.95-37.76 133.69 0 108.74 76.87 185.61 76.86 76.87 185.61 76.87Zm-17.35-245.13Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M479.95-60.78q-86.91 0-163.3-32.91-76.39-32.92-133.22-89.74-56.82-56.83-89.74-133.27-32.91-76.44-32.91-163.35t32.91-163.3q32.92-76.39 89.74-133.22 56.83-56.82 133.27-89.74 76.44-32.91 163.35-32.91t163.3 32.91q76.39 32.92 133.22 89.74 56.82 56.83 89.74 133.27 32.91 76.44 32.91 163.35t-32.91 163.3q-32.92 76.39-89.74 133.22-56.83 56.82-133.27 89.74-76.44 32.91-163.35 32.91Zm46.83-110.13Q641.26-188.17 717.24-274t75.98-206q0-118.63-75.98-204.94-75.98-86.32-190.46-103.58v617.61Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M427-427H233.78q-22.08 0-37.54-15.46-15.46-15.45-15.46-37.54t15.46-37.54Q211.7-533 233.78-533H427v-193.22q0-22.08 15.46-37.54 15.45-15.46 37.54-15.46t37.54 15.46Q533-748.3 533-726.22V-533h193.22q22.08 0 37.54 15.46 15.46 15.45 15.46 37.54t-15.46 37.54Q748.3-427 726.22-427H533v193.22q0 22.08-15.46 37.54-15.45 15.46-37.54 15.46t-37.54-15.46Q427-211.7 427-233.78V-427Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M387-150.39 241.04-86.87q-53 22.65-100.87-8.48-47.87-31.13-47.87-88.83v-461.34q0-44.3 30.85-75.15 30.85-30.85 75.15-30.85h377.39q44.31 0 75.16 30.85 30.85 30.85 30.85 75.15v461.34q0 57.7-47.87 88.83-47.87 31.13-100.88 8.48L387-150.39Zm0-115.7 188.69 82.61v-462.04H198.3v462.04L387-266.09Zm427.7 88.57q-22.09 0-37.55-15.46-15.45-15.46-15.45-37.54v-601h-441q-22.09 0-37.55-15.46-15.45-15.45-15.45-37.54t15.45-37.55q15.46-15.45 37.55-15.45h441q44.3 0 75.15 30.85 30.85 30.84 30.85 75.15v601q0 22.08-15.46 37.54t-37.54 15.46Zm-427.7-468H198.3h377.39H387Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M166.78-140.78q-44.3 0-75.15-30.85-30.85-30.85-30.85-75.15v-466.44q0-44.87 30.85-75.43 30.85-30.57 75.15-30.57h181q21.23 0 40.46 7.98 19.24 7.98 34.19 22.94L480-730.74h366.22q22.08 0 37.54 15.46 15.46 15.45 15.46 37.54t-15.46 37.54q-15.46 15.46-37.54 15.46H436.26l-88.48-88.48h-181v469.26l70.52-226.82q10.83-33.35 38.55-53.65 27.72-20.31 62.76-20.31h471.91q54 0 85.7 43.52 31.69 43.53 15.61 94.53l-53.92 174.43q-14.78 45.78-46.17 68.63-31.39 22.85-78.31 22.85H166.78Zm112.83-106h471.35l59-191.96H338.61l-59 191.96ZM166.78-470.91v-242.31 242.31Zm112.83 224.13 59-191.96-59 191.96Z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-240v-480 480Zm0 80q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h320q33 0 56.5 23.5T880-640v80q0 17-11.5 28.5T840-520q-17 0-28.5-11.5T800-560v-80H447l-80-80H160v480h280q17 0 28.5 11.5T480-200q0 17-11.5 28.5T440-160H160Zm400 40v-66q0-8 3-15.5t9-13.5l209-208q9-9 20-13t22-4q12 0 23 4.5t20 13.5l37 37q8 9 12.5 20t4.5 22q0 11-4 22.5T903-300L695-92q-6 6-13.5 9T666-80h-66q-17 0-28.5-11.5T560-120Zm300-223-37-37 37 37ZM620-140h38l121-122-18-19-19-18-122 121v38Zm141-141-19-18 37 37-18-19Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M380-320q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l224 224q11 11 11 28t-11 28q-11 11-28 11t-28-11L532-372q-30 24-69 38t-83 14Zm0-80q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M680-160q-17 0-28.5-11.5T640-200v-200q0-17 11.5-28.5T680-440h80q17 0 28.5 11.5T800-400v200q0 17-11.5 28.5T760-160h-80Zm-240 0q-17 0-28.5-11.5T400-200v-560q0-17 11.5-28.5T440-800h80q17 0 28.5 11.5T560-760v560q0 17-11.5 28.5T520-160h-80Zm-240 0q-17 0-28.5-11.5T160-200v-360q0-17 11.5-28.5T200-600h80q17 0 28.5 11.5T320-560v360q0 17-11.5 28.5T280-160h-80Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 80q-83 0-141.5-58.5T280-480q0-83 58.5-141.5T480-680q83 0 141.5 58.5T680-480q0 83-58.5 141.5T480-280ZM80-440q-17 0-28.5-11.5T40-480q0-17 11.5-28.5T80-520h80q17 0 28.5 11.5T200-480q0 17-11.5 28.5T160-440H80Zm720 0q-17 0-28.5-11.5T760-480q0-17 11.5-28.5T800-520h80q17 0 28.5 11.5T920-480q0 17-11.5 28.5T880-440h-80ZM480-760q-17 0-28.5-11.5T440-800v-80q0-17 11.5-28.5T480-920q17 0 28.5 11.5T520-880v80q0 17-11.5 28.5T480-760Zm0 720q-17 0-28.5-11.5T440-80v-80q0-17 11.5-28.5T480-200q17 0 28.5 11.5T520-160v80q0 17-11.5 28.5T480-40ZM226-678l-43-42q-12-11-11.5-28t11.5-29q12-12 29-12t28 12l42 43q11 12 11 28t-11 28q-11 12-27.5 11.5T226-678Zm494 495-42-43q-11-12-11-28.5t11-27.5q11-12 27.5-11.5T734-282l43 42q12 11 11.5 28T777-183q-12 12-29 12t-28-12Zm-42-495q-12-11-11.5-27.5T678-734l42-43q11-12 28-11.5t29 11.5q12 12 12 29t-12 28l-43 42q-12 11-28 11t-28-11ZM183-183q-12-12-12-29t12-28l43-42q12-11 28.5-11t27.5 11q12 11 11.5 27.5T282-226l-42 43q-11 12-28 11.5T183-183Zm297-297Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-120q-151 0-255.5-104.5T120-480q0-138 90-239.5T440-838q13-2 23 3.5t16 14.5q6 9 6.5 21t-7.5 23q-17 26-25.5 55t-8.5 61q0 90 63 153t153 63q31 0 61.5-9t54.5-25q11-7 22.5-6.5T819-479q10 5 15.5 15t3.5 24q-14 138-117.5 229T480-120Zm0-80q88 0 158-48.5T740-375q-20 5-40 8t-40 3q-123 0-209.5-86.5T364-660q0-20 3-40t8-40q-78 32-126.5 102T200-480q0 116 82 198t198 82Zm-10-270Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm40-83q119-15 199.5-104.5T800-480q0-123-80.5-212.5T520-797v634Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M440-440H240q-17 0-28.5-11.5T200-480q0-17 11.5-28.5T240-520h200v-200q0-17 11.5-28.5T480-760q17 0 28.5 11.5T520-720v200h200q17 0 28.5 11.5T760-480q0 17-11.5 28.5T720-440H520v200q0 17-11.5 28.5T480-200q-17 0-28.5-11.5T440-240v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M400-160 232-88q-40 17-76-6.5T120-161v-519q0-33 23.5-56.5T200-760h400q33 0 56.5 23.5T680-680v519q0 43-36 66.5T568-88l-168-72Zm0-88 200 86v-518H200v518l200-86Zm400 88q-17 0-28.5-11.5T760-200v-640H280q-17 0-28.5-11.5T240-880q0-17 11.5-28.5T280-920h480q33 0 56.5 23.5T840-840v640q0 17-11.5 28.5T800-160ZM400-680H200h400-200Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h207q16 0 30.5 6t25.5 17l57 57h360q17 0 28.5 11.5T880-680q0 17-11.5 28.5T840-640H447l-80-80H160v480l79-263q8-26 29.5-41.5T316-560h516q41 0 64.5 32.5T909-457l-72 240q-8 26-29.5 41.5T760-160H160Zm84-80h516l72-240H316l-72 240Zm-84-262v-218 218Zm84 262 72-240-72 240Z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" height="128" view
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M160-240v-480 480Zm24.62 40q-27.62 0-46.12-18.5Q120-237 120-264.62v-430.76q0-27.62 18.5-46.12Q157-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h311.53q27.62 0 46.12 18.5Q840-643 840-615.38v67.69q0 8.54-5.73 14.27T820-527.69q-8.54 0-14.27-5.73T800-547.69v-67.69q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H447.77l-80-80H184.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7v430.76q0 9.24 7.69 16.93 7.69 7.69 16.93 7.69h269.23q8.53 0 14.27 5.73 5.73 5.73 5.73 14.27t-5.73 14.27q-5.74 5.73-14.27 5.73H184.62Zm384.61 47.69v-42.92q0-6.46 2.23-12.04 2.23-5.58 7.46-10.81l203.62-202.61q5.92-5.93 12.31-8 6.38-2.08 12.77-2.08 6.61 0 13.38 2.58 6.77 2.57 11.92 7.73l37 37.77q4.93 5.92 7.5 12.31Q880-364 880-357.62q0 6.39-2.46 12.89-2.46 6.5-7.62 12.42L667.31-129.69q-5.23 5.23-10.81 7.46-5.58 2.23-12.04 2.23h-42.92q-13.92 0-23.12-9.19-9.19-9.19-9.19-23.12Zm275.39-205.31-37-37.76 37 37.76Zm-240 202.24h38l138.69-138.93-18.77-19-18.23-19.54-139.69 139.47v38Zm157.92-157.93-18.23-19.54 37 38.54-18.77-19Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M381.54-350.77q-95.92 0-162.58-66.65-66.65-66.66-66.65-162.58 0-95.92 66.65-162.58 66.66-66.65 162.58-66.65 95.92 0 162.58 66.65 66.65 66.66 66.65 162.58 0 41.69-14.77 80.69t-38.77 66.69l236.31 236.31q5.61 5.62 6 13.77.38 8.16-6 14.54-6.39 6.38-14.16 6.38-7.76 0-14.15-6.38L528.92-404.31q-30 25.54-69 39.54t-78.38 14Zm0-40q79.61 0 134.42-54.81 54.81-54.8 54.81-134.42 0-79.62-54.81-134.42-54.81-54.81-134.42-54.81-79.62 0-134.42 54.81-54.81 54.8-54.81 134.42 0 79.62 54.81 134.42 54.8 54.81 134.42 54.81Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M672.31-200q-13.73 0-23.02-9.29T640-232.31V-360q0-13.73 9.29-23.02t23.02-9.29h55.38q13.73 0 23.02 9.29T760-360v127.69q0 13.73-9.29 23.02T727.69-200h-55.38Zm-220 0q-13.73 0-23.02-9.29T420-232.31v-495.38q0-13.73 9.29-23.02t23.02-9.29h55.38q13.73 0 23.02 9.29t9.29 23.02v495.38q0 13.73-9.29 23.02T507.69-200h-55.38Zm-220 0q-13.73 0-23.02-9.29T200-232.31v-302.7q0-14.3 9.29-23.49 9.29-9.19 23.02-9.19h55.38q13.73 0 23.02 9.29 9.29 9.28 9.29 23.02v302.7q0 14.3-9.29 23.49-9.29 9.19-23.02 9.19h-55.38Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 40q-66.85 0-113.42-46.58Q320-413.15 320-480t46.58-113.42Q413.15-640 480-640t113.42 46.58Q640-546.85 640-480t-46.58 113.42Q546.85-320 480-320ZM80-460q-8.5 0-14.25-5.76T60-480.03q0-8.51 5.75-14.24T80-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T180-460H80Zm700 0q-8.5 0-14.25-5.76T760-480.03q0-8.51 5.75-14.24T780-500h100q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T880-460H780ZM479.97-760q-8.51 0-14.24-5.75T460-780v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-880v100q0 8.5-5.76 14.25T479.97-760Zm0 700q-8.51 0-14.24-5.75T460-80v-100q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-180v100q0 8.5-5.76 14.25T479.97-60ZM254.46-678.77l-57.61-55.85q-5.85-5.61-5.73-13.76.11-8.16 5.96-14.77 6.38-6.62 14.15-6.62 7.77 0 14.15 6.62L282-706.31q6.38 6.62 6.38 14.16 0 7.53-6 14.15t-13.65 6.12q-7.65-.5-14.27-6.89Zm480.16 481.92L678-253.69q-6.38-6.62-6.38-14.27 0-7.66 6.38-14.04 5.23-6.62 13.08-6.12 7.84.5 14.46 6.89l57.61 55.85q5.85 5.61 5.73 13.76-.11 8.16-5.96 14.77-6.38 6.62-14.15 6.62-7.77 0-14.15-6.62ZM678-677.62q-6.62-6-6.12-13.65t6.89-14.27l55.85-57.61q5.61-5.85 13.76-5.73 8.16.11 14.77 5.96 6.62 6.38 6.62 14.15 0 7.77-6.62 14.15L706.31-678q-6.62 6.38-14.16 6.38-7.53 0-14.15-6ZM196.85-196.68q-6.62-6.78-6.62-14.55 0-7.77 6.62-14.15L253.69-282q6.62-6.38 14.27-6.38 7.66 0 14.04 6.38 5.85 5.23 5.35 13.08-.5 7.84-6.12 14.46l-55.85 57.61q-6.38 6.62-14.15 6.5-7.77-.11-14.38-6.33ZM480-480Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M482.31-160Q349-160 255.65-253.35 162.31-346.69 162.31-480q0-98.77 56.54-181.42 56.53-82.66 160.38-118.89 12.23-4.31 21.46-2.27 9.23 2.04 15.23 7.96 6 5.93 7.66 15.24 1.65 9.3-2.5 19.53-7.77 19.08-11.27 38.66t-3.5 41.19q0 106.67 74.66 181.33Q555.64-404 662.31-404q27.92 0 51.11-5.92 23.2-5.93 39.5-9.62 8.7-1.61 15.96.42 7.27 2.04 11.54 7.04 4.73 5 6.39 12.31 1.65 7.31-1.89 16.69-28.61 98-112.11 160.54Q589.31-160 482.31-160Zm0-40q88 0 158-48.5t102-126.5q-20 5-40 8t-40 3q-123 0-209.5-86.5T366.31-660q0-20 3-40t8-40q-78 32-126.5 102t-48.5 158q0 116 82 198t198 82Zm-10-270Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M480.13-120q-74.67 0-140.41-28.34-65.73-28.34-114.36-76.92-48.63-48.58-76.99-114.26Q120-405.19 120-479.87q0-74.67 28.34-140.41 28.34-65.73 76.92-114.36 48.58-48.63 114.26-76.99Q405.19-840 479.87-840q74.67 0 140.41 28.34 65.73 28.34 114.36 76.92 48.63 48.58 76.99 114.26Q840-554.81 840-480.13q0 74.67-28.34 140.41-28.34 65.73-76.92 114.36-48.58 48.63-114.26 76.99Q554.81-120 480.13-120ZM500-160.69q123.62-8.08 211.81-98.35T800-480q0-130.69-87.42-220.19-87.43-89.5-212.58-99.12v638.62Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M460-460H260q-8.5 0-14.25-5.76T240-480.03q0-8.51 5.75-14.24T260-500h200v-200q0-8.5 5.76-14.25t14.27-5.75q8.51 0 14.24 5.75T500-700v200h200q8.5 0 14.25 5.76t5.75 14.27q0 8.51-5.75 14.24T700-460H500v200q0 8.5-5.76 14.25T479.97-240q-8.51 0-14.24-5.75T460-260v-200Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="m420-203.08-149.54 64.31q-32.31 13.92-61.38-5.35Q180-163.38 180-197.92v-457.46q0-27.62 18.5-46.12Q217-720 244.62-720h350.76q27.62 0 46.12 18.5Q660-683 660-655.38v457.46q0 34.54-29.08 53.8-29.07 19.27-61.38 5.35L420-203.08Zm0-44.92 165.38 71.38q12.31 5.39 23.47-2.3 11.15-7.7 11.15-20.77v-455.69q0-9.24-7.69-16.93-7.69-7.69-16.93-7.69H244.62q-9.24 0-16.93 7.69-7.69 7.69-7.69 16.93v455.69q0 13.07 11.15 20.77 11.16 7.69 23.47 2.3L420-248Zm340 28q-8.54 0-14.27-5.73T740-240v-535.39q0-9.23-7.69-16.92-7.69-7.69-16.93-7.69H320q-8.54 0-14.27-5.73T300-820q0-8.54 5.73-14.27T320-840h395.38q27.62 0 46.12 18.5Q780-803 780-775.39V-240q0 8.54-5.73 14.27T760-220ZM420-680H220h400-200Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" height="128" viewBox="0 -960 960 960" width="128" fill="#000000"><path d="M180-200q-25.31 0-42.65-17.35Q120-234.69 120-260v-435.38q0-25.31 19.65-44.97Q159.31-760 184.62-760H357q12.92 0 25.12 5.23 12.19 5.23 20.88 13.92L463.85-680h349.23q8.54 0 14.27 5.73t5.73 14.27q0 8.54-5.73 14.27T813.08-640H447.77l-80-80H184.62q-10.77 0-17.7 6.92-6.92 6.93-6.92 17.7V-240q0-10.77 4.23-8.08 4.23 2.7 11.15 6.54l76.7-256.84q6.46-20.62 23.73-33.43 17.27-12.81 38.65-12.81h512.92q32.54 0 52.2 25.97 19.65 25.96 10.19 57.03l-65.85 219.24q-5.69 19.07-21.8 30.73Q786-200 766.15-200H180Zm37.08-40h546q8.46 0 15-4.62 6.54-4.61 8.84-13.07l64.31-215.39q3.85-12.3-3.85-21.92-7.69-9.62-20-9.62H314.46q-8.46 0-15 4.62-6.54 4.62-8.84 13.08L217.08-240ZM160-498.15V-720v221.85ZM217.08-240l73.54-246.92q2.3-8.46 3.84-13.08l1.54-4.62-2.69 9.62q-2.69 9.62-6.54 21.92l-64.31 215.39q-2.31 8.46-3.84 13.07l-1.54 4.62Z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 2
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M21 15.2426V21.0082C21 21.556 20.5551 22 20.0066 22H3.9934C3.44476 22 3 21.5511 3 20.9925V9H9C9.55228 9 10 8.55228 10 8V2H20.0017C20.5531 2 21 2.45531 21 2.9918V6.75736L12.0012 15.7562L11.995 19.995L16.2414 20.0012L21 15.2426ZM21.7782 8.80761L23.1924 10.2218L15.4142 18L13.9979 17.9979L14 16.5858L21.7782 8.80761ZM3 7L8 2.00318V7H3Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M16 2L21 7V21.0082C21 21.556 20.5551 22 20.0066 22H3.9934C3.44476 22 3 21.5447 3 21.0082V2.9918C3 2.44405 3.44495 2 3.9934 2H16ZM13.529 14.4464L15.7395 16.6569L17.1537 15.2426L14.9432 13.0322C15.8492 11.4983 15.6432 9.48951 14.3252 8.17157C12.7631 6.60948 10.2305 6.60948 8.66839 8.17157C7.1063 9.73367 7.1063 12.2663 8.66839 13.8284C9.98633 15.1464 11.9951 15.3524 13.529 14.4464ZM12.911 12.4142C12.13 13.1953 10.8637 13.1953 10.0826 12.4142C9.30156 11.6332 9.30156 10.3668 10.0826 9.58579C10.8637 8.80474 12.13 8.80474 12.911 9.58579C13.6921 10.3668 13.6921 11.6332 12.911 12.4142Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M3 12H7V21H3V12ZM17 8H21V21H17V8ZM10 2H14V21H10V2Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M12 18C8.68629 18 6 15.3137 6 12C6 8.68629 8.68629 6 12 6C15.3137 6 18 8.68629 18 12C18 15.3137 15.3137 18 12 18ZM11 1H13V4H11V1ZM11 20H13V23H11V20ZM3.51472 4.92893L4.92893 3.51472L7.05025 5.63604L5.63604 7.05025L3.51472 4.92893ZM16.9497 18.364L18.364 16.9497L20.4853 19.0711L19.0711 20.4853L16.9497 18.364ZM19.0711 3.51472L20.4853 4.92893L18.364 7.05025L16.9497 5.63604L19.0711 3.51472ZM5.63604 16.9497L7.05025 18.364L4.92893 20.4853L3.51472 19.0711L5.63604 16.9497ZM23 11V13H20V11H23ZM4 11V13H1V11H4Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M11.3807 2.01886C9.91573 3.38768 9 5.3369 9 7.49999C9 11.6421 12.3579 15 16.5 15C18.6631 15 20.6123 14.0843 21.9811 12.6193C21.6613 17.8537 17.3149 22 12 22C6.47715 22 2 17.5228 2 12C2 6.68514 6.14629 2.33869 11.3807 2.01886Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M12 21.9967C6.47715 21.9967 2 17.5196 2 11.9967C2 6.47386 6.47715 1.9967 12 1.9967C17.5228 1.9967 22 6.47386 22 11.9967C22 17.5196 17.5228 21.9967 12 21.9967ZM12 19.9967V3.9967C7.58172 3.9967 4 7.57843 4 11.9967C4 16.415 7.58172 19.9967 12 19.9967Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M11 11V5H13V11H19V13H13V19H11V13H5V11H11Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M5 2H19C19.5523 2 20 2.44772 20 3V22.1433C20 22.4194 19.7761 22.6434 19.5 22.6434C19.4061 22.6434 19.314 22.6168 19.2344 22.5669L12 18.0313L4.76559 22.5669C4.53163 22.7136 4.22306 22.6429 4.07637 22.4089C4.02647 22.3293 4 22.2373 4 22.1433V3C4 2.44772 4.44772 2 5 2Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M22 11V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V11H22ZM22 9H2V4C2 3.44772 2.44772 3 3 3H10.4142L12.4142 5H21C21.5523 5 22 5.44772 22 6V9Z" /></svg>
@@ -56,6 +56,9 @@ icon:sb_outline = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 2
icon:sb_project = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M21 6.75736L19 8.75736V4H10V9H5V20H19V17.2426L21 15.2426V21.0082C21 21.556 20.5551 22 20.0066 22H3.9934C3.44476 22 3 21.5501 3 20.9932V8L9.00319 2H19.9978C20.5513 2 21 2.45531 21 2.9918V6.75736ZM21.7782 8.80761L23.1924 10.2218L15.4142 18L13.9979 17.9979L14 16.5858L21.7782 8.80761Z" /></svg>
icon:sb_search = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M15 4H5V20H19V8H15V4ZM3 2.9918C3 2.44405 3.44749 2 3.9985 2H16L20.9997 7L21 20.9925C21 21.5489 20.5551 22 20.0066 22H3.9934C3.44476 22 3 21.5447 3 21.0082V2.9918ZM13.529 14.4464C11.9951 15.3524 9.98633 15.1464 8.66839 13.8284C7.1063 12.2663 7.1063 9.73367 8.66839 8.17157C10.2305 6.60948 12.7631 6.60948 14.3252 8.17157C15.6432 9.48951 15.8492 11.4983 14.9432 13.0322L17.1537 15.2426L15.7395 16.6569L13.529 14.4464ZM12.911 12.4142C13.6921 11.6332 13.6921 10.3668 12.911 9.58579C12.13 8.80474 10.8637 8.80474 10.0826 9.58579C9.30156 10.3668 9.30156 11.6332 10.0826 12.4142C10.8637 13.1953 12.13 13.1953 12.911 12.4142Z" /></svg>
icon:sb_stats = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M3 12H7V21H3V12ZM17 8H21V21H17V8ZM10 2H14V21H10V2Z" /></svg>
icon:theme_light = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M12 18C8.68629 18 6 15.3137 6 12C6 8.68629 8.68629 6 12 6C15.3137 6 18 8.68629 18 12C18 15.3137 15.3137 18 12 18ZM12 16C14.2091 16 16 14.2091 16 12C16 9.79086 14.2091 8 12 8C9.79086 8 8 9.79086 8 12C8 14.2091 9.79086 16 12 16ZM11 1H13V4H11V1ZM11 20H13V23H11V20ZM3.51472 4.92893L4.92893 3.51472L7.05025 5.63604L5.63604 7.05025L3.51472 4.92893ZM16.9497 18.364L18.364 16.9497L20.4853 19.0711L19.0711 20.4853L16.9497 18.364ZM19.0711 3.51472L20.4853 4.92893L18.364 7.05025L16.9497 5.63604L19.0711 3.51472ZM5.63604 16.9497L7.05025 18.364L4.92893 20.4853L3.51472 19.0711L5.63604 16.9497ZM23 11V13H20V11H23ZM4 11V13H1V11H4Z" /></svg>
icon:theme_dark = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M10 7C10 10.866 13.134 14 17 14C18.9584 14 20.729 13.1957 21.9995 11.8995C22 11.933 22 11.9665 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C12.0335 2 12.067 2 12.1005 2.00049C10.8043 3.27098 10 5.04157 10 7ZM4 12C4 16.4183 7.58172 20 12 20C15.0583 20 17.7158 18.2839 19.062 15.7621C18.3945 15.9187 17.7035 16 17 16C12.0294 16 8 11.9706 8 7C8 6.29648 8.08133 5.60547 8.2379 4.938C5.71611 6.28423 4 8.9417 4 12Z" /></svg>
icon:theme_auto = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M12 21.9967C6.47715 21.9967 2 17.5196 2 11.9967C2 6.47386 6.47715 1.9967 12 1.9967C17.5228 1.9967 22 6.47386 22 11.9967C22 17.5196 17.5228 21.9967 12 21.9967ZM12 19.9967C16.4183 19.9967 20 16.415 20 11.9967C20 7.57843 16.4183 3.9967 12 3.9967C7.58172 3.9967 4 7.57843 4 11.9967C4 16.415 7.58172 19.9967 12 19.9967ZM12 17.9967V5.9967C15.3137 5.9967 18 8.683 18 11.9967C18 15.3104 15.3137 17.9967 12 17.9967Z" /></svg>
icon:add = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M11 11V5H13V11H19V13H13V19H11V13H5V11H11Z" /></svg>
icon:bookmarks = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M5 2H19C19.5523 2 20 2.44772 20 3V22.1433C20 22.4194 19.7761 22.6434 19.5 22.6434C19.4061 22.6434 19.314 22.6168 19.2344 22.5669L12 18.0313L4.76559 22.5669C4.53163 22.7136 4.22306 22.6429 4.07637 22.4089C4.02647 22.3293 4 22.2373 4 22.1433V3C4 2.44772 4.44772 2 5 2ZM18 4H6V19.4324L12 15.6707L18 19.4324V4Z" /></svg>
icon:browse = <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000" height="128" width="128"><path d="M12.4142 5H21C21.5523 5 22 5.44772 22 6V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H10.4142L12.4142 5ZM20 11H4V19H20V11ZM20 9V7H11.5858L9.58579 5H4V9H20Z" /></svg>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

@@ -1,28 +0,0 @@
[Main]
name = Cyberpunk Night
author = Anders Lemvigh
url = https://github.com/alemvigh
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Syntax]
background = 0, 0, 0
text = 150, 150, 150
link = 77, 77, 255
headertext = 255, 255, 255
headertag = 50, 0, 180
emphasis = 0, 255, 255
dialog = 0, 255, 0
altdialog = 0, 140, 255
note = 150, 150, 150
hidden = 77, 77, 100
shortcode = 255, 255, 0
keyword = 255, 100, 255
tag = 255, 150, 10
value = 255, 150, 10
spellcheckline = 242, 72, 23
errorline = 186, 218, 4
replacetag = 0, 0, 180
modifier = 144, 142, 176
optional = 180, 180, 180
texthighlight = 255, 255, 132, 96
@@ -1,42 +0,0 @@
[Main]
name = Default Dark
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
##
# Colours:
# Background = 2a2a2a : 42, 42, 42
# Foreground = cccccc : 204, 204, 204
# Comment = 969696 : 150, 150, 150
# Red = e64250 : 230, 66, 80
# Orange = f99157 : 249, 145, 87
# Yellow = ffff84 : 255, 255, 132
# Green = 99cc99 : 153, 204, 153
# Blue = 288ed7 : 102, 153, 204
# Purple = 8c56d7 : 140, 86, 215
##
[Syntax]
background = 42, 42, 42
text = 204, 204, 204
link = 102, 153, 204
headertext = 153, 204, 153
headertag = 153, 204, 153, 160
emphasis = 249, 145, 87
dialog = 102, 153, 204
altdialog = 102, 153, 204
note = 255, 255, 216
hidden = 150, 150, 150
shortcode = 153, 204, 153
keyword = 230, 66, 80
tag = 153, 204, 153
value = 102, 153, 204
optional = 153, 204, 153
spellcheckline = 230, 66, 80
errorline = 153, 204, 153
replacetag = 153, 204, 153
modifier = 153, 204, 153
texthighlight = 255, 255, 132, 96
@@ -1,42 +0,0 @@
[Main]
name = Default Light
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
##
# Colours:
# Background = ffffff : 255, 255, 255
# Foreground = 000000 : 0, 0, 0
# Comment = 646464 : 100, 100, 100
# Red = c83232 : 200, 50, 50
# Orange = ae6e1e : 174, 110, 30
# Yellow = 969600 : 150, 150, 0
# Green = 006400 : 0, 100, 0
# Blue = 0000c8 : 0, 0, 200
# Purple = 6400ae : 100, 0, 174
##
[Syntax]
background = 255, 255, 255
text = 0, 0, 0
link = 0, 0, 200
headertext = 0, 100, 0
headertag = 0, 100, 0, 160
emphasis = 174, 110, 30
dialog = 0, 0, 200
altdialog = 0, 0, 200
note = 100, 100, 0
hidden = 100, 100, 100
shortcode = 0, 100, 0
keyword = 200, 50, 50
tag = 0, 100, 0
value = 0, 0, 200
optional = 0, 100, 0
spellcheckline = 200, 50, 50
errorline = 0, 100, 0
replacetag = 0, 100, 0
modifier = 0, 100, 0
texthighlight = 150, 150, 0, 96
-44
View File
@@ -1,44 +0,0 @@
[Main]
name = Dracula
author = Veronica Berglyd Olsen (adaptation)
credit = Zeno Rocha
url = https://draculatheme.com
license = MIT
licenseurl = https://github.com/dracula/dracula-theme/blob/main/LICENSE
##
# Colours:
# Background = 282a36 : 40, 42, 54
# Foreground = f8f8f2 : 248, 248, 242
# Comment = 6272a4 : 98, 114, 164
# Cyan = 8be9fd : 139, 233, 253
# Green = 50fa7b : 80, 250, 123
# Orange = ffb86c : 255, 184, 108
# Pink = ff79c6 : 255, 121, 198
# Purple = bd93f9 : 189, 147, 249
# Red = ff5555 : 255, 85, 85
# Yellow = f1fa8c : 241, 250, 140
##
[Syntax]
# See: https://spec.draculatheme.com/
background = 40, 42, 54
text = 248, 248, 242
link = 255, 121, 198
headertext = 189, 147, 249
headertag = 189, 147, 249, 160
emphasis = 255, 184, 108
dialog = 80, 250, 123
altdialog = 241, 250, 140
note = 255, 204, 233
hidden = 98, 114, 164
shortcode = 139, 233, 253
keyword = 255, 121, 198
tag = 255, 184, 108
value = 255, 184, 108
optional = 80, 250, 123
spellcheckline = 255, 85, 85
errorline = 80, 250, 123
replacetag = 241, 250, 140
modifier = 139, 233, 253
texthighlight = 241, 250, 140, 96
-29
View File
@@ -1,29 +0,0 @@
[Main]
name = Grey Dark
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Syntax]
background = 54, 54, 54
text = 200, 200, 200
link = 200, 200, 200
headertext = 225, 225, 225
headertag = 225, 225, 225, 160
emphasis = 200, 200, 200
dialog = 200, 200, 200
altdialog = 200, 200, 200
note = 200, 200, 200
hidden = 150, 150, 150
shortcode = 225, 225, 225
keyword = 225, 225, 225
tag = 200, 200, 200
value = 200, 200, 200
optional = 225, 225, 225
spellcheckline = 200, 46, 0
errorline = 46, 200, 0
replacetag = 225, 225, 225
modifier = 225, 225, 225
texthighlight = 255, 255, 255, 64
-29
View File
@@ -1,29 +0,0 @@
[Main]
name = Grey Light
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Syntax]
background = 255, 255, 255
text = 20, 20, 20
link = 20, 20, 20
headertext = 0, 0, 0
headertag = 0, 0, 0, 160
emphasis = 20, 20, 20
dialog = 20, 20, 20
altdialog = 20, 20, 20
note = 20, 20, 20
hidden = 100, 100, 100
shortcode = 0, 0, 0
keyword = 0, 0, 0
tag = 20, 20, 20
value = 20, 20, 20
optional = 0, 0, 0
spellcheckline = 200, 0, 0
errorline = 0, 150, 0
replacetag = 0, 0, 0
modifier = 0, 0, 0
texthighlight = 0, 0, 0, 64
-49
View File
@@ -1,49 +0,0 @@
##
# Theme: Light Owl
# Source: https://github.com/sdras/night-owl-vscode-theme
# Credit: Sarah Drasner
##
# Colours:
# Background = fbfbfb : 251, 251, 251
# Current Line = e0e0e0 : 224, 224, 224
# Selection = e0e0e0 : 224, 224, 224
# Foreground = 403f52 : 64, 63, 82
# Comment = 989fb1 : 152, 159, 177
# Red = de3d3a : 222, 61, 58
# Orange = e0af05 : 224, 175, 5
# Yellow = daaa01 : 218, 170, 1
# Green = 08916a : 8, 145, 106
# Aqua = 2aa298 : 42, 162, 152
# Blue = 288ed7 : 40, 142, 215
# Purple = 964ac1 : 150, 74, 193
##
[Main]
name = Light Owl
author = Veronica Berglyd Olsen (adaptation)
credit = Sarah Drasner (color theme)
url = https://github.com/sdras/night-owl-vscode-theme
license = MIT License
licenseurl = https://github.com/sdras/night-owl-vscode-theme/blob/master/LICENSE
[Syntax]
background = 251, 251, 251
text = 64, 63, 82
link = 40, 142, 215
headertext = 40, 142, 215
headertag = 40, 142, 215, 160
emphasis = 224, 175, 5
dialog = 8, 145, 106
altdialog = 218, 170, 1
note = 128, 118, 75
hidden = 152, 159, 177
shortcode = 40, 142, 215
keyword = 222, 61, 58
tag = 150, 74, 193
value = 224, 175, 5
optional = 40, 142, 215
spellcheckline = 222, 61, 58
errorline = 8, 145, 106
replacetag = 42, 162, 152
modifier = 8, 145, 106
texthighlight = 218, 170, 1, 96
-49
View File
@@ -1,49 +0,0 @@
##
# Theme: Night Owl
# Source: https://github.com/sdras/night-owl-vscode-theme
# Credit: Sarah Drasner
##
# Colours:
# Background = 011627 : 1, 22, 39
# Current Line = 32374d : 50, 55, 77
# Selection = 32374d : 50, 55, 77
# Foreground = d6deeb : 214, 222, 235
# Comment = 637777 : 99, 119, 119
# Red = f78c6c : 247, 140, 108
# Orange = ecc48d : 236, 196, 141
# Yellow = ffeb95 : 255, 235, 149
# Green = addb67 : 173, 219, 103
# Aqua = 7fdbca : 127, 219, 202
# Blue = 82aaff : 130, 170, 255
# Purple = c792ea : 199, 146, 234
##
[Main]
name = Night Owl
author = Veronica Berglyd Olsen (adaptation)
credit = Sarah Drasner (color theme)
url = https://github.com/sdras/night-owl-vscode-theme
license = MIT License
licenseurl = https://github.com/sdras/night-owl-vscode-theme/blob/master/LICENSE
[Syntax]
background = 1, 22, 39
text = 214, 222, 235
link = 130, 170, 255
headertext = 130, 170, 255
headertag = 130, 170, 255, 160
emphasis = 236, 196, 141
dialog = 173, 219, 103
altdialog = 255, 235, 149
note = 255, 249, 202
hidden = 99, 119, 119
shortcode = 130, 170, 255
keyword = 247, 140, 108
tag = 199, 146, 234
value = 255, 235, 149
optional = 130, 170, 255
spellcheckline = 247, 140, 108
errorline = 173, 219, 103
replacetag = 127, 219, 202
modifier = 173, 219, 103
texthighlight = 255, 235, 149, 96
-42
View File
@@ -1,42 +0,0 @@
[Main]
name = Snazzy Light
author = Veronica Berglyd Olsen (adaptation)
credit = Florian Reuschel (color theme)
url = https://github.com/loilo/vscode-snazzy-light
license = MIT License
licenseurl = https://github.com/loilo/vscode-snazzy-light/blob/master/LICENSE
##
# Colours:
# Background = fafbfc : 250, 251, 252
# Foreground = 565869 : 86, 88, 105
# Comment = 9194a2 : 145, 148, 162
# Yellow = cf9c00 : 207, 156, 0
# Red = ff5c57 : 255, 92, 87
# Pink = f767bb : 247, 103, 187
# Blue = 09a1ed : 9, 161, 237
# Cyan = 13bbb7 : 19, 187, 183
# Green = 2dae58 : 45, 174, 88
##
[Syntax]
background = 250, 251, 252
text = 86, 88, 105
link = 9, 161, 237
headertext = 45, 174, 88
headertag = 45, 174, 88, 160
emphasis = 247, 103, 187
dialog = 9, 161, 237
altdialog = 207, 156, 0
note = 120, 187, 185
hidden = 145, 148, 162
shortcode = 247, 103, 187
keyword = 9, 161, 237
tag = 45, 174, 88
value = 207, 156, 0
optional = 207, 156, 0
spellcheckline = 255, 92, 87
errorline = 45, 174, 88
replacetag = 19, 187, 183
modifier = 247, 103, 187
texthighlight = 207, 156, 0, 96
@@ -1,29 +0,0 @@
[Main]
name = Solarized Dark
author = nullbasis
credit = Ethan Schoonover
url = https://ethanschoonover.com/solarized/
license = MIT
licenseurl = https://github.com/altercation/solarized/blob/master/LICENSE
[Syntax]
background = 7, 54, 66
text = 253, 246, 227
link = 38, 139, 210
headertext = 147, 161, 161
headertag = 42, 161, 152
emphasis = 38, 139, 210
dialog = 42, 161, 152
altdialog = 42, 161, 152
note = 101, 161, 156
hidden = 147, 161, 161
shortcode = 147, 161, 161
keyword = 133, 153, 0
tag = 203, 75, 22
value = 203, 75, 22
optional = 147, 161, 161
spellcheckline = 203, 75, 22
errorline = 220, 50, 47
replacetag = 133, 153, 0
modifier = 181, 137, 0
texthighlight = 181, 137, 0, 96
@@ -1,29 +0,0 @@
[Main]
name = Solarized Light
author = nullbasis
credit = Ethan Schoonover
url = https://ethanschoonover.com/solarized/
license = MIT
licenseurl = https://github.com/altercation/solarized/blob/master/LICENSE
[Syntax]
background = 253, 246, 227
text = 0, 43, 54
link = 38, 139, 210
headertext = 88, 110, 117
headertag = 42, 161, 152
emphasis = 38, 139, 210
dialog = 42, 161, 152
altdialog = 42, 161, 152
note = 27, 102, 96
hidden = 88, 110, 117
shortcode = 88, 110, 117
keyword = 133, 153, 0
tag = 203, 75, 22
value = 203, 75, 22
optional = 88, 110, 117
spellcheckline = 203, 75, 22
errorline = 220, 50, 47
replacetag = 133, 153, 0
modifier = 181, 137, 0
texthighlight = 181, 137, 0, 96
-39
View File
@@ -1,39 +0,0 @@
[Main]
name = Tango
author = Veronica Berglyd Olsen (adaptation)
##
# Colours:
# Background = 30302f : 48, 48, 47
# Foreground = eeeeec : 238, 238, 236
# Comment = 8f8f8d : 143, 143, 141
# Red = ef2929 : 239, 41, 41
# Orange = c4a000 : 196, 160, 0
# Yellow = fce94f : 252, 233, 79
# Green = 8ae234 : 138, 226, 52
# Cyan = 34e2e2 : 52, 226, 226
# Blue = 3465a4 : 114, 159, 207
# Purple = ad7fa8 : 173, 127, 168
##
[Syntax]
background = 48, 48, 47
text = 238, 238, 236
link = 114, 159, 207
headertext = 114, 159, 207
headertag = 114, 159, 207, 160
emphasis = 196, 160, 0
dialog = 138, 226, 52
altdialog = 252, 233, 79
note = 252, 242, 164
hidden = 143, 143, 141
shortcode = 114, 159, 207
keyword = 239, 41, 41
tag = 173, 127, 168
value = 239, 41, 41
optional = 114, 159, 207
spellcheckline = 239, 41, 41
errorline = 138, 226, 52
replacetag = 52, 226, 226
modifier = 114, 159, 207
texthighlight = 252, 233, 79, 96
-49
View File
@@ -1,49 +0,0 @@
##
# Theme: Tomorrow
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = ffffff : 255, 255, 255
# Current Line = efefef : 239, 239, 239
# Selection = d6d6d6 : 214, 214, 214
# Foreground = 4d4d4c : 77, 77, 76
# Comment = 8e908c : 142, 144, 140
# Red = c82829 : 240, 40, 41
# Orange = f5871f : 245, 135, 31
# Yellow = eab700 : 234, 183, 0
# Green = 718c00 : 113, 140, 0
# Aqua = 3e999f : 62, 153, 159
# Blue = 4271ae : 66, 113, 174
# Purple = 8959a8 : 137, 89, 168
##
[Main]
name = Tomorrow
author = Veronica Berglyd Olsen (adaptation)
credit = Chris Kempson (color theme)
url = https://github.com/chriskempson/tomorrow-theme
license = MIT License
licenseurl = https://github.com/chriskempson/tomorrow-theme/blob/master/LICENSE.md
[Syntax]
background = 255, 255, 255
text = 77, 77, 76
link = 66, 113, 174
headertext = 66, 113, 174
headertag = 66, 113, 174, 160
emphasis = 245, 135, 31
dialog = 113, 140, 0
altdialog = 234, 183, 0
note = 115, 90, 0
hidden = 142, 144, 140
shortcode = 66, 113, 174
keyword = 240, 40, 41
tag = 137, 89, 168
value = 234, 183, 0
optional = 66, 113, 174
spellcheckline = 240, 40, 41
errorline = 113, 140, 0
replacetag = 62, 153, 159
modifier = 245, 135, 31
texthighlight = 234, 183, 0, 96
@@ -1,49 +0,0 @@
##
# Theme: Tomorrow Night
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = 1d1f21 : 29, 31, 33
# Current Line = 282a2e : 40, 42, 46
# Selection = 373b41 : 55, 59. 65
# Foreground = c5c8c6 : 197, 200, 198
# Comment = 969896 : 150, 152, 150
# Red = cc6666 : 204, 102, 102
# Orange = de935f : 222, 147, 95
# Yellow = f0c674 : 240, 198, 116
# Green = b5bd68 : 181, 189, 104
# Aqua = 8abeb7 : 138, 190, 183
# Blue = 81a2be : 129, 162, 190
# Purple = b294bb : 178, 148, 187
##
[Main]
name = Tomorrow Night
author = Veronica Berglyd Olsen (adaptation)
credit = Chris Kempson (color theme)
url = https://github.com/chriskempson/tomorrow-theme
license = MIT License
licenseurl = https://github.com/chriskempson/tomorrow-theme/blob/master/LICENSE.md
[Syntax]
background = 29, 31, 33
text = 197, 200, 198
link = 197, 200, 198, 160
headertext = 129, 162, 190
headertag = 94, 119, 139
emphasis = 222, 147, 95
dialog = 181, 189, 104
altdialog = 240, 198, 116
note = 240, 219, 178
hidden = 150, 152, 150
shortcode = 129, 162, 190
keyword = 204, 102, 102
tag = 178, 148, 187
value = 240, 198, 116
optional = 129, 162, 190
spellcheckline = 204, 102, 102
errorline = 181, 189, 104
replacetag = 138, 190, 183
modifier = 222, 147, 95
texthighlight = 240, 198, 116, 96
@@ -1,49 +0,0 @@
##
# Theme: Tomorrow Night Blue
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = 002451 : 0, 36, 81
# Current Line = 00346e : 0, 52, 110
# Selection = 003f8e : 0, 63, 142
# Foreground = ffffff : 255, 255, 255
# Comment = 7285b7 : 114, 133, 183
# Red = ff9da4 : 255, 157, 164
# Orange = ffc58f : 255, 197, 143
# Yellow = ffeead : 255, 238, 173
# Green = d1f1a9 : 209, 241, 169
# Aqua = 99ffff : 153, 255, 255
# Blue = bbdaff : 187, 218, 255
# Purple = ebbbff : 235, 187, 255
##
[Main]
name = Tomorrow Night Blue
author = Veronica Berglyd Olsen (adaptation)
credit = Chris Kempson (color theme)
url = https://github.com/chriskempson/tomorrow-theme
license = MIT License
licenseurl = https://github.com/chriskempson/tomorrow-theme/blob/master/LICENSE.md
[Syntax]
background = 0, 36, 81
text = 255, 255, 255
link = 187, 218, 255
headertext = 187, 218, 255
headertag = 187, 218, 255, 160
emphasis = 255, 197, 143
dialog = 209, 241, 169
altdialog = 255, 238, 173
note = 255, 247, 214
hidden = 114, 133, 183
shortcode = 187, 218, 255
keyword = 255, 157, 164
tag = 235, 187, 255
value = 255, 238, 173
optional = 187, 218, 255
spellcheckline = 255, 157, 164
errorline = 209, 241, 169
replacetag = 153, 255, 255
modifier = 255, 197, 143
texthighlight = 255, 238, 173, 96
@@ -1,49 +0,0 @@
##
# Theme: Tomorrow Night Bright
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = 000000 : 0, 0, 0
# Current Line = 2a2a2a : 42, 42, 42
# Selection = 424242 : 66, 66, 66
# Foreground = eaeaea : 234, 234, 234
# Comment = 969896 : 150, 152, 150
# Red = d54e53 : 213, 78, 83
# Orange = e78c45 : 231, 140, 69
# Yellow = e7c547 : 231, 197, 71
# Green = b9ca4a : 185, 202, 74
# Aqua = 70c0b1 : 112, 192, 177
# Blue = 7aa6da : 122, 166, 218
# Purple = c397d8 : 195, 151, 216
##
[Main]
name = Tomorrow Night Bright
author = Veronica Berglyd Olsen (adaptation)
credit = Chris Kempson (color theme)
url = https://github.com/chriskempson/tomorrow-theme
license = MIT License
licenseurl = https://github.com/chriskempson/tomorrow-theme/blob/master/LICENSE.md
[Syntax]
background = 0, 0, 0
text = 234, 234, 234
link = 122, 166, 218
headertext = 122, 166, 218
headertag = 122, 166, 218, 160
emphasis = 231, 140, 69
dialog = 185, 202, 74
altdialog = 231, 197, 71
note = 231, 214, 150
hidden = 150, 152, 150
shortcode = 122, 166, 218
keyword = 213, 78, 83
tag = 195, 151, 216
value = 231, 197, 71
optional = 122, 166, 218
spellcheckline = 213, 78, 83
errorline = 185, 202, 74
replacetag = 112, 192, 177
modifier = 231, 140, 69
texthighlight = 231, 197, 71, 128
@@ -1,49 +0,0 @@
##
# Theme: Tomorrow Night Eighties
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = 2d2d2d : 45, 45, 45
# Current Line = 393939 : 57, 57, 57
# Selection = 515151 : 81, 81, 81
# Foreground = cccccc : 204, 204, 204
# Comment = 999999 : 153, 153, 153
# Red = f2777a : 242, 119, 122
# Orange = f99157 : 249, 145, 57
# Yellow = ffcc66 : 255, 204, 102
# Green = 99cc99 : 153, 204, 153
# Aqua = 66cccc : 102, 204, 204
# Blue = 6699cc : 102, 153, 204
# Purple = cc99cc : 204, 153, 204
##
[Main]
name = Tomorrow Night Eighties
author = Veronica Berglyd Olsen (adaptation)
credit = Chris Kempson (color theme)
url = https://github.com/chriskempson/tomorrow-theme
license = MIT License
licenseurl = https://github.com/chriskempson/tomorrow-theme/blob/master/LICENSE.md
[Syntax]
background = 45, 45, 45
text = 204, 204, 204
link = 102, 153, 204
headertext = 102, 153, 204
headertag = 102, 153, 204, 160
emphasis = 249, 145, 57
dialog = 153, 204, 153
altdialog = 255, 204, 102
note = 255, 230, 179
hidden = 153, 153, 153
shortcode = 102, 153, 204
keyword = 242, 119, 122
tag = 204, 153, 204
value = 255, 204, 102
optional = 102, 153, 204
spellcheckline = 242, 119, 122
errorline = 153, 204, 153
replacetag = 102, 204, 204
modifier = 249, 145, 57
texthighlight = 255, 204, 102, 96
+26 -8
View File
@@ -67,20 +67,38 @@ more contributions are listed on the project's Members page.</p>
<li><b>PyEnchant</b> by Dimitri Merejkowsky</li>
</ul>
<h3>Assets</h3>
<h3>Icon Themes</h3>
<p>Some of the assets bundled with novelWriter were adapted from the following sources:</p>
<p>The following icon themes are bundles with novelWriter:</p>
<ul>
<li><b>Material Symbols</b> icons by Google Inc (Apache 2.0)</li>
<li><b>Remix</b> icons by RemixIcon (Apache 2.0)</li>
<li><b>Font Awesome</b> icons by Fonticons Inc (CC BY 4.0)</li>
<li><b>Tomorrow</b> syntax themes by Chris Kempson (MIT License)</li>
<li><b>Owl</b> syntax themes by Sarah Drasner (MIT License)</li>
<li><b>Solarized</b> themes by Ethan Schoonover (MIT License)</li>
<li><b>Cyberpunk Night</b> theme by Anders Lemvigh (CC BY-SA 4.0)</li>
<li><b>Dracula</b> theme by Zeno Rocha (MIT License)</li>
<li><b>Snazzy Light</b> theme by Florian Reuschel (MIT License)</li>
</ul>
<h3>Colour Themes</h3>
<p>Some colour themes included with novelWriter were adapted from the following sources:</p>
<ul>
<li><b>Dracula</b> theme by Zeno Rocha</li>
<li><b>Espresso</b> theme by Sainnhe Park and Antoine Cotten</li>
<li><b>Noctis</b> themes by Liviu Schera, and contributors</li>
<li><b>Owl</b> themes by Sarah Drasner</li>
<li><b>Primer</b> themes by GitHub Inc and Myian</li>
<li><b>Snazzy Light</b> theme by Florian Reuschel</li>
<li><b>Solarized</b> themes by Ethan Schoonover</li>
<li><b>Tango</b> themes by the Tango Desktop Project</li>
<li><b>Tomorrow</b> themes by Chris Kempson</li>
</ul>
<p>Other themes were created for novelWriter:</p>
<ul>
<li><b>Blue Streak</b> themes by Veronica Berglyd Olsen</li>
<li><b>Cyberpunk Night</b> theme by Anders Lemvigh</li>
<li><b>LCARS</b> theme by Veronica Berglyd Olsen</li>
</ul>
<h3>Fonts</h3>
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = Aura
mode = dark
description = Aura
author = Myian
credit = Dalton Menezes
url = https://github.com/daltonmenezes/aura-theme
[Base]
base = #15141b
default = #edecee
faded = #888888
red = #ff6767
orange = #ff9341
yellow = #ffca85
green = #8ae986
cyan = #61ffca
blue = #82e2ff
purple = #a277ff
[Project]
root = default
folder = red
file = default
title = cyan
chapter = purple
scene = #f694ff
note = yellow
active = cyan
inactive = red
disabled = faded
[Palette]
window = #0c0c11
windowtext = default
base = base
alternatebase = #353249
text = default
tooltipbase = yellow
tooltiptext = base
button = base:L125
buttontext = default
brighttext = base
highlight = #603bb1
highlightedtext = default
link = blue
linkvisited = blue
accent = #603bb1
[GUI]
helptext = faded:L125
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #29263c
link = blue
headertext = cyan
headertag = cyan:128
emphasis = purple:L110
dialog = cyan
altdialog = blue
note = yellow
hidden = faded
shortcode = yellow
keyword = #f694ff
tag = yellow
value = faded
optional = faded
spellcheckline = red
errorline = blue
replacetag = yellow
modifier = red
texthighlight = #3c3958
@@ -0,0 +1,74 @@
[Main]
name = Aura (Bright)
mode = light
description = Aura
author = Myian
[Base]
base = #f0e9f0
default = #45425a
faded = #777777
red = #ce4e4e
orange = #bd6b23
yellow = #a97a20
green = #378c1d
cyan = #098d82
blue = #3371c2
purple = #7752ce
[Project]
root = default
folder = red
file = default
title = cyan
chapter = purple
scene = #c540cc
note = #c49134
active = cyan
inactive = red
disabled = faded
[Palette]
window = #e1dae2
windowtext = default
base = base
alternatebase = #cec9d3
text = default
tooltipbase = #ffecad
tooltiptext = default
button = base
buttontext = default
brighttext = base
highlight = purple
highlightedtext = base
link = blue
linkvisited = blue
accent = purple
[GUI]
helptext = faded:D125
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #e1dae2
link = blue
headertext = cyan
headertag = cyan:128
emphasis = purple
dialog = cyan:D105
altdialog = blue
note = yellow
hidden = faded
shortcode = yellow
keyword = #c540cc
tag = yellow
value = faded
optional = faded
spellcheckline = red
errorline = blue
replacetag = yellow
modifier = red
texthighlight = #c5bfca
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = Aura (Soft)
mode = dark
description = Aura
author = Myian
credit = Dalton Menezes
url = https://github.com/daltonmenezes/aura-theme
[Base]
base = #15141b
default = #bdbdbd
faded = #6d6d6d
red = #c55858
orange = #e0925d
yellow = #d8af79
green = #6fb16d
cyan = #54c59f
blue = #6cb2c7
purple = #8464c6
[Project]
root = default
folder = red
file = default
title = cyan
chapter = purple
scene = #f694ff
note = yellow
active = cyan
inactive = red
disabled = faded
[Palette]
window = #0c0c11
windowtext = default
base = base
alternatebase = #353249
text = default
tooltipbase = yellow
tooltiptext = base
button = base:L125
buttontext = default
brighttext = base
highlight = #6a4da3
highlightedtext = #edecee
link = blue
linkvisited = blue
accent = #6a4da3
[GUI]
helptext = faded:L125
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #29263c
link = blue
headertext = cyan
headertag = cyan:128
emphasis = purple:L110
dialog = cyan
altdialog = blue
note = yellow
hidden = faded
shortcode = yellow
keyword = #c17ac8
tag = yellow
value = faded
optional = faded
spellcheckline = #ff6767
errorline = #82e2ff
replacetag = yellow
modifier = red
texthighlight = #3c3958
@@ -0,0 +1,76 @@
[Main]
name = B2T Garden Dark
mode = dark
description = Garden Dark
author = Myian
credit = Bram de Haan
url = https://base2t.one/demo/garden/
[Base]
base = #2b2c2a
default = #ece5df
faded = #828782
red = #df6547
orange = #db9257
yellow = #e9e98e
green = #90d98c
cyan = #81c5de
blue = #9596ea
purple = #da72b2
[Project]
root = default
folder = orange
file = #1c8217
title = default
chapter = #90d98c
scene = #4cb946
note = faded
active = green
inactive = orange
disabled = #696d69
[Palette]
window = #1e1f1e
windowtext = default
base = base
alternatebase = #505350
text = default
tooltipbase = #e0cab8
tooltiptext = base
button = base
buttontext = default
brighttext = base
highlight = #1c8217
highlightedtext = default
link = green
linkvisited = green
accent = #bd5d0f
[GUI]
helptext = #aab1aa
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #3e403d
link = blue
headertext = #fbfaf8
headertag = #828782
emphasis = #3fac39
dialog = #90d98c
altdialog = #4cb946
note = #dd843c
hidden = faded
shortcode = #dd843c
keyword = #dd843c
tag = #dba070
value = #dba070
optional = faded
spellcheckline = #ff6f65
errorline = green
replacetag = #dd843c
modifier = faded
texthighlight = green:80
@@ -0,0 +1,76 @@
[Main]
name = B2T Garden Light
mode = light
description = Garden Light
author = Myian
credit = Bram de Haan
url = https://base2t.one/demo/garden/
[Base]
base = #fbfaf8
default = #505350
faded = #969c96
red = #df6547
orange = #db9257
yellow = #cccc58
green = #3fac39
cyan = #5dacc9
blue = #7678d4
purple = #d362a8
[Project]
root = default
folder = orange
file = #6bcc66
title = default
chapter = #1c8217
scene = #3fac39
note = faded
active = green
inactive = orange
disabled = #aab1aa
[Palette]
window = #ece5df
windowtext = default
base = base
alternatebase = #dbd0c7
text = default
tooltipbase = #dcf0db
tooltiptext = default
button = base
buttontext = default
brighttext = base
highlight = #4cb946
highlightedtext = base
link = #1c8217
linkvisited = #1c8217
accent = #bd5d0f
[GUI]
helptext = #696d69
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #f0ebe6
link = blue
headertext = #2b2c2a
headertag = #828782
emphasis = #4cb946
dialog = #1c8217
altdialog = #3fac39
note = #d97726
hidden = faded
shortcode = #d97726
keyword = #d97726
tag = #bd5d0f
value = #bd5d0f
optional = faded
spellcheckline = red
errorline = green
replacetag = #d97726
modifier = faded
texthighlight = green:80
@@ -0,0 +1,76 @@
[Main]
name = B2T Suburb Dark
mode = dark
description = Suburb Dark
author = Myian
credit = Bram de Haan
url = https://base2t.one/demo/suburb/
[Base]
base = #25293d
default = #d7dbf3
faded = #888eaf
red = #fb6fa9
orange = #ff9b7d
yellow = #ffdf8f
green = #8bd59d
cyan = #76cde3
blue = #8696fd
purple = #de95ee
[Project]
root = default
folder = faded
file = #b0a6aa
title = #d14781
chapter = #f764a1
scene = #ff99c3
note = #8696fd
active = red
inactive = faded
disabled = #575c79
[Palette]
window = #1e212f
windowtext = default
base = base
alternatebase = #444864
text = default
tooltipbase = #d2d8fe
tooltiptext = base
button = base
buttontext = default
brighttext = base
highlight = red
highlightedtext = #1e202f
link = blue
linkvisited = blue
accent = red
[GUI]
helptext = #9b9fb6
fadedtext = faded
errortext = red
[Syntax]
background = base
text = #b1b7d9
line = #373a51
link = blue
headertext = red
headertag = red:128
emphasis = #ffffff
dialog = #fe81b5
altdialog = #ffb3d2
note = #a0acfe
hidden = blue
shortcode = #6375ee
keyword = faded
tag = #a0acfe
value = default
optional = faded
spellcheckline = #ff3b3b
errorline = #7083ff
replacetag = blue
modifier = faded
texthighlight = red:72
@@ -0,0 +1,76 @@
[Main]
name = B2T Suburb Light
mode = light
description = Suburb Light
author = Myian
credit = Bram de Haan
url = https://base2t.one/demo/suburb/
[Base]
base = #fbf9fa
default = #444864
faded = #878ba6
red = #d14781
orange = #d38152
yellow = #cac63a
green = #378d60
cyan = #308ab1
blue = #5165e6
purple = #9958be
[Project]
root = default
folder = faded
file = #b0a5a9
title = red
chapter = #f764a1
scene = #ff99c3
note = #8696fd
active = red
inactive = faded
disabled = #b6bad1
[Palette]
window = #e9e5e7
windowtext = default
base = base
alternatebase = #d7cbd0
text = default
tooltipbase = #d2d8fe
tooltiptext = default
button = #fbf9fa
buttontext = default
brighttext = base
highlight = #f764a1
highlightedtext = base
link = blue
linkvisited = blue
accent = #fe81b5
[GUI]
helptext = #65697c
fadedtext = faded
errortext = red
[Syntax]
background = base
text = #6e7396
line = #eae1e5
link = blue
headertext = red
headertag = red:128
emphasis = #1e202f
dialog = red
altdialog = #fb6fa9
note = blue
hidden = blue
shortcode = #8696fd
keyword = faded
tag = blue
value = default
optional = faded
spellcheckline = #ff0000
errorline = cyan
replacetag = blue
modifier = faded
texthighlight = #f25a9944
@@ -0,0 +1,76 @@
[Main]
name = B4T Classic-O Dark
mode = dark
description = Classic-O Dark
author = Myian
credit = Bram de Haan
url = https://atelierbram.github.io/Base4Tone-prism/b4t_classic-o/dark/
[Base]
base = #22272f
default = #d0d5dd
faded = #707F98
red = #f17eaa
orange = #eca277
yellow = #f3cd91
green = #7bd892
cyan = #5ee3d1
blue = #9cc1fc
purple = #d19af4
[Project]
root = default
folder = #649efb
file = default
title = #039582
chapter = #1abba6
scene = #5ee3d1
note = #d19af4
active = default
inactive = faded
disabled = #454f5f
[Palette]
window = #191d23
windowtext = default
base = base
alternatebase = #333b47
text = default
tooltipbase = yellow
tooltiptext = base
button = #22272f
buttontext = default
brighttext = base
highlight = #0c9c89
highlightedtext = base
link = blue
linkvisited = blue
accent = #0c9c89
[GUI]
helptext = default:192
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #333b47
link = blue
headertext = cyan
headertag = cyan:128
emphasis = #5fe2d1
dialog = #87B4FC
altdialog = #5A96F6
note = #d19af4
hidden = faded
shortcode = #18ae9a
keyword = #877af0
tag = #a095f3
value = faded
optional = faded
spellcheckline = #ff688d
errorline = #5fe2d1
replacetag = blue
modifier = #ba6cea
texthighlight = cyan:56
@@ -0,0 +1,76 @@
[Main]
name = B4T Classic-O Light
mode = light
description = Classic-O Light
author = Myian
credit = Bram de Haan
url = https://atelierbram.github.io/Base4Tone-prism/b4t_classic-o/light/
[Base]
base = #f6f7f9
default = #333b47
faded = #718098
red = #c03b6e
orange = #c46d26
yellow = #bb8e46
green = #3d9e29
cyan = #039582
blue = #4187f5
purple = #aa52e0
[Project]
root = default
folder = #5996F6
file = faded
title = #007061
chapter = #039582
scene = #1abba6
note = #c17eed
active = default
inactive = faded
disabled = #acb5c3
[Palette]
window = #e7eaee
windowtext = default
base = base
alternatebase = #d0d5dd
text = default
tooltipbase = #ffe8c4
tooltiptext = default
button = base
buttontext = default
brighttext = base
highlight = #0c9c89
highlightedtext = base
link = blue
linkvisited = blue
accent = #0c9c89
[GUI]
helptext = default:192
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #dcdfe4
link = blue
headertext = cyan
headertag = cyan:128
emphasis = #008976
dialog = #1a68e5
altdialog = #1249a0
note = purple
hidden = faded
shortcode = #17a592
keyword = #9488F2
tag = #6555e0
value = faded
optional = faded
spellcheckline = #ff2259
errorline = blue
replacetag = blue
modifier = #c17eed
texthighlight = cyan:64
@@ -0,0 +1,76 @@
[Main]
name = B4T Modern-C Dark
mode = dark
description = Modern-C Dark
author = Myian
credit = Bram de Haan
url = https://atelierbram.github.io/Base4Tone-prism/b4t_modern-c/dark/
[Base]
base = #25262c
default = #e7e7ed
faded = #9b9daa
red = #f17eaa
orange = #ffa978
yellow = #f3cd91
green = #46db6c
cyan = #5fe2d1
blue = #8393f6
purple = #d292f7
[Project]
root = default
folder = blue
file = #fad6e4
title = #e64d87
chapter = #eb75a2
scene = #f5a3c2
note = #18ae9a
active = default
inactive = faded
disabled = #5d5f6f
[Palette]
window = #1b1c20
windowtext = default
base = base
alternatebase = #40424e
text = default
tooltipbase = yellow
tooltiptext = base
button = #2e2f37
buttontext = default
brighttext = base
highlight = yellow
highlightedtext = base
link = blue
linkvisited = blue
accent = yellow
[GUI]
helptext = default:192
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #373943
link = blue
headertext = red
headertag = red:128
emphasis = #f391b6
dialog = yellow
altdialog = #9fabf8
note = #929ff7
hidden = faded
shortcode = cyan
keyword = #18ae9a
tag = #93ece0
value = #c5cdfb
optional = faded
spellcheckline = #e64d87
errorline = blue
replacetag = blue
modifier = #6f81f0
texthighlight = blue:72
@@ -0,0 +1,76 @@
[Main]
name = B4T Modern-C Light
mode = light
description = Modern-C Light
author = Myian
credit = Bram de Haan
url = https://atelierbram.github.io/Base4Tone-prism/b4t_modern-c/light/
[Base]
base = #f6f6f9
default = #4a4c59
faded = #848699
red = #d22d6c
orange = #d55c0b
yellow = #d5880b
green = #269b43
cyan = #17a592
blue = #5b6feb
purple = #8e4fb3
[Project]
root = default
folder = blue
file = #eb75a2
title = #931f4c
chapter = #d22d6c
scene = #e64d87
note = #18ae9a
active = default
inactive = faded
disabled = #BBBDC9
[Palette]
window = #e7e7ed
windowtext = default
base = base
alternatebase = #d1d2dc
text = default
tooltipbase = #f9e6c8
tooltiptext = default
button = #ffffff
buttontext = default
brighttext = base
highlight = yellow
highlightedtext = base
link = blue
linkvisited = blue
accent = yellow
[GUI]
helptext = default:192
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #e7e7ed
link = blue
headertext = red
headertag = red:128
emphasis = #d53874
dialog = #9f6303
altdialog = #354ddd
note = blue
hidden = faded
shortcode = cyan
keyword = #007a6a
tag = #18ae9a
value = #8493F6
optional = faded
spellcheckline = red
errorline = blue
replacetag = blue
modifier = #354ddd
texthighlight = blue:64
@@ -0,0 +1,76 @@
[Main]
name = Blue Streak Dark
mode = dark
description = A theme mainly using shades of blue
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
[Base]
base = #2d2d2d
default = #cccccc
faded = #999999
red = #ff6666
orange = #ff9966
yellow = #ffcc66
green = #99cc99
cyan = #66cccc
blue = #6699cc
purple = #cc99cc
[Project]
root = blue
folder = default
file = default
title = blue:D150
chapter = blue
scene = blue:L150
note = yellow
active = blue:L150
inactive = blue:D150
disabled = faded
[Palette]
window = base:L125
windowtext = default
base = base
alternatebase = base:L150
text = default
tooltipbase = yellow:L140
tooltiptext = base:D150
button = base
buttontext = default
brighttext = base
highlight = blue
highlightedtext = default:L120
link = blue
linkvisited = blue
accent = blue
[GUI]
helptext = blue:L125
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = blue:48
link = blue
headertext = blue
headertag = blue:D150
emphasis = blue:L150
dialog = blue
altdialog = blue:L150
note = blue:L150
hidden = faded
shortcode = blue:D125
keyword = blue:D125
tag = blue
value = blue
optional = blue
spellcheckline = red
errorline = green
replacetag = blue:L150
modifier = blue:D125
texthighlight = blue:96
@@ -0,0 +1,76 @@
[Main]
name = Blue Streak Light
mode = light
description = A theme mainly using shades of blue
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
[Base]
base = #fcfcfc
default = #303030
faded = #6c6c6c
red = #cc3939
orange = #cc7239
yellow = #cca339
green = #72a372
cyan = #39a3a3
blue = #3972a3
purple = #a372a3
[Project]
root = blue
folder = faded
file = faded
title = blue:D150
chapter = blue
scene = blue:L125
note = yellow
active = blue:L115
inactive = blue:D150
disabled = faded
[Palette]
window = base:D105
windowtext = default
base = base
alternatebase = base:D110
text = default
tooltipbase = yellow:L150
tooltiptext = default:D150
button = base
buttontext = default
brighttext = base
highlight = blue:L110
highlightedtext = base
link = blue
linkvisited = blue
accent = blue
[GUI]
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = blue:32
link = blue
headertext = blue
headertag = blue:D150
emphasis = blue:L125
dialog = blue
altdialog = blue:L125
note = blue:L125
hidden = faded
shortcode = blue:D125
keyword = blue:D125
tag = blue
value = blue
optional = blue
spellcheckline = red
errorline = green
replacetag = blue:L125
modifier = blue:D125
texthighlight = blue:96
+74
View File
@@ -0,0 +1,74 @@
[Main]
name = Castle by Day
mode = light
description = Castle Day
author = Myian
[Base]
base = #f3eeec
default = #443d38
faded = #8b827b
red = #c95e5e
orange = #d47643
yellow = #b68730
green = #4e8b30
cyan = #539c9c
blue = #687fca
purple = #b261b4
[Project]
root = default
folder = blue
file = red
title = green
chapter = yellow
scene = orange
note = #9c9188
active = default
inactive = faded
disabled = #b4aca5
[Palette]
window = base:D110
windowtext = default
base = base
alternatebase = base:D115
text = default
tooltipbase = yellow:L230
tooltiptext = default
button = base
buttontext = default
brighttext = base
highlight = #cf7c6d
highlightedtext = base:L110
link = #5068b6
linkvisited = #5068b6
accent = red:192
[GUI]
helptext = default:L180
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = base:D110
link = blue
headertext = yellow
headertag = yellow:160
emphasis = #aa791e
dialog = green:D110
altdialog = #378b8b
note = faded
hidden = faded
shortcode = faded
keyword = #ca4b4b
tag = orange
value = purple
optional = #dd8c60
spellcheckline = #e94444
errorline = #378b8b
replacetag = blue
modifier = #963399
texthighlight = red:80
@@ -0,0 +1,74 @@
[Main]
name = Castle by Night
mode = dark
description = Castle Night
author = Myian
[Base]
base = #1c1f28
default = #d6d6d6
faded = #878a91
red = #fa8080
orange = #ee9c70
yellow = #fadd8d
green = #afd49d
cyan = #a4dad7
blue = #9cb2ec
purple = #d296d4
[Project]
root = default
folder = blue
file = red
title = green
chapter = yellow
scene = orange
note = #9b9ea5
active = default
inactive = faded
disabled = #4b4f5c
[Palette]
window = base:D130
windowtext = default
base = base
alternatebase = base:L160
text = default
tooltipbase = yellow:L120
tooltiptext = base
button = base:L110
buttontext = default
brighttext = base
highlight = red:D150
highlightedtext = default:L110
link = blue
linkvisited = blue
accent = red:D150
[GUI]
helptext = faded
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = base:L150
link = blue
headertext = yellow
headertag = yellow:160
emphasis = yellow
dialog = green
altdialog = cyan
note = faded
hidden = faded
shortcode = faded
keyword = red
tag = orange
value = #e4b2e6
optional = orange:L120
spellcheckline = #ff5d5d
errorline = cyan
replacetag = blue
modifier = purple
texthighlight = red:72
@@ -0,0 +1,74 @@
[Main]
name = Chalky Soil
mode = light
description = Chalky
author = Myian
[Base]
base = #f0f0f0
default = #494949
faded = #8a8a8a
red = #c45e6c
orange = #c9700b
yellow = #c09227
green = #5f8f5a
cyan = #3f9b96
blue = #417db6
purple = #975ea8
[Project]
root = default
folder = green
file = faded:D105
title = red
chapter = orange
scene = yellow
note = #6293c2
active = green
inactive = faded
disabled = faded:L135
[Palette]
window = base:D108
windowtext = default
base = base
alternatebase = base:D115
text = default
tooltipbase = #f1dcab
tooltiptext = default
button = base:D110
buttontext = default
brighttext = base
highlight = green
highlightedtext = base
link = blue
linkvisited = blue
accent = green
[GUI]
helptext = default:L140
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = faded:48
link = blue
headertext = red
headertag = red:128
emphasis = #488843
dialog = #b95a00
altdialog = yellow
note = faded
hidden = faded
shortcode = #967044
keyword = blue
tag = #276096
value = #276096
optional = faded
spellcheckline = #f0344d
errorline = cyan
replacetag = purple
modifier = blue
texthighlight = green:80
+74
View File
@@ -0,0 +1,74 @@
[Main]
name = Chernozem
mode = dark
description = Chernozem
author = Myian
[Base]
base = #2c2525
default = #dad0ca
faded = #857972
red = #e06c6c
orange = #ec935f
yellow = #e5cc91
green = #6e9e6a
cyan = #72b69f
blue = #7c9fbd
purple = #c899d6
[Project]
root = default
folder = green
file = default
title = red
chapter = orange
scene = yellow
note = blue
active = green
inactive = faded
disabled = #504742
[Palette]
window = #241d1d
windowtext = default
base = base
alternatebase = faded:80
text = default
tooltipbase = yellow
tooltiptext = base
button = #362c2b
buttontext = default
brighttext = base
highlight = #5a8d55
highlightedtext = #241d1d
link = blue
linkvisited = blue
accent = #5a8d55
[GUI]
helptext = #a39891
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = faded:48
link = blue
headertext = red
headertag = red:128
emphasis = #85c47f
dialog = orange
altdialog = yellow
note = faded
hidden = faded
shortcode = #af8973
keyword = blue
tag = #a1c4e4
value = #a1c4e4
optional = faded
spellcheckline = #ff5555
errorline = cyan
replacetag = purple
modifier = blue
texthighlight = green:80
+63 -36
View File
@@ -1,48 +1,75 @@
[Main]
name = Cyberpunk Night
mode = dark
description = A taste of the future 80s
author = Anders Lemvigh
url = https://github.com/alemvigh
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Icons]
default = 136, 136, 136
faded = 97, 97, 97
red = 242, 72, 23
orange = 255, 150, 10
yellow = 255, 255, 0
green = 0, 255, 0
aqua = 0, 255, 255
blue = 77, 77, 255
purple = 50, 0, 180
[Base]
base = #000000
default = #888888
faded = #616161
red = #f24817
orange = #ff960a
yellow = #ffff00
green = #00ff00
cyan = #00ffff
blue = #4d4dff
purple = #320064
[Project]
root = 77, 77, 255
folder = 255, 255, 0
file = 136, 136, 136
title = 0, 255, 0
chapter = 242, 72, 23
scene = 77, 77, 255
note = 255, 255, 0
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 0, 0, 0
windowtext = 150, 150, 150
base = 0, 0, 0
alternatebase = 40, 40, 40
text = 150, 150, 150
tooltipbase = 40, 20, 70
tooltiptext = 255, 255, 255
button = 5, 0, 10
buttontext = 150, 150, 150
brighttext = 255, 255, 255
highlight = 50, 30, 80
highlightedtext = 255, 255, 255
link = 77, 77, 255
linkvisited = 50, 0, 80
window = base
windowtext = #969696
base = base
alternatebase = #282828
text = #969696
tooltipbase = #281446
tooltiptext = #ffffff
button = #05000a
buttontext = #969696
brighttext = #ffffff
highlight = #321e50
highlightedtext = #ffffff
link = blue
linkvisited = #320050
accent = #321e50
[GUI]
helptext = 97, 97, 97
fadedtext = 97, 97, 97
errortext = 242, 72, 23
helptext = faded
fadedtext = faded
errortext = red
[Syntax]
background = base
text = #969696
line = #282828
link = blue
headertext = #ffffff
headertag = purple
emphasis = cyan
dialog = green
altdialog = #008cff
note = #969696
hidden = #4d4d64
shortcode = yellow
keyword = #ff64ff
tag = orange
value = orange
spellcheckline = red
errorline = #bada04
replacetag = #0000b4
modifier = #908eb0
optional = #b4b4b4
texthighlight = #ffff8460
-3
View File
@@ -1,3 +0,0 @@
[Main]
name = Qt Default Theme
description = Qt standard colours
+63 -36
View File
@@ -1,49 +1,76 @@
[Main]
name = Default Dark Theme
mode = dark
description = The novelWriter standard dark theme
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Icons]
default = 184, 184, 184
faded = 148, 148, 148
red = 242, 119, 122
orange = 249, 145, 57
yellow = 255, 204, 102
green = 153, 204, 153
aqua = 102, 204, 204
blue = 102, 153, 204
purple = 204, 153, 204
[Base]
base = #373737
default = #cccccc
faded = #949494
red = #ff6666
orange = #ff9966
yellow = #ffcc66
green = #99cc99
cyan = #66cccc
blue = #6699cc
purple = #cc99cc
[Project]
root = 102, 153, 204
folder = 255, 204, 102
file = 184, 184, 184
title = 153, 204, 153
chapter = 242, 119, 122
scene = 102, 153, 204
note = 255, 204, 102
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 54, 54, 54
windowtext = 204, 204, 204
base = 62, 62, 62
alternatebase = 78, 78, 78
text = 204, 204, 204
tooltipbase = 255, 255, 192
tooltiptext = 21, 21, 13
button = 62, 62, 62
buttontext = 204, 204, 204
brighttext = 62, 62, 62
highlight = 44, 152, 247
highlightedtext = 255, 255, 255
link = 102, 153, 204
linkvisited = 102, 153, 204
window = base:L125
windowtext = default
base = base
alternatebase = #4e4e4e
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #2c98f7
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #2c98f7
[GUI]
helptext = 164, 164, 164
fadedtext = 148, 148, 148
errortext = 255, 164, 164
helptext = #a4a4a4
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = green
headertag = green:D150
emphasis = orange
dialog = blue
altdialog = red
note = yellow
hidden = faded
shortcode = green
keyword = red
tag = green
value = green
optional = green
spellcheckline = red
errorline = green
replacetag = green
modifier = blue
texthighlight = yellow:72
+63 -36
View File
@@ -1,49 +1,76 @@
[Main]
name = Default Light Theme
mode = light
description = The novelWriter standard light theme
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
license = CC BY-SA 4.0
licenseurl = https://creativecommons.org/licenses/by-sa/4.0/
[Icons]
default = 72, 72, 72
faded = 108, 108, 108
red = 240, 40, 41
orange = 245, 135, 31
yellow = 234, 183, 0
green = 113, 140, 0
aqua = 62, 153, 159
blue = 66, 113, 174
purple = 137, 89, 168
[Base]
base = #fcfcfc
default = #303030
faded = #6c6c6c
red = #a62a2d
orange = #b36829
yellow = #a39c34
green = #296629
cyan = #269999
blue = #3a70a6
purple = #b35ab3
[Project]
root = 66, 113, 174
folder = 234, 183, 0
file = 72, 72, 72
title = 113, 140, 0
chapter = 240, 40, 41
scene = 66, 113, 174
note = 234, 183, 0
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 239, 239, 239
windowtext = 0, 0, 0
base = 255, 255, 255
alternatebase = 224, 224, 224
text = 0, 0, 0
tooltipbase = 255, 255, 220
tooltiptext = 0, 0, 0
button = 239, 239, 239
buttontext = 0, 0, 0
brighttext = 255, 255, 255
highlight = 48, 135, 198
highlightedtext = 255, 255, 255
link = 66, 113, 174
linkvisited = 66, 113, 174
window = base:D105
windowtext = default
base = base
alternatebase = #e0e0e0
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = #efefef
buttontext = default
brighttext = base
highlight = #3087c6
highlightedtext = base
link = blue
linkvisited = blue
accent = #3087c6
[GUI]
helptext = 92, 92, 92
fadedtext = 108, 108, 108
errortext = 255, 92, 92
helptext = #5c5c5c
fadedtext = #6c6c6c
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = green
headertag = green:L135
emphasis = orange
dialog = blue
altdialog = red
note = yellow:D125
hidden = faded
shortcode = green
keyword = red
tag = green
value = green
optional = green
spellcheckline = red
errorline = green
replacetag = green
modifier = blue
texthighlight = yellow:72
+65 -37
View File
@@ -1,17 +1,17 @@
[Main]
name = Dracula
mode = dark
description = A dark theme with bright colours
author = Veronica Berglyd Olsen (adaptation)
credit = Zeno Rocha
url = https://draculatheme.com
license = MIT
licenseurl = https://github.com/dracula/dracula-theme/blob/main/LICENSE
##
# Colours:
# See: https://spec.draculatheme.com/
# Background = 282a36 : 40, 42, 54
# Foreground = f8f8f2 : 248, 248, 242
# Current Line = 44475A : 68, 71, 90
# Current Line = 44475a : 68, 71, 90
# Comment = 6272a4 : 98, 114, 164
# Cyan = 8be9fd : 139, 233, 253
# Green = 50fa7b : 80, 250, 123
@@ -22,43 +22,71 @@ licenseurl = https://github.com/dracula/dracula-theme/blob/main/LICENSE
# Yellow = f1fa8c : 241, 250, 140
##
[Icons]
default = 230, 230, 224
faded = 98, 114, 164
red = 255, 85, 85
orange = 255, 184, 108
yellow = 241, 250, 140
green = 80, 250, 123
aqua = 139, 233, 253
blue = 147, 207, 249
purple = 189, 147, 249
[Base]
base = #282a36
default = #e6e6e0
faded = #6272a4
red = #ff5555
orange = #ffb86c
yellow = #f1fa8c
green = #50fa7b
cyan = #8be9fd
blue = #93cff9
purple = #bd93f9
[Project]
root = 189, 147, 249
folder = 241, 250, 140
file = 230, 230, 224
title = 80, 250, 123
chapter = 255, 85, 85
scene = 139, 233, 253
note = 241, 250, 140
root = purple
folder = yellow
file = default
title = green
chapter = red
scene = cyan
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 68, 71, 90
windowtext = 248, 248, 242
base = 40, 42, 54
alternatebase = 51, 54, 69
text = 248, 248, 242
tooltipbase = 241, 250, 140
tooltiptext = 40, 42, 54
button = 80, 83, 105
buttontext = 248, 248, 242
brighttext = 68, 71, 90
highlight = 166, 129, 218
highlightedtext = 248, 248, 242
link = 139, 233, 253
linkvisited = 139, 233, 253
window = #44475a
windowtext = #f8f8f2
base = base
alternatebase = #333645
text = #f8f8f2
tooltipbase = yellow
tooltiptext = base
button = #505369
buttontext = #f8f8f2
brighttext = base
highlight = #a681da
highlightedtext = #f8f8f2
link = cyan
linkvisited = cyan
accent = #a681da
[GUI]
helptext = 204, 172, 249
fadedtext = 98, 114, 164
errortext = 255, 85, 85
helptext = #ccacf9
fadedtext = faded
errortext = red
[Syntax]
background = base
text = #f8f8f2
line = base:L150
link = #ff79c6
headertext = purple
headertag = purple:D150
emphasis = orange
dialog = green
altdialog = yellow
note = #ffcce9
hidden = faded
shortcode = cyan
keyword = #ff79c6
tag = orange
value = orange
optional = green
spellcheckline = red
errorline = green
replacetag = yellow
modifier = cyan
texthighlight = yellow:96
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = Espresso
mode = dark
description = High contrast & vivid color scheme based on Monokai Pro
author = Veronica Berglyd Olsen
credit = Sainnhe Park and Antoine Cotten
url = https://github.com/sainnhe/sonokai
[Base]
base = #2f2726
default = #e5e4e2
faded = #96817b
red = #f86882
orange = #f08d71
yellow = #f0c66f
green = #a6cd77
cyan = #81d0c9
blue = #89a8e0
purple = #9fa0e1
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = base:L125
windowtext = default
base = base
alternatebase = #51403c
text = default
tooltipbase = yellow:L125
tooltiptext = base
button = base
buttontext = default
brighttext = base
highlight = #4e5f80
highlightedtext = default
link = blue
linkvisited = blue
accent = blue
[GUI]
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #392e2c
link = blue
headertext = yellow:L125
headertag = faded
emphasis = orange
dialog = yellow
altdialog = orange
note = yellow:L125
hidden = faded
shortcode = green
keyword = red
tag = green
value = orange
optional = yellow
spellcheckline = red
errorline = green
replacetag = cyan
modifier = blue
texthighlight = yellow:108
@@ -0,0 +1,76 @@
[Main]
name = Everforest Dark
mode = dark
description = Everforest
author = Myian
credit = Sainnhe Park
url = https://github.com/sainnhe/everforest
[Base]
base = #272e33
default = #d3c6aa
faded = #859289
red = #e67e80
orange = #e69875
yellow = #dbbc7f
green = #a7c080
cyan = #83c092
blue = #7fbbb3
purple = #d699b6
[Project]
root = default
folder = orange
file = red
title = green
chapter = blue
scene = purple
note = faded
active = cyan
inactive = orange
disabled = faded
[Palette]
window = #1e2326
windowtext = default
base = base
alternatebase = #374145
text = default
tooltipbase = yellow
tooltiptext = base
button = #2e383c
buttontext = default
brighttext = base
highlight = #a7c080
highlightedtext = base
link = blue
linkvisited = blue
accent = #a7c080
[GUI]
helptext = #a9a49d
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #343f44
link = blue
headertext = cyan
headertag = cyan:128
emphasis = blue
dialog = green
altdialog = cyan
note = purple
hidden = faded
shortcode = orange
keyword = orange
tag = purple
value = faded
optional = faded
spellcheckline = red
errorline = cyan
replacetag = purple
modifier = red
texthighlight = cyan:72
@@ -0,0 +1,76 @@
[Main]
name = Everforest Light
mode = light
description = Everforest
author = Myian
credit = Sainnhe Park
url = https://github.com/sainnhe/everforest
[Base]
base = #fffbef
default = #5c6a72
faded = #939f91
red = #f85552
orange = #f57d26
yellow = #dfa000
green = #8da101
cyan = #35a77c
blue = #3a94c5
purple = #df69ba
[Project]
root = default
folder = orange
file = red
title = green
chapter = blue
scene = purple
note = faded
active = cyan
inactive = orange
disabled = faded
[Palette]
window = #f2efdf
windowtext = default
base = base
alternatebase = #e8e5d5
text = default
tooltipbase = #fef2d5
tooltiptext = default
button = #f8f5e4
buttontext = default
brighttext = base
highlight = #93b259
highlightedtext = base
link = blue
linkvisited = blue
accent = #93b259
[GUI]
helptext = #829181
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #edeada
link = blue
headertext = cyan
headertag = cyan:128
emphasis = blue
dialog = green
altdialog = cyan
note = purple
hidden = faded
shortcode = orange
keyword = orange
tag = purple
value = faded
optional = faded
spellcheckline = red
errorline = cyan
replacetag = purple
modifier = red
texthighlight = cyan:64
@@ -0,0 +1,74 @@
[Main]
name = Floral Daydream
mode = light
description = Floral
author = Myian
[Base]
base = #fff4f7
default = #ac3b6f
faded = #c285aa
red = #e76b6d
orange = #e08b46
yellow = #bea224
green = #59976b
cyan = #5d9ea3
blue = #658cc5
purple = #9d77c9
[Project]
root = default
folder = yellow
file = orange
title = blue
chapter = purple
scene = red
note = #6dad7f
active = green
inactive = faded
disabled = #e2bcce
[Palette]
window = #ffe3ea
windowtext = default
base = base
alternatebase = #ffc7d8
text = default
tooltipbase = #fff0ba
tooltiptext = #413309
button = #ffffff
buttontext = default
brighttext = base
highlight = #e4688d
highlightedtext = #ffffff
link = #4781d8
linkvisited = #4781d8
accent = #e4688d
[GUI]
helptext = #d14a73
fadedtext = faded
errortext = red
[Syntax]
background = base
text = #974169
line = #ffdbe4
link = blue
headertext = blue
headertag = blue:128
emphasis = #8152b8
dialog = #eb4073
altdialog = #4781d8
note = #31924c
hidden = faded
shortcode = #31924c
keyword = #1a6d32
tag = #31924c
value = #ce7b1d
optional = faded
spellcheckline = #ff0000
errorline = #1a6d32
replacetag = #31924c
modifier = #1a6d32
texthighlight = #bae2c5
@@ -0,0 +1,74 @@
[Main]
name = Floral Midnight
mode = dark
description = Floral
author = Myian
[Base]
base = #1e1e31
default = #d3cfe7
faded = #948dac
red = #ff7b7d
orange = #ffad6e
yellow = #eedb94
green = #79bd8b
cyan = #8bcac8
blue = #91b7ff
purple = #b78ff0
[Project]
root = default
folder = yellow
file = orange
title = blue
chapter = purple
scene = red
note = green
active = green
inactive = faded
disabled = #55516d
[Palette]
window = base:D130
windowtext = default
base = base
alternatebase = #3e395a
text = default
tooltipbase = yellow
tooltiptext = yellow:D400
button = #1f1d35
buttontext = default
brighttext = base
highlight = #705a94
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #b060c0
[GUI]
helptext = faded
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #3e395a
link = blue
headertext = blue
headertag = blue:128
emphasis = #ff9dd9
dialog = #c29df3
altdialog = blue
note = #65ca80
hidden = faded
shortcode = #65ca80
keyword = #a6fdbd
tag = #65ca80
value = yellow
optional = faded
spellcheckline = #ff4949
errorline = #65ca80
replacetag = #a6fdbd
modifier = #a6fdbd
texthighlight = green:96
+75
View File
@@ -0,0 +1,75 @@
[Main]
name = Full Moon
mode = light
description = New Moon Light
author = Myian
[Base]
base = #ffffff
default = #454c55
faded = #9197a0
red = #d84f52
orange = #db7a34
yellow = #c5931f
green = #479e47
cyan = #219fa3
blue = #3e8acc
purple = #bd70cc
[Project]
root = default
folder = orange
file = green
title = blue
chapter = red
scene = purple
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #eceef1
windowtext = default
base = base
alternatebase = #e2eaf0
text = default
tooltipbase = #ffeea6
tooltiptext = default
button = #ffffff
buttontext = default
brighttext = base
highlight = #549adb
highlightedtext = base
link = blue
linkvisited = blue
accent = #549adb
[GUI]
helptext = faded:D125
fadedtext = faded:L135
errortext = red
[Syntax]
background = base
text = #565c63
line = #eceff5
link = blue
headertext = purple
headertag = purple:128
emphasis = blue
dialog = #2d2d2d
altdialog = orange
note = yellow
hidden = faded
shortcode = cyan
keyword = red
tag = yellow
value = orange
optional = yellow
spellcheckline = #f73c3f
errorline = cyan
replacetag = purple
modifier = green
texthighlight = blue:80
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = Grey Dark
mode = dark
description = A theme with minimal colours
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
[Base]
base = #3e3e3e
default = #c8c8c8
faded = #949494
red = #f2777a
orange = #f99139
yellow = #ffcc66
green = #99cc99
cyan = #66cccc
blue = #6699cc
purple = #cc99cc
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #363636
windowtext = default
base = base
alternatebase = #4e4e4e
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #2c98f7
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #2c98f7
[GUI]
helptext = default:D120
fadedtext = faded
errortext = red
[Syntax]
background = #363636
text = default
line = default:32
link = default
headertext = default:L115
headertag = default:D125
emphasis = default
dialog = default
altdialog = default
note = default
hidden = faded
shortcode = default:L115
keyword = default:L115
tag = default
value = default
optional = default:L115
spellcheckline = red
errorline = green
replacetag = default:L115
modifier = default:L115
texthighlight = #ffffff40
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = Grey Light
mode = light
description = A theme with minimal colours
author = Veronica Berglyd Olsen
credit = Veronica Berglyd Olsen
url = https://github.com/vkbo/novelWriter
[Base]
base = #ffffff
default = #282828
faded = #6c6c6c
red = #a62a2d
orange = #b36829
yellow = #a68542
green = #296629
cyan = #269999
blue = #3a70a6
purple = #b35ab3
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #efefef
windowtext = default
base = base
alternatebase = #e0e0e0
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = #efefef
buttontext = default
brighttext = base
highlight = #3087c6
highlightedtext = base
link = blue
linkvisited = blue
accent = #3087c6
[GUI]
helptext = default:L225
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = default
headertext = default:D200
headertag = default:L400
emphasis = default
dialog = default
altdialog = default
note = default
hidden = faded
shortcode = default:D200
keyword = default:D200
tag = default
value = default
optional = default:D200
spellcheckline = red
errorline = green
replacetag = default:D200
modifier = default:D200
texthighlight = #00000040
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = LCARS
mode = dark
description = The Next Generation of Star Trek colours
author = Veronica Berglyd Olsen
credit = Star Trek TNG
url = https://github.com/vkbo/novelWriter
[Base]
base = #101010
default = #c7c7c7
faded = #757575
red = #e24d5f
orange = #ff9902
yellow = #ffdc59
green = #54e985
cyan = #7ffff2
blue = #009cff
purple = #8aa5ff
[Project]
root = orange
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = blue
inactive = red
disabled = faded
[Palette]
window = base:L180
windowtext = default
base = base
alternatebase = base:L300
text = default
tooltipbase = yellow:L140
tooltiptext = base
button = base:L140
buttontext = default
brighttext = base
highlight = purple
highlightedtext = base
link = purple
linkvisited = purple
accent = orange
[GUI]
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = yellow:48
link = purple
headertext = orange
headertag = red
emphasis = orange
dialog = yellow
altdialog = green
note = purple
hidden = faded
shortcode = purple
keyword = red
tag = orange
value = orange
optional = purple
spellcheckline = red
errorline = red
replacetag = purple
modifier = red
texthighlight = orange:96
+96
View File
@@ -0,0 +1,96 @@
[Main]
name = Light Owl
mode = light
description = A theme for the night owls out there, but for daylight
author = Veronica Berglyd Olsen
credit = Sarah Drasner
url = https://github.com/sdras/night-owl-vscode-theme
##
# Theme: Light Owl
# Source: https://github.com/sdras/night-owl-vscode-theme
# Credit: Sarah Drasner
##
# Colours:
# Background = #fbfbfb
# Current Line = #eaeaea
# Selection = #e0e0e0
# Foreground = #403f52
# Comment = #989fb1
# Red = #de3d3a
# Orange = #e0af05
# Yellow = #daaa01
# Green = #08916a
# Aqua = #2aa298
# Blue = #288ed7
# Purple = #964ac1
##
[Base]
base = #fbfbfb
default = #403f52
faded = #989fb1
red = #de3d3a
orange = #e0af05
yellow = #daaa01
green = #08916a
cyan = #2aa298
blue = #288ed7
purple = #964ac1
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #eaeaea
windowtext = default
base = base
alternatebase = #e0e0e0
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #3087c6
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #3087c6
[GUI]
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = blue
headertag = blue:160
emphasis = orange
dialog = green
altdialog = yellow
note = yellow:D175
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = orange
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = green
texthighlight = yellow:96
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = New Moon
mode = dark
description = New moon
author = Myian
credit = Tania Rascia
url = https://github.com/taniarascia/new-moon
[Base]
base = #2d2d2d
default = #ffffff
faded = #777c85
red = #f2777a
orange = #fca369
yellow = #ffd479
green = #92d192
cyan = #76d4d6
blue = #6ab0f3
purple = #e1a6f2
[Project]
root = default
folder = orange
file = green
title = blue
chapter = red
scene = purple
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #252525
windowtext = default
base = base
alternatebase = #444444
text = default
tooltipbase = #ffeea6
tooltiptext = base
button = #333333
buttontext = default
brighttext = base
highlight = #4386c5
highlightedtext = default
link = blue
linkvisited = blue
accent = #4386c5
[GUI]
helptext = #a4a4a4
fadedtext = #949494
errortext = red
[Syntax]
background = base
text = #bcc2cc
line = #444444
link = blue
headertext = purple
headertag = purple:128
emphasis = blue
dialog = default
altdialog = #ffeea6
note = yellow
hidden = faded
shortcode = cyan
keyword = red
tag = yellow
value = orange
optional = #ffeea6
spellcheckline = #ff6265
errorline = green
replacetag = purple
modifier = green
texthighlight = blue:80
+96
View File
@@ -0,0 +1,96 @@
[Main]
name = Night Owl
mode = dark
description = A theme for the night owls out there
author = Veronica Berglyd Olsen
credit = Sarah Drasner
url = https://github.com/sdras/night-owl-vscode-theme
##
# Theme: Night Owl
# Source: https://github.com/sdras/night-owl-vscode-theme
# Credit: Sarah Drasner
##
# Colours:
# Background = #011627
# Current Line = #434652
# Selection = #32374d
# Foreground = #d6deeb
# Comment = #637777
# Red = #f78c6c
# Orange = #ecc48d
# Yellow = #ffeb95
# Green = #addb67
# Aqua = #7fdbca
# Blue = #82aaff
# Purple = #c792ea
##
[Base]
base = #011627
default = #d6deeb
faded = #637777
red = #f78c6c
orange = #ecc48d
yellow = #ffeb95
green = #addb67
cyan = #7fdbca
blue = #82aaff
purple = #c792ea
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = base:L140
windowtext = default
base = base
alternatebase = #32374d
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #2c98f7
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #2c98f7
[GUI]
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = default:48
link = blue
headertext = blue
headertag = blue:160
emphasis = orange
dialog = green
altdialog = yellow
note = yellow:L115
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = orange
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = green
texthighlight = yellow:96
+108
View File
@@ -0,0 +1,108 @@
[Main]
name = Noctis
mode = dark
description = A dark theme with a well balanced blend of warm and cold medium contrast colors
author = Veronica Berglyd Olsen
credit = Liviu Schera, and contributors
url = https://github.com/liviuschera/noctis
##
# Noctis Lux : themes/noctis.json
##
# colors
# selection.background : #107684 -> Palette.highlight
# sideBar.background : #041d20 -> Palette.window
# editor.background : #052529 -> Base.base
# editor.foreground : #b2cacd -> Base.default
# editor.selectionBackground : #169fb144 -> Syntax.line, Syntax.texthighlight
# textLink.foreground : #40d4e7 -> Palette.link, Syntax.link
# input.background : #052529 -> Palette.button
# input.foreground : #cdd3de -> Palette.buttontext
# notifications.foreground : #cdd3de -> Palette.tooltiptext
# notifications.background : #073940 -> Palette.tooltipbase
##
# tokenColors
# COMMENT : #5b858b -> Base.faded
# TEXT : #b2cacd -> Syntax.text, Syntax.optional
# KEYWORD : #df769b -> Base.red
# VARIABLE : #e4b781 -> Palette.accent
# ANNOTATION : #d67e5c -> Syntax.note, Syntax.emphasis
# CONSTANT : #d5971a -> Base.yellow
# TAG : #e66533 -> Base.orange
# STRING : #49e9a6 -> Syntax.headertext, Palette.accent
# STRINGINTERPOLATED : #16b673 -> Base.green
# NUMBER : #7060eb -> Base.purple
# FUNCTION : #16a3b6 -> Base.cyan
# SUPPORT : #49d6e9 -> Syntax.replacetag
# MISC : #49ace9 -> Base.blue
# INVALID : #e3541c -> GUI.errortext
##
[Base]
base = #052529
default = #b2cacd
faded = #5b858b
red = #df769b
orange = #e66533
yellow = #d5971a
green = #16b673
cyan = #16a3b6
blue = #49ace9
purple = #7060eb
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #041d20
windowtext = default
base = base
alternatebase = base:L175
text = default
tooltipbase = #073940
tooltiptext = #cdd3de
button = base
buttontext = #cdd3de
brighttext = base
highlight = #107684
highlightedtext = default
link = #40d4e7
linkvisited = blue
accent = #49e9a6
[GUI]
helptext = #e4b781
fadedtext = faded
errortext = #e3541c
[Syntax]
background = base
text = #b2cacd
line = #169fb132
link = #40d4e7
headertext = #49e9a6
headertag = green:D125
emphasis = #d67e5c
dialog = green
altdialog = blue
note = #d67e5c
hidden = faded
shortcode = red
keyword = yellow
tag = blue
value = red:D125
optional = #b2cacd
spellcheckline = red
errorline = green
replacetag = #49d6e9
modifier = red
texthighlight = #169fb144
+108
View File
@@ -0,0 +1,108 @@
[Main]
name = Noctis Lux
mode = light
description = A light theme with a well balanced blend of warm and cold medium contrast colors
author = Veronica Berglyd Olsen
credit = Liviu Schera, and contributors
url = https://github.com/liviuschera/noctis
##
# Noctis Lux : themes/lux.json
##
# colors
# selection.background : #169fb155 -> Palette.highlight
# sideBar.background : #f9f1e1 -> Palette.window
# editor.background : #fef8ec -> Base.base
# editor.foreground : #005661 -> Base.default
# editor.selectionBackground : #ade2eb77 -> Syntax.line, Syntax.texthighlight
# textLink.foreground : #00c6e0 -> Palette.link, Syntax.link
# input.background : #fef8ec -> Palette.button
# input.foreground : #6a7a7c -> Palette.buttontext
# notifications.foreground : #005661 -> Palette.tooltiptext
# notifications.background : #f2edde -> Palette.tooltipbase
##
# tokenColors
# COMMENT : #8ca6a6 -> Base.faded
# TEXT : #004d57 -> Syntax.text, Syntax.optional
# KEYWORD : #ff5792 -> Base.red
# VARIABLE : #fa8900 -> Palette.accent
# ANNOTATION : #b3694d -> Syntax.note, Syntax.emphasis
# CONSTANT : #a88c00 -> Base.yellow
# TAG : #e64100 -> Base.orange
# STRING : #00b368 -> Syntax.headertext, Palette.accent
# STRINGINTERPOLATED : #009456 -> Base.green
# NUMBER : #5842ff -> Base.purple
# FUNCTION : #0095a8 -> Base.cyan
# SUPPORT : #00bdd6 -> Syntax.replacetag
# MISC : #0094f0 -> Base.blue
# INVALID : #ff530f -> GUI.errortext
##
[Base]
base = #fef8ec
default = #005661
faded = #8ca6a6
red = #ff5792
orange = #e64100
yellow = #a88c00
green = #009456
cyan = #0095a8
blue = #0094f0
purple = #5842ff
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #f9f1e1
windowtext = default
base = base
alternatebase = base:D115
text = default
tooltipbase = #f2edde
tooltiptext = #005661
button = base
buttontext = #6a7a7c
brighttext = base
highlight = #169fb155
highlightedtext = default
link = #00c6e0
linkvisited = blue
accent = #00b368
[GUI]
helptext = #fa8900
fadedtext = faded
errortext = #ff530f
[Syntax]
background = base
text = #004d57
line = #ade2eb56
link = #00c6e0
headertext = #00b368
headertag = green:D125
emphasis = #b3694d
dialog = green
altdialog = blue
note = #b3694d
hidden = faded
shortcode = red
keyword = yellow
tag = blue
value = red:D125
optional = #004d57
spellcheckline = red
errorline = green
replacetag = #00bdd6
modifier = red
texthighlight = #ade2eb77
+76
View File
@@ -0,0 +1,76 @@
[Main]
name = Nord
mode = dark
description = Nord
author = Myian
credit = Sven Greb
url = https://github.com/nordtheme/nord
[Base]
base = #2e3440
default = #d8dee9
faded = #7b88a1
red = #bf616a
orange = #d08770
yellow = #ebcb8b
green = #a3be8c
cyan = #88c0d0
blue = #81a1c1
purple = #b48ead
[Project]
root = default
folder = yellow
file = default
title = purple
chapter = blue
scene = #8fbcbb
note = #696f7e
active = green
inactive = faded
disabled = #576279
[Palette]
window = #242933
windowtext = default
base = base
alternatebase = #434c5e
text = default
tooltipbase = yellow
tooltiptext = base
button = #2e3440
buttontext = default
brighttext = base
highlight = cyan
highlightedtext = base
link = blue
linkvisited = blue
accent = cyan
[GUI]
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #3b4252
link = purple
headertext = cyan
headertag = cyan:128
emphasis = #8fbcbb
dialog = blue
altdialog = green
note = orange
hidden = faded
shortcode = orange
keyword = purple
tag = #8fbcbb
value = #8fbcbb
optional = faded
spellcheckline = #ff717f
errorline = #b2da8f
replacetag = orange
modifier = purple
texthighlight = cyan:64
+74
View File
@@ -0,0 +1,74 @@
[Main]
name = Nordlicht
mode = light
description = Nord
author = Myian
[Base]
base = #ffffff
default = #4c566a
faded = #7b88a1
red = #bf616a
orange = #d08770
yellow = #daba7a
green = #7cac78
cyan = #6bacbe
blue = #6b8ab8
purple = #aa7aa1
[Project]
root = default
folder = #d4b067
file = #6d7a96
title = purple
chapter = blue
scene = #68a593
note = #a5b3ca
active = green
inactive = faded
disabled = #b2c0d6
[Palette]
window = #e5e9f0
windowtext = default
base = base
alternatebase = #d8dee9
text = default
tooltipbase = #fff0d3
tooltiptext = default
button = #e5e9f0
buttontext = default
brighttext = base
highlight = cyan
highlightedtext = base
link = blue
linkvisited = blue
accent = cyan
[GUI]
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #eceff4
link = purple
headertext = #559db1
headertag = #559db188
emphasis = #549b86
dialog = #5e81ac
altdialog = #619b5b
note = orange
hidden = faded
shortcode = orange
keyword = purple
tag = #68a593
value = #68a593
optional = faded
spellcheckline = #ff3b4f
errorline = #58aa51
replacetag = orange
modifier = #a16e98
texthighlight = cyan:64
@@ -0,0 +1,76 @@
[Main]
name = Primer Light
mode = light
description = Primer
author = Myian
credit = GitHub Inc.
url = https://github.com/primer
[Base]
base = #ffffff
default = #1f2328
faded = #8c959f
red = #cf222e
orange = #e16f24
yellow = #d4a72c
green = #2da44e
cyan = #339d9b
blue = #0969da
purple = #8557db
[Project]
root = #32383f
folder = orange
file = #49bcb7
title = #116329
chapter = #2e934a
scene = #4ac26b
note = yellow
active = #24292f
inactive = faded
disabled = #afb8c1
[Palette]
window = #eaeef2
windowtext = default
base = base
alternatebase = #dde3e8
text = default
tooltipbase = #fff8c5
tooltiptext = default
button = base
buttontext = default
brighttext = base
highlight = green
highlightedtext = base
link = blue
linkvisited = blue
accent = green
[GUI]
helptext = #424a53
fadedtext = #8c959f
errortext = red
[Syntax]
background = base
text = #424a53
line = #eaeef2
link = blue
headertext = default
headertag = #9ea7b0
emphasis = #1a7f37
dialog = #0d1117
altdialog = cyan
note = #bf8700
hidden = #8c959f
shortcode = #e85aad
keyword = blue
tag = #218bff
value = orange
optional = #54aeff
spellcheckline = #fa4549
errorline = cyan
replacetag = purple
modifier = #bc4c00
texthighlight = #a7fbbe
@@ -0,0 +1,76 @@
[Main]
name = Primer Night
mode = dark
description = Primer
author = Myian
credit = GitHub Inc.
url = https://github.com/primer
[Base]
base = #0d1117
default = #f0f6fc
faded = #6e7681
red = #ff7b72
orange = #ffa657
yellow = #f8e3a1
green = #56d364
cyan = #57CCC5
blue = #79c0ff
purple = #c398ff
[Project]
root = default
folder = orange
file = #8adfd7
title = #238636
chapter = #56d364
scene = #aff5b4
note = yellow
active = default
inactive = faded
disabled = #484f58
[Palette]
window = #161b22
windowtext = default
base = base
alternatebase = #30363d
text = default
tooltipbase = yellow
tooltiptext = base
button = #21262d
buttontext = default
brighttext = base
highlight = #207c59
highlightedtext = default
link = blue
linkvisited = blue
accent = #207c59
[GUI]
helptext = #8b949e
fadedtext = #6e7681
errortext = #f85149
[Syntax]
background = base
text = #b1bac4
line = #21262d
link = blue
headertext = default
headertag = #b1bac4
emphasis = #7ee787
dialog = #ffffff
altdialog = #57ccc5
note = #f8e3a1
hidden = faded
shortcode = #ff9bce
keyword = #4493f8
tag = blue
value = #ffc680
optional = #a5d6ff
spellcheckline = #f85149
errorline = cyan
replacetag = purple
modifier = orange
texthighlight = #104C35
+74
View File
@@ -0,0 +1,74 @@
[Main]
name = Ruby Day
mode = light
description = Ruby
author = Myian
[Base]
base = #ffeeee
default = #444252
faded = #8e8c9c
red = #e46363
orange = #df9a61
yellow = #e5c280
green = #72ac79
cyan = #6aa2a7
blue = #7b80c2
purple = #b781c2
[Project]
root = default
folder = orange
file = #7d7a8d
title = green
chapter = red
scene = blue
note = purple
active = default
inactive = red
disabled = faded
[Palette]
window = #f1d9d9
windowtext = default
base = base
alternatebase = #e9c1c1
text = default
tooltipbase = #f0d0d0
tooltiptext = default
button = base
buttontext = default
brighttext = red
highlight = #da3d3d
highlightedtext = base
link = #9f58ad
linkvisited = #9f58ad
accent = #c43939
[GUI]
helptext = #756777
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #f3dbdd
link = #5159cc
headertext = default
headertag = default:128
emphasis = #c05858
dialog = #c53030
altdialog = #c45522
note = #9f58ad
hidden = faded
shortcode = #9f58ad
keyword = #5159cc
tag = #9f58ad
value = #b98421
optional = faded
spellcheckline = #ff3333
errorline = cyan
replacetag = #5159cc
modifier = #2a9638
texthighlight = red:80
+74
View File
@@ -0,0 +1,74 @@
[Main]
name = Ruby Night
mode = dark
description = Ruby
author = Myian
[Base]
base = #18181C
default = #dcd9e6
faded = #817b94
red = #ec6262
orange = #f89d68
yellow = #ebcf84
green = #7fb88b
cyan = #75c5ca
blue = #7f8dcf
purple = #c37ac5
[Project]
root = default
folder = orange
file = default
title = green
chapter = red
scene = blue
note = purple
active = default
inactive = red
disabled = faded
[Palette]
window = #0e0e11
windowtext = default
base = base
alternatebase = #29292e
text = default
tooltipbase = #fa9b9b
tooltiptext = base
button = #1c1c21
buttontext = default
brighttext = base
highlight = #a52a2c
highlightedtext = #ebd9d9
link = purple
linkvisited = purple
accent = #a52a2c
[GUI]
helptext = #a5a1b3
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #29292e
link = blue
headertext = default
headertag = default:128
emphasis = #ff9d9d
dialog = #ff6969
altdialog = orange
note = purple
hidden = faded
shortcode = purple
keyword = blue
tag = purple
value = yellow
optional = faded
spellcheckline = #ff2727
errorline = cyan
replacetag = blue
modifier = green
texthighlight = red:80
+81 -40
View File
@@ -1,48 +1,89 @@
[Main]
name = Snazzy Light
author = Veronica Berglyd Olsen (adaptation)
credit = Florian Reuschel (color theme)
url = https://github.com/loilo/vscode-snazzy-light
license = MIT License
licenseurl = https://github.com/loilo/vscode-snazzy-light/blob/master/LICENSE
name = Snazzy Light
mode = light
description = A vivid light color theme
author = Veronica Berglyd Olsen
credit = Florian Reuschel, Sindre Sorhus
url = https://github.com/loilo/vscode-snazzy-light
[Icons]
default = 86, 88, 105
faded = 84, 85, 84
red = 255, 92, 87
orange = 245, 185, 0
yellow = 207, 156, 0
green = 45, 174, 88
aqua = 19, 187, 183
blue = 9, 161, 237
purple = 247, 103, 187
##
# Colours:
# Background = fafbfc : 250, 251, 252
# Foreground = 565869 : 86, 88, 105
# Comment = 9194a2 : 145, 148, 162
# Yellow = cf9c00 : 207, 156, 0
# Red = ff5c57 : 255, 92, 87
# Pink = f767bb : 247, 103, 187
# Blue = 09a1ed : 9, 161, 237
# Cyan = 13bbb7 : 19, 187, 183
# Green = 2dae58 : 45, 174, 88
##
[Base]
base = #fafbfc
default = #565869
faded = #545554
red = #ff5c57
orange = #f5b900
yellow = #cf9c00
green = #2dae58
cyan = #13bbb7
blue = #09a1ed
purple = #f767bb
[Project]
root = 9, 161, 237
folder = 207, 156, 0
file = 84, 85, 84
title = 45, 174, 88
chapter = 255, 92, 87
scene = 9, 161, 237
note = 207, 156, 0
root = blue
folder = yellow
file = faded
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 243, 244, 245
windowtext = 86, 88, 105
base = 250, 251, 252
alternatebase = 234, 234, 235
text = 86, 88, 105
tooltipbase = 245, 233, 194
tooltiptext = 86, 88, 105
button = 250, 251, 252
buttontext = 86, 88, 105
brighttext = 255, 255, 255
highlight = 9, 161, 237
highlightedtext = 255, 255, 255
link = 9, 161, 237
linkvisited = 9, 161, 237
window = #f3f4f5
windowtext = default
base = base
alternatebase = #eaeaeb
text = default
tooltipbase = #f5e9c2
tooltiptext = default
button = base
buttontext = default
brighttext = base
highlight = blue
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = blue
[GUI]
helptext = 9, 161, 237
fadedtext = 84, 85, 84
errortext = 255, 92, 87
helptext = blue
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = green
headertag = green:D125
emphasis = purple
dialog = blue
altdialog = yellow
note = cyan
hidden = purple:D150
shortcode = purple
keyword = blue
tag = green
value = yellow
optional = yellow
spellcheckline = red
errorline = green
replacetag = cyan
modifier = purple
texthighlight = yellow:96
+87 -40
View File
@@ -1,48 +1,95 @@
[Main]
name = Solarized Dark
author = nullbasis
credit = Ethan Schoonover
url = https://ethanschoonover.com/solarized/
license = MIT
licenseurl = https://github.com/altercation/solarized/blob/master/LICENSE
name = Solarized Dark
mode = dark
description = Precision colors for machines and people
author = nullbasis, Veronica Berglyd Olsen
credit = Ethan Schoonover
url = https://ethanschoonover.com/solarized/
[Icons]
default = 230, 223, 206
faded = 166, 161, 149
red = 220, 50, 47
orange = 203, 75, 22
yellow = 181, 137, 0
green = 133, 153, 0
aqua = 42, 161, 152
blue = 38, 139, 210
purple = 211, 54, 130
##
# base03: #002b36
# base02: #073642
# base01: #586e75
# base00: #657b83
# base0: #839496
# base1: #93a1a1
# base2: #eee8d5
# base3: #fdf6e3
# yellow: #b58900
# orange: #cb4b16
# red: #dc322f
# magenta: #d33682
# violet: #6c71c4
# blue: #268bd2
# cyan: #2aa198
# green: #859900
##
[Base]
base = #002b36
default = #fdf6e3
faded = #eee8d5
red = #dc322f
orange = #cb4b16
yellow = #b58900
green = #859900
cyan = #2aa198
blue = #268bd2
purple = #6c71c4
[Project]
root = 42, 161, 152
folder = 42, 161, 152
file = 230, 223, 206
title = 133, 153, 0
chapter = 220, 50, 47
scene = 38, 139, 210
note = 181, 137, 0
root = cyan
folder = cyan
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 0, 43, 54
windowtext = 253, 246, 227
base = 7, 54, 66
alternatebase = 88, 110, 117
text = 253, 246, 227
tooltipbase = 133, 153, 0
tooltiptext = 0, 43, 54
button = 7, 54, 66
buttontext = 253, 246, 227
brighttext = 7, 54, 66
highlight = 42, 161, 152
highlightedtext = 0, 43, 54
link = 38, 139, 210
linkvisited = 38, 139, 210
window = #073642
windowtext = default
base = base
alternatebase = #586e75
text = default
tooltipbase = yellow:L150
tooltiptext = #002b36
button = base
buttontext = default
brighttext = base
highlight = cyan
highlightedtext = default
link = blue
linkvisited = blue
accent = cyan
[GUI]
helptext = 101, 123, 131
fadedtext = 101, 123, 131
errortext = 220, 50, 47
helptext = cyan
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #073642
link = blue
headertext = blue
headertag = #657b83
emphasis = blue
dialog = cyan
altdialog = red
note = cyan:D125
hidden = default:L200
shortcode = blue
keyword = green
tag = yellow
value = orange
optional = cyan:D125
spellcheckline = red
errorline = red
replacetag = green
modifier = yellow
texthighlight = yellow:128
+87 -40
View File
@@ -1,48 +1,95 @@
[Main]
name = Solarized Light
author = nullbasis
credit = Ethan Schoonover
url = https://ethanschoonover.com/solarized/
license = MIT
licenseurl = https://github.com/altercation/solarized/blob/master/LICENSE
name = Solarized Light
mode = light
description = Precision colors for machines and people
author = nullbasis, Veronica Berglyd Olsen
credit = Ethan Schoonover
url = https://ethanschoonover.com/solarized/
[Icons]
default = 59, 68, 71
faded = 78, 91, 95
red = 220, 50, 47
orange = 203, 75, 22
yellow = 181, 137, 0
green = 133, 153, 0
aqua = 42, 161, 152
blue = 38, 139, 210
purple = 211, 54, 130
##
# base03: #002b36
# base02: #073642
# base01: #586e75
# base00: #657b83
# base0: #839496
# base1: #93a1a1
# base2: #eee8d5
# base3: #fdf6e3
# yellow: #b58900
# orange: #cb4b16
# red: #dc322f
# magenta: #d33682
# violet: #6c71c4
# blue: #268bd2
# cyan: #2aa198
# green: #859900
##
[Base]
base = #fdf6e3
default = #002b36
faded = #073642
red = #dc322f
orange = #cb4b16
yellow = #b58900
green = #859900
cyan = #2aa198
blue = #268bd2
purple = #6c71c4
[Project]
root = 42, 161, 152
folder = 42, 161, 152
file = 59, 68, 71
title = 133, 153, 0
chapter = 220, 50, 47
scene = 38, 139, 210
note = 181, 137, 0
root = cyan
folder = cyan
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = 238, 232, 213
windowtext = 0, 43, 54
base = 253, 246, 227
alternatebase = 147, 161, 161
text = 0, 43, 54
tooltipbase = 133, 153, 0
tooltiptext = 0, 43, 54
button = 238, 232, 213
buttontext = 0, 43, 54
brighttext = 253, 246, 227
highlight = 42, 161, 152
highlightedtext = 253, 246, 227
link = 38, 139, 210
linkvisited = 38, 139, 210
window = #eee8d5
windowtext = default
base = base
alternatebase = #93a1a1
text = default
tooltipbase = yellow:L150
tooltiptext = #002b36
button = base
buttontext = default
brighttext = base
highlight = cyan
highlightedtext = default
link = blue
linkvisited = blue
accent = cyan
[GUI]
helptext = 78, 91, 95
fadedtext = 78, 91, 95
errortext = 220, 50, 47
helptext = cyan
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = #eee8d5
link = blue
headertext = blue
headertag = #657b83
emphasis = blue
dialog = cyan
altdialog = red
note = cyan:D125
hidden = default:L200
shortcode = blue
keyword = green
tag = yellow
value = orange
optional = cyan:D125
spellcheckline = red
errorline = red
replacetag = green
modifier = yellow
texthighlight = yellow:128
+90
View File
@@ -0,0 +1,90 @@
[Main]
name = Tango Dark
mode = dark
description = Colors for everyone
author = Veronica Berglyd Olsen
credit = Tango Desktop Project
url = https://en.wikipedia.org/wiki/Tango_Desktop_Project
##
# Colours:
# Background = #30302f
# Foreground = #eeeeec
# Comment = #8f8f8d
# Red = #ef2929
# Orange = #c4a000
# Yellow = #fce94f
# Green = #8ae234
# Cyan = #34e2e2
# Blue = #3465a4
# Purple = #ad7fa8
##
[Base]
base = #2e3436
default = #eeeeec
faded = #babdb6
red = #ef2929
orange = #fcaf3e
yellow = #fce94f
green = #8ae234
cyan = #34e2e2
blue = #729fcf
purple = #ad7fa8
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = base:L140
windowtext = default
base = base
alternatebase = #454e51
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = #555753
buttontext = default
brighttext = #555753
highlight = blue
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = blue
[GUI]
helptext = orange
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = blue
headertag = blue:160
emphasis = orange
dialog = green
altdialog = yellow
note = yellow:L115
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = red
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = blue
texthighlight = yellow:96
@@ -0,0 +1,90 @@
[Main]
name = Tango Light
mode = light
description = Colors for everyone
author = Veronica Berglyd Olsen
credit = Tango Desktop Project
url = https://en.wikipedia.org/wiki/Tango_Desktop_Project
##
# Colours:
# Background = #eeeeec
# Foreground = #2e3436
# Comment = #8f8f8d
# Red = #a40000
# Orange = #c4a000
# Yellow = #fce94f
# Green = #8ae234
# Cyan = #34e2e2
# Blue = #3465a4
# Purple = #ad7fa8
##
[Base]
base = #eeeeec
default = #2e3436
faded = #888a85
red = #a40000
orange = #ce5c00
yellow = #c4a000
green = #4e9a06
cyan = #069a9a
blue = #204a87
purple = #5c3566
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = base:D110
windowtext = default
base = base
alternatebase = #e0e0e0
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = #d3d7cf
buttontext = default
brighttext = #d3d7cf
highlight = blue:L200
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = blue:L150
[GUI]
helptext = orange
fadedtext = faded
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = blue
headertag = blue:160
emphasis = orange
dialog = green
altdialog = yellow
note = yellow:D125
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = red
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = blue
texthighlight = yellow:96
+96
View File
@@ -0,0 +1,96 @@
[Main]
name = Tomorrow
mode = light
description = A colourful theme with muted colours and sensible highlighting
author = Veronica Berglyd Olsen
credit = Chris Kempson
url = https://github.com/chriskempson/tomorrow-theme
##
# Theme: Tomorrow
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = #ffffff
# Current Line = #efefef
# Selection = #d6d6d6
# Foreground = #4d4d4c
# Comment = #8e908c
# Red = #c82829
# Orange = #f5871f
# Yellow = #eab700
# Green = #718c00
# Aqua = #3e999f
# Blue = #4271ae
# Purple = #8959a8
##
[Base]
base = #ffffff
default = #484848
faded = #6c6c6c
red = #c82829
orange = #f5871f
yellow = #eab700
green = #718c00
cyan = #3e999f
blue = #4271ae
purple = #8959a8
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #efefef
windowtext = #000000
base = base
alternatebase = #d6d6d6
text = #000000
tooltipbase = #ffffc0
tooltiptext = #15150d
button = #efefef
buttontext = #000000
brighttext = #efefef
highlight = blue
highlightedtext = base
link = blue
linkvisited = blue
accent = blue
[GUI]
helptext = #5c5c5c
fadedtext = faded
errortext = red
[Syntax]
background = base
text = #4d4d4c
line = default:32
link = blue
headertext = blue
headertag = blue:L135
emphasis = orange
dialog = green
altdialog = yellow
note = #b38c00
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = yellow
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = orange
texthighlight = yellow:96
@@ -0,0 +1,96 @@
[Main]
name = Tomorrow Night
mode = dark
description = A colourful theme with muted colours and sensible highlighting
author = Veronica Berglyd Olsen
credit = Chris Kempson
url = https://github.com/chriskempson/tomorrow-theme
##
# Theme: Tomorrow Night
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = #1d1f21
# Current Line = #282a2e
# Selection = #373b41
# Foreground = #c5c8c6
# Comment = #969896
# Red = #cc6666
# Orange = #de935f
# Yellow = #f0c674
# Green = #b5bd68
# Aqua = #8abeb7
# Blue = #81a2be
# Purple = #b294bb
##
[Base]
base = #1d1f21
default = #c5c8c6
faded = #969896
red = #cc6666
orange = #de935f
yellow = #f0c674
green = #b5bd68
cyan = #8abeb7
blue = #81a2be
purple = #b294bb
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #282a2e
windowtext = default
base = base
alternatebase = #373b41
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #2c98f7
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #2c98f7
[GUI]
helptext = #a4a4a4
fadedtext = #949494
errortext = red
[Syntax]
background = base
text = default
line = default:48
link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
dialog = green
altdialog = yellow
note = #f0dbb2
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = yellow
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = orange
texthighlight = yellow:96
@@ -0,0 +1,96 @@
[Main]
name = Tomorrow Night Blue
mode = dark
description = A colourful theme with muted colours and sensible highlighting
author = Veronica Berglyd Olsen
credit = Chris Kempson
url = https://github.com/chriskempson/tomorrow-theme
##
# Theme: Tomorrow Night Blue
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = #002451
# Current Line = #00346e
# Selection = #003f8e
# Foreground = #ffffff
# Comment = #7285b7
# Red = #ff9da4
# Orange = #ffc58f
# Yellow = #ffeead
# Green = #d1f1a9
# Aqua = #99ffff
# Blue = #bbdaff
# Purple = #ebbbff
##
[Base]
base = #002451
default = #ffffff
faded = #7285b7
red = #ff9da4
orange = #ffc58f
yellow = #ffeead
green = #d1f1a9
cyan = #99ffff
blue = #bbdaff
purple = #ebbbff
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = base:L125
windowtext = default
base = base
alternatebase = #003f8e
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #2c98f7
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #2c98f7
[GUI]
helptext = #a4a4a4
fadedtext = #949494
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
dialog = green
altdialog = yellow
note = #fff4cc
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = yellow
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = orange
texthighlight = yellow:96
@@ -0,0 +1,96 @@
[Main]
name = Tomorrow Night Bright
mode = dark
description = A colourful theme with muted colours and sensible highlighting
author = Veronica Berglyd Olsen
credit = Chris Kempson
url = https://github.com/chriskempson/tomorrow-theme
##
# Theme: Tomorrow Night Bright
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = #000000
# Current Line = #2a2a2a
# Selection = #424242
# Foreground = #eaeaea
# Comment = #969896
# Red = #d54e53
# Orange = #e78c45
# Yellow = #e7c547
# Green = #b9ca4a
# Aqua = #70c0b1
# Blue = #7aa6da
# Purple = #c397d8
##
[Base]
base = #000000
default = #eaeaea
faded = #969896
red = #d54e53
orange = #e78c45
yellow = #e7c547
green = #b9ca4a
cyan = #70c0b1
blue = #7aa6da
purple = #c397d8
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #181818
windowtext = default
base = base
alternatebase = #424242
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #2c98f7
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #2c98f7
[GUI]
helptext = #a4a4a4
fadedtext = #949494
errortext = red
[Syntax]
background = base
text = default
line = default:48
link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
dialog = green
altdialog = yellow
note = #e7d696
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = yellow
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = orange
texthighlight = yellow:96
@@ -0,0 +1,96 @@
[Main]
name = Tomorrow Night Eighties
mode = dark
description = A colourful theme with muted colours and sensible highlighting
author = Veronica Berglyd Olsen
credit = Chris Kempson
url = https://github.com/chriskempson/tomorrow-theme
##
# Theme: Tomorrow Night Eighties
# Source: https://github.com/chriskempson/tomorrow-theme
# Credit: Chris Kempson
##
# Colours:
# Background = #2d2d2d
# Current Line = #393939
# Selection = #515151
# Foreground = #cccccc
# Comment = #999999
# Red = #f2777a
# Orange = #f99157
# Yellow = #ffcc66
# Green = #99cc99
# Aqua = #66cccc
# Blue = #6699cc
# Purple = #cc99cc
##
[Base]
base = #2d2d2d
default = #cccccc
faded = #999999
red = #f2777a
orange = #f99157
yellow = #ffcc66
green = #99cc99
cyan = #66cccc
blue = #6699cc
purple = #cc99cc
[Project]
root = blue
folder = yellow
file = default
title = green
chapter = red
scene = blue
note = yellow
active = green
inactive = red
disabled = faded
[Palette]
window = #393939
windowtext = default
base = base
alternatebase = #515151
text = default
tooltipbase = #ffffc0
tooltiptext = #15150d
button = base
buttontext = default
brighttext = base
highlight = #2c98f7
highlightedtext = #ffffff
link = blue
linkvisited = blue
accent = #2c98f7
[GUI]
helptext = #a4a4a4
fadedtext = #949494
errortext = red
[Syntax]
background = base
text = default
line = default:32
link = blue
headertext = blue
headertag = blue:D150
emphasis = orange
dialog = green
altdialog = yellow
note = #ffe6b3
hidden = faded
shortcode = blue
keyword = red
tag = purple
value = yellow
optional = blue
spellcheckline = red
errorline = green
replacetag = cyan
modifier = orange
texthighlight = yellow:96
+11
View File
@@ -31,6 +31,7 @@ import xml.etree.ElementTree as ET
from configparser import ConfigParser
from datetime import datetime
from enum import Enum
from pathlib import Path
from typing import TYPE_CHECKING, Any, Literal, TypeGuard, TypeVar
from urllib.parse import urljoin
@@ -676,6 +677,9 @@ def openExternalPath(path: Path) -> bool:
# Classes
##
_T_Enum = TypeVar("_T_Enum", bound=Enum)
class NWConfigParser(ConfigParser):
"""Common: Adapted Config Parser
@@ -737,3 +741,10 @@ class NWConfigParser(ConfigParser):
for i in range(min(len(data), len(result))):
result[i] = checkInt(data[i].strip(), result[i])
return result
def rdEnum(self, section: str, option: str, default: _T_Enum) -> _T_Enum:
"""Read enum value."""
if self.has_option(section, option):
data = self.get(section, option, fallback="")
return type(default).__members__.get(data.upper(), default)
return default
+45 -35
View File
@@ -45,6 +45,7 @@ from novelwriter.common import (
formatTimeStamp, processDialogSymbols, simplified
)
from novelwriter.constants import nwFiles, nwQuotes, nwUnicode
from novelwriter.enum import nwTheme
from novelwriter.error import formatException, logException
if TYPE_CHECKING:
@@ -55,8 +56,8 @@ if TYPE_CHECKING:
logger = logging.getLogger(__name__)
DEF_GUI = "default"
DEF_SYNTAX = "default_light"
DEF_GUI_DARK = "default_dark"
DEF_GUI_LIGHT = "default_light"
DEF_ICONS = "material_rounded_normal"
DEF_TREECOL = "theme"
@@ -69,22 +70,23 @@ class Config:
"_manuals", "_nwLangPath", "_qLocale", "_qtLangPath", "_qtTrans", "_recentPaths",
"_recentProjects", "_splash", "allowOpenDial", "altDialogClose", "altDialogOpen",
"appHandle", "appName", "askBeforeBackup", "askBeforeExit", "autoSaveDoc", "autoSaveProj",
"autoScroll", "autoScrollPos", "autoSelect", "backupOnClose", "cursorWidth", "dialogLine",
"dialogStyle", "doJustify", "doReplace", "doReplaceDQuote", "doReplaceDash",
"autoScroll", "autoScrollPos", "autoSelect", "backupOnClose", "cursorWidth", "darkTheme",
"dialogLine", "dialogStyle", "doJustify", "doReplace", "doReplaceDQuote", "doReplaceDash",
"doReplaceDots", "doReplaceSQuote", "emphLabels", "fmtApostrophe", "fmtDQuoteClose",
"fmtDQuoteOpen", "fmtPadAfter", "fmtPadBefore", "fmtPadThin", "fmtSQuoteClose",
"fmtSQuoteOpen", "focusWidth", "guiFont", "guiLocale", "guiSyntax", "guiTheme",
"hasEnchant", "hideFocusFooter", "hideHScroll", "hideVScroll", "highlightEmph", "hostName",
"iconColDocs", "iconColTree", "iconTheme", "incNotesWCount", "isDebug", "kernelVer",
"lastNotes", "mainPanePos", "mainWinSize", "memInfo", "narratorBreak", "narratorDialog",
"nativeFont", "osDarwin", "osLinux", "osType", "osUnknown", "osWindows", "outlinePanePos",
"prefsWinSize", "scrollPastEnd", "searchCase", "searchLoop", "searchMatchCap",
"searchNextFile", "searchProjCase", "searchProjRegEx", "searchProjWord", "searchRegEx",
"searchWord", "showEditToolBar", "showFullPath", "showLineEndings", "showMultiSpaces",
"showSessionTime", "showTabsNSpaces", "showViewerPanel", "spellLanguage", "stopWhenIdle",
"tabWidth", "textFont", "textMargin", "textWidth", "useCharCount", "userIdleTime",
"verPyQtString", "verPyQtValue", "verPyString", "verQtString", "verQtValue",
"viewComments", "viewPanePos", "viewSynopsis", "welcomeWinSize",
"fmtSQuoteOpen", "focusWidth", "guiFont", "guiLocale", "hasEnchant", "hideFocusFooter",
"hideHScroll", "hideVScroll", "highlightEmph", "hostName", "iconColDocs", "iconColTree",
"iconTheme", "incNotesWCount", "isDebug", "kernelVer", "lastNotes", "lightTheme",
"lineHighlight", "mainPanePos", "mainWinSize", "memInfo", "narratorBreak",
"narratorDialog", "nativeFont", "osDarwin", "osLinux", "osType", "osUnknown", "osWindows",
"outlinePanePos", "prefsWinSize", "scrollPastEnd", "searchCase", "searchLoop",
"searchMatchCap", "searchNextFile", "searchProjCase", "searchProjRegEx", "searchProjWord",
"searchRegEx", "searchWord", "showEditToolBar", "showFullPath", "showLineEndings",
"showMultiSpaces", "showSessionTime", "showTabsNSpaces", "showViewerPanel",
"spellLanguage", "stopWhenIdle", "tabWidth", "textFont", "textMargin", "textWidth",
"themeMode", "useCharCount", "userIdleTime", "verPyQtString", "verPyQtValue",
"verPyString", "verQtString", "verQtValue", "viewComments", "viewNotes", "viewPanePos",
"viewSynopsis", "welcomeWinSize",
)
LANG_NW = 1
@@ -153,14 +155,15 @@ class Config:
# General GUI Settings
self.guiLocale = self._qLocale.name()
self.guiTheme = DEF_GUI # GUI theme
self.guiSyntax = DEF_SYNTAX # Syntax theme
self.guiFont = QFont() # Main GUI font
self.hideVScroll = False # Hide vertical scroll bars on main widgets
self.hideHScroll = False # Hide horizontal scroll bars on main widgets
self.lastNotes = "0x0" # The latest release notes that have been shown
self.nativeFont = True # Use native font dialog
self.useCharCount = False # Use character count as primary count
self.lightTheme = DEF_GUI_LIGHT # Light GUI theme
self.darkTheme = DEF_GUI_DARK # Dark GUI theme
self.themeMode = nwTheme.AUTO # Colour theme mode
self.guiFont = QFont() # Main GUI font
self.hideVScroll = False # Hide vertical scroll bars on main widgets
self.hideHScroll = False # Hide horizontal scroll bars on main widgets
self.lastNotes = "0x0" # The latest release notes that have been shown
self.nativeFont = True # Use native font dialog
self.useCharCount = False # Use character count as primary count
# Icons
self.iconTheme = DEF_ICONS # Icons theme
@@ -178,8 +181,8 @@ class Config:
# Project Settings
self.autoSaveProj = 60 # Interval for auto-saving project, in seconds
self.autoSaveDoc = 30 # Interval for auto-saving document, in seconds
self.emphLabels = True # Add emphasis to H1 and H2 item labels
self.backupOnClose = False # Flag for running automatic backups
self.emphLabels = False # Add emphasis to H1 and H2 item labels
self.backupOnClose = True # Flag for running automatic backups
self.askBeforeBackup = True # Flag for asking before running automatic backup
self.askBeforeExit = True # Flag for asking before exiting the app
@@ -189,6 +192,7 @@ class Config:
self.textMargin = 40 # Editor/viewer text margin
self.tabWidth = 40 # Editor tabulator width
self.cursorWidth = 1 # Editor cursor width
self.lineHighlight = False # Highlight current line in editor
self.focusWidth = 800 # Focus Mode text width
self.hideFocusFooter = False # Hide document footer in Focus Mode
@@ -206,7 +210,7 @@ class Config:
self.doReplaceDash = True # Replace multiple hyphens with dashes
self.doReplaceDots = True # Replace three dots with ellipsis
self.autoScroll = False # Typewriter-like scrolling
self.autoScroll = True # Typewriter-like scrolling
self.autoScrollPos = 30 # Start point for typewriter-like scrolling
self.scrollPastEnd = True # Scroll past end of document, and centre cursor
@@ -245,6 +249,7 @@ class Config:
self.showSessionTime = True # Show the session time in the status bar
self.viewComments = True # Comments are shown in the viewer
self.viewSynopsis = True # Synopsis is shown in the viewer
self.viewNotes = True # Notes are shown in the viewer
# Search Box States
self.searchCase = False
@@ -403,7 +408,7 @@ class Config:
else:
font = QFontDatabase.systemFont(QFontDatabase.SystemFont.GeneralFont)
self.guiFont = fontMatcher(font)
logger.debug("GUI font set to: %s", describeFont(font))
logger.debug("Main font set to: %s", describeFont(font))
QApplication.setFont(self.guiFont)
return
@@ -551,11 +556,10 @@ class Config:
self._confPath.mkdir(exist_ok=True)
self._dataPath.mkdir(exist_ok=True)
# Also create the syntax, themes and icons folders if possible
# Also create the themes and icons folders if possible
if self._dataPath.is_dir():
(self._dataPath / "cache").mkdir(exist_ok=True)
(self._dataPath / "icons").mkdir(exist_ok=True)
(self._dataPath / "syntax").mkdir(exist_ok=True)
(self._dataPath / "themes").mkdir(exist_ok=True)
self._recentPaths.loadCache()
@@ -626,8 +630,9 @@ class Config:
# Main
sec = "Main"
self.setGuiFont(conf.rdStr(sec, "font", ""))
self.guiTheme = conf.rdStr(sec, "theme", self.guiTheme)
self.guiSyntax = conf.rdStr(sec, "syntax", self.guiSyntax)
self.lightTheme = conf.rdStr(sec, "lighttheme", self.lightTheme)
self.darkTheme = conf.rdStr(sec, "darktheme", self.darkTheme)
self.themeMode = conf.rdEnum(sec, "thememode", self.themeMode)
self.iconTheme = conf.rdStr(sec, "icons", self.iconTheme)
self.iconColTree = conf.rdStr(sec, "iconcoltree", self.iconColTree)
self.iconColDocs = conf.rdBool(sec, "iconcoldocs", self.iconColDocs)
@@ -665,6 +670,7 @@ class Config:
self.textMargin = conf.rdInt(sec, "margin", self.textMargin)
self.tabWidth = conf.rdInt(sec, "tabwidth", self.tabWidth)
self.cursorWidth = conf.rdInt(sec, "cursorwidth", self.cursorWidth)
self.lineHighlight = conf.rdBool(sec, "linehighlight", self.lineHighlight)
self.focusWidth = conf.rdInt(sec, "focuswidth", self.focusWidth)
self.hideFocusFooter = conf.rdBool(sec, "hidefocusfooter", self.hideFocusFooter)
self.doJustify = conf.rdBool(sec, "justify", self.doJustify)
@@ -708,6 +714,7 @@ class Config:
self.showSessionTime = conf.rdBool(sec, "showsessiontime", self.showSessionTime)
self.viewComments = conf.rdBool(sec, "viewcomments", self.viewComments)
self.viewSynopsis = conf.rdBool(sec, "viewsynopsis", self.viewSynopsis)
self.viewNotes = conf.rdBool(sec, "viewnotes", self.viewNotes)
self.searchCase = conf.rdBool(sec, "searchcase", self.searchCase)
self.searchWord = conf.rdBool(sec, "searchword", self.searchWord)
self.searchRegEx = conf.rdBool(sec, "searchregex", self.searchRegEx)
@@ -721,7 +728,7 @@ class Config:
# Check Values
# ============
self._prepareFont(self.guiFont, "GUI")
self._prepareFont(self.guiFont, "main")
self._prepareFont(self.textFont, "document")
# If we're using straight quotes, disable auto-replace
@@ -751,8 +758,9 @@ class Config:
conf["Main"] = {
"font": self.guiFont.toString(),
"theme": str(self.guiTheme),
"syntax": str(self.guiSyntax),
"lighttheme": str(self.lightTheme),
"darktheme": str(self.darkTheme),
"thememode": self.themeMode.name,
"icons": str(self.iconTheme),
"iconcoltree": str(self.iconColTree),
"iconcoldocs": str(self.iconColDocs),
@@ -790,6 +798,7 @@ class Config:
"margin": str(self.textMargin),
"tabwidth": str(self.tabWidth),
"cursorwidth": str(self.cursorWidth),
"lineHighlight": str(self.lineHighlight),
"focuswidth": str(self.focusWidth),
"hidefocusfooter": str(self.hideFocusFooter),
"justify": str(self.doJustify),
@@ -833,6 +842,7 @@ class Config:
"showsessiontime": str(self.showSessionTime),
"viewcomments": str(self.viewComments),
"viewsynopsis": str(self.viewSynopsis),
"viewnotes": str(self.viewNotes),
"searchcase": str(self.searchCase),
"searchword": str(self.searchWord),
"searchregex": str(self.searchRegEx),
+15 -3
View File
@@ -28,7 +28,8 @@ from typing import Final
from PyQt6.QtCore import QT_TRANSLATE_NOOP, QCoreApplication
from novelwriter.enum import (
nwBuildFmt, nwComment, nwItemClass, nwItemLayout, nwOutline, nwStatusShape
nwBuildFmt, nwComment, nwItemClass, nwItemLayout, nwOutline, nwStatusShape,
nwTheme
)
@@ -76,6 +77,7 @@ class nwRegEx:
FMT_EI = r"(?<![\w\\])(_)(?![\s_])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_EB = r"(?<![\w\\])(\*{2})(?![\s\*])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_ST = r"(?<![\w\\])(~{2})(?![\s~])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_HL = r"(?<![\w\\])(={2})(?![\s=])(.+?)(?<![\s\\])(\1)(?!\w)"
FMT_SC = r"(?i)(?<!\\)(\[(?:b|/b|i|/i|s|/s|u|/u|m|/m|sup|/sup|sub|/sub|br)\])"
FMT_SV = r"(?i)(?<!\\)(\[(?:footnote|field):)(.+?)(?<!\\)(\])"
@@ -446,17 +448,27 @@ class nwLabels:
"Custom": (-1.0, -1.0),
}
THEME_COLORS: Final[dict[str, str]] = {
"theme": QT_TRANSLATE_NOOP("Constant", "Theme Colours"),
"default": QT_TRANSLATE_NOOP("Constant", "Foreground Colour"),
"base": QT_TRANSLATE_NOOP("Constant", "Background Colour"),
"faded": QT_TRANSLATE_NOOP("Constant", "Faded Colour"),
"red": QT_TRANSLATE_NOOP("Constant", "Red"),
"orange": QT_TRANSLATE_NOOP("Constant", "Orange"),
"yellow": QT_TRANSLATE_NOOP("Constant", "Yellow"),
"green": QT_TRANSLATE_NOOP("Constant", "Green"),
"aqua": QT_TRANSLATE_NOOP("Constant", "Aqua"),
"cyan": QT_TRANSLATE_NOOP("Constant", "Cyan"),
"blue": QT_TRANSLATE_NOOP("Constant", "Blue"),
"purple": QT_TRANSLATE_NOOP("Constant", "Purple"),
}
THEME_MODE_ICON: Final[dict[nwTheme, str]] = {
nwTheme.AUTO: "theme_auto",
nwTheme.LIGHT: "theme_light",
nwTheme.DARK: "theme_dark",
}
THEME_MODE_LABEL: Final[dict[nwTheme, str]] = {
nwTheme.AUTO: QT_TRANSLATE_NOOP("Constant", "System Theme"),
nwTheme.LIGHT: QT_TRANSLATE_NOOP("Constant", "Light Theme"),
nwTheme.DARK: QT_TRANSLATE_NOOP("Constant", "Dark Theme"),
}
class nwHeadFmt:
+1
View File
@@ -609,6 +609,7 @@ class ProjectBuilder:
project.data.setSaveCount(0)
project.data.setAutoCount(0)
project.data.setEditTime(0)
project.index.rebuild()
project.saveProject()
project.closeProject()
return
+4 -4
View File
@@ -363,13 +363,13 @@ class NWItem:
"""
if self.isFileType():
key = "checked" if self._active else "unchecked"
color = "green" if self._active else "red"
color = "active" if self._active else "inactive"
text = trConst(nwLabels.ACTIVE_NAME[key])
icon = SHARED.theme.getIcon(key, color)
else:
key = "noncheckable"
color = "disabled"
text = ""
icon = SHARED.theme.getIcon("noncheckable", "faded")
return text, icon
return text, SHARED.theme.getIcon(key, color)
##
# Checker Methods
+14 -8
View File
@@ -483,14 +483,14 @@ class NWProject:
def setDefaultStatusImport(self) -> None:
"""Set the default status and importance values."""
self._data.itemStatus.add(None, self.tr("New"), (120, 120, 120), "STAR", 0)
self._data.itemStatus.add(None, self.tr("Note"), (205, 171, 143), "TRIANGLE", 0)
self._data.itemStatus.add(None, self.tr("Draft"), (143, 240, 164), "CIRCLE_T", 0)
self._data.itemStatus.add(None, self.tr("Finished"), (249, 240, 107), "STAR", 0)
self._data.itemImport.add(None, self.tr("New"), (120, 120, 120), "SQUARE", 0)
self._data.itemImport.add(None, self.tr("Minor"), (220, 138, 221), "BLOCK_2", 0)
self._data.itemImport.add(None, self.tr("Major"), (220, 138, 221), "BLOCK_3", 0)
self._data.itemImport.add(None, self.tr("Main"), (220, 138, 221), "BLOCK_4", 0)
self._data.itemStatus.add(None, self.tr("New"), "faded", "STAR", 0)
self._data.itemStatus.add(None, self.tr("Note"), "red", "TRIANGLE", 0)
self._data.itemStatus.add(None, self.tr("Draft"), "yellow", "CIRCLE_T", 0)
self._data.itemStatus.add(None, self.tr("Finished"), "green", "STAR", 0)
self._data.itemImport.add(None, self.tr("New"), "purple", "SQUARE", 0)
self._data.itemImport.add(None, self.tr("Minor"), "purple", "BLOCK_2", 0)
self._data.itemImport.add(None, self.tr("Major"), "purple", "BLOCK_3", 0)
self._data.itemImport.add(None, self.tr("Main"), "purple", "BLOCK_4", 0)
return
def setProjectLang(self, language: str | None) -> None:
@@ -547,6 +547,12 @@ class NWProject:
self._tree.refreshAllItems()
return
def updateTheme(self) -> None:
"""Update theme elements."""
self._data.itemStatus.refreshIcons()
self._data.itemImport.refreshIcons()
return
def localLookup(self, word: str | int) -> str:
"""Look up a word or number in the translation map for the
project and return it. The variable is cast to a string before
+10 -5
View File
@@ -46,7 +46,7 @@ if TYPE_CHECKING:
logger = logging.getLogger(__name__)
FILE_VERSION = "1.5" # The current project file format version
FILE_REVISION = "5" # The current project file format revision
FILE_REVISION = "6" # The current project file format revision
HEX_VERSION = 0x0105
NUM_VERSION = {
@@ -111,6 +111,8 @@ class ProjectXMLReader:
nodes. 2.5.
Rev 5: Added novelChars and notesChars attributes to content
node. 2.7 RC 1.
Rev 6: Replaced red, green and blue attributes with a single
color attribute. 2.8 Beta 1.
"""
def __init__(self, path: str | Path) -> None:
@@ -439,12 +441,15 @@ class ProjectXMLReader:
for xEntry in xItem:
if xEntry.tag == "entry":
key = xEntry.attrib.get("key", None)
red = checkInt(xEntry.attrib.get("red", 0), 0)
green = checkInt(xEntry.attrib.get("green", 0), 0)
blue = checkInt(xEntry.attrib.get("blue", 0), 0)
red = checkInt(xEntry.attrib.get("red", 0), 0) # Deprecated in 1.5 R6
green = checkInt(xEntry.attrib.get("green", 0), 0) # Deprecated in 1.5 R6
blue = checkInt(xEntry.attrib.get("blue", 0), 0) # Deprecated in 1.5 R6
color = xEntry.attrib.get("color") # Added in 1.5 R6
count = checkInt(xEntry.attrib.get("count", 0), 0)
shape = xEntry.attrib.get("shape", "")
sObject.add(key, xEntry.text or "", (red, green, blue), shape, count)
if color is None:
color = f"{red}, {green}, {blue}"
sObject.add(key, xEntry.text or "", color, shape, count)
return
def _parseDictKeyText(self, xItem: ET.Element) -> dict:
+23 -12
View File
@@ -35,6 +35,7 @@ from PyQt6.QtGui import QColor, QIcon, QPainter, QPainterPath, QPixmap, QPolygon
from novelwriter import SHARED
from novelwriter.common import simplified
from novelwriter.constants import nwLabels
from novelwriter.enum import nwStatusShape
from novelwriter.types import QtPaintAntiAlias, QtTransparent
@@ -43,12 +44,15 @@ if TYPE_CHECKING:
logger = logging.getLogger(__name__)
CUSTOM_COL = "custom"
@dataclasses.dataclass
class StatusEntry:
name: str
color: QColor
theme: str
shape: nwStatusShape
icon: QIcon
count: int = 0
@@ -62,7 +66,7 @@ class StatusEntry:
return status
NO_ENTRY = StatusEntry("", QColor(0, 0, 0), nwStatusShape.SQUARE, QIcon(), 0)
NO_ENTRY = StatusEntry("", QColor(0, 0, 0), CUSTOM_COL, nwStatusShape.SQUARE, QIcon(), 0)
T_UpdateEntry = list[tuple[str | None, StatusEntry]]
T_StatusKind = Literal["s", "i"]
@@ -97,15 +101,12 @@ class NWStatus:
# Methods
##
def add(self, key: str | None, name: str, color: tuple[int, int, int],
shape: str, count: int) -> str:
def add(self, key: str | None, name: str, color: str, shape: str, count: int) -> str:
"""Add or update a status entry. If the key is invalid, a new
key is generated.
"""
if isinstance(color, tuple) and len(color) == 3:
qColor = QColor(*color)
else:
qColor = QColor(100, 100, 100)
qColor = SHARED.theme.parseColor(color)
theme = color if color in nwLabels.THEME_COLORS else CUSTOM_COL
try:
iShape = nwStatusShape[shape]
@@ -115,7 +116,7 @@ class NWStatus:
key = self._checkKey(key)
name = simplified(name)
icon = self.createIcon(self._height, qColor, iShape)
self._store[key] = StatusEntry(name, qColor, iShape, icon, count)
self._store[key] = StatusEntry(name, qColor, theme, iShape, icon, count)
if self._default is None:
self._default = key
@@ -157,12 +158,14 @@ class NWStatus:
def pack(self) -> Iterable[tuple[str, dict]]:
"""Pack the status entries into a dictionary."""
for key, entry in self._store.items():
if entry.theme == CUSTOM_COL:
color = entry.color.name(QColor.NameFormat.HexRgb)
else:
color = entry.theme
yield (entry.name, {
"key": key,
"count": str(entry.count),
"red": str(entry.color.red()),
"green": str(entry.color.green()),
"blue": str(entry.color.blue()),
"color": color,
"shape": entry.shape.name,
})
return
@@ -179,12 +182,20 @@ class NWStatus:
try:
shape = nwStatusShape[str(data[0])]
color = QColor(str(data[1]))
theme = CUSTOM_COL if data[1].startswith("#") else data[1]
icon = NWStatus.createIcon(self._height, color, shape)
return StatusEntry(simplified(data[2]), color, shape, icon)
return StatusEntry(simplified(data[2]), color, theme, shape, icon)
except Exception:
logger.error("Could not parse entry %s", str(data))
return None
def refreshIcons(self) -> None:
"""Refresh all icons."""
for entry in self._store.values():
entry.color = SHARED.theme.parseColor(entry.theme)
entry.icon = NWStatus.createIcon(self._height, entry.color, entry.shape)
return
@staticmethod
def createIcon(height: int, color: QColor, shape: nwStatusShape) -> QIcon:
"""Generate an icon for a status label."""
+4 -4
View File
@@ -28,13 +28,13 @@ import logging
from PyQt6.QtCore import pyqtSlot
from PyQt6.QtWidgets import (
QAbstractItemView, QComboBox, QDialogButtonBox, QGridLayout, QLabel,
QListWidget, QListWidgetItem, QVBoxLayout, QWidget
QAbstractItemView, QDialogButtonBox, QGridLayout, QLabel, QListWidget,
QListWidgetItem, QVBoxLayout, QWidget
)
from novelwriter import SHARED
from novelwriter.extensions.configlayout import NColorLabel
from novelwriter.extensions.modified import NDialog
from novelwriter.extensions.modified import NComboBox, NDialog
from novelwriter.extensions.switch import NSwitch
from novelwriter.types import QtAccepted, QtDialogCancel, QtDialogOk, QtUserRole
@@ -79,7 +79,7 @@ class GuiDocSplit(NDialog):
self.listBox.setMinimumWidth(400)
self.listBox.setMinimumHeight(180)
self.splitLevel = QComboBox(self)
self.splitLevel = NComboBox(self)
self.splitLevel.addItem(self.tr("Split on Heading Level 1 (Partition)"), 1)
self.splitLevel.addItem(self.tr("Split up to Heading Level 2 (Chapter)"), 2)
self.splitLevel.addItem(self.tr("Split up to Heading Level 3 (Scene)"), 3)
+43 -30
View File
@@ -35,7 +35,7 @@ from PyQt6.QtWidgets import (
from novelwriter import CONFIG, SHARED
from novelwriter.common import compact, describeFont, processDialogSymbols, uniqueCompact
from novelwriter.config import DEF_GUI, DEF_ICONS, DEF_SYNTAX, DEF_TREECOL
from novelwriter.config import DEF_GUI_DARK, DEF_GUI_LIGHT, DEF_ICONS, DEF_TREECOL
from novelwriter.constants import nwLabels, nwQuotes, nwUnicode, trConst
from novelwriter.dialogs.quotes import GuiQuoteSelect
from novelwriter.extensions.configlayout import NColorLabel, NScrollableForm
@@ -165,22 +165,34 @@ class GuiPreferences(NDialog):
)
# Colour Theme
self.guiTheme = NComboBox(self)
self.guiTheme.setMinimumWidth(200)
for theme, name in SHARED.theme.listThemes():
self.guiTheme.addItem(name, theme)
self.guiTheme.setCurrentData(CONFIG.guiTheme, DEF_GUI)
self.lightTheme = NComboBox(self)
self.lightTheme.setMinimumWidth(200)
self.darkTheme = NComboBox(self)
self.darkTheme.setMinimumWidth(200)
for key, theme in SHARED.theme.colourThemes.items():
if theme.dark:
self.darkTheme.addItem(theme.name, key)
else:
self.lightTheme.addItem(theme.name, key)
self.lightTheme.setCurrentData(CONFIG.lightTheme, DEF_GUI_LIGHT)
self.darkTheme.setCurrentData(CONFIG.darkTheme, DEF_GUI_DARK)
self.mainForm.addRow(
self.tr("Colour theme"), self.guiTheme,
self.tr("User interface colour theme."), stretch=(3, 2)
self.tr("Light colour theme"), self.lightTheme,
self.tr("You can change theme mode from the sidebar."), stretch=(3, 2)
)
self.mainForm.addRow(
self.tr("Dark colour theme"), self.darkTheme,
self.tr("You can change theme mode from the sidebar."), stretch=(3, 2)
)
# Icon Theme
self.iconTheme = NComboBox(self)
self.iconTheme.setMinimumWidth(200)
for theme, name in SHARED.theme.iconCache.listThemes():
self.iconTheme.addItem(name, theme)
for key, theme in SHARED.theme.iconCache.iconThemes.items():
self.iconTheme.addItem(theme.name, key)
self.iconTheme.setCurrentData(CONFIG.iconTheme, DEF_ICONS)
self.mainForm.addRow(
@@ -242,18 +254,6 @@ class GuiPreferences(NDialog):
self.sidebar.addButton(title, section)
self.mainForm.addGroupLabel(title, section)
# Document Colour Theme
self.guiSyntax = NComboBox(self)
self.guiSyntax.setMinimumWidth(200)
for syntax, name in SHARED.theme.listSyntax():
self.guiSyntax.addItem(name, syntax)
self.guiSyntax.setCurrentData(CONFIG.guiSyntax, DEF_SYNTAX)
self.mainForm.addRow(
self.tr("Document colour theme"), self.guiSyntax,
self.tr("Colour theme for the editor and viewer."), stretch=(3, 2)
)
# Document Font Family
self.textFont = QLineEdit(self)
self.textFont.setReadOnly(True)
@@ -294,6 +294,7 @@ class GuiPreferences(NDialog):
# Tree Icon Colours
self.iconColTree = NComboBox(self)
self.iconColTree.setMinimumWidth(200)
self.iconColTree.addItem(self.tr("Theme Colours"), DEF_TREECOL)
for key, label in nwLabels.THEME_COLORS.items():
self.iconColTree.addItem(trConst(label), key)
self.iconColTree.setCurrentData(CONFIG.iconColTree, DEF_TREECOL)
@@ -543,6 +544,13 @@ class GuiPreferences(NDialog):
unit=self.tr("px")
)
# Highlight Current Line
self.lineHighlight = NSwitch(self)
self.lineHighlight.setChecked(CONFIG.lineHighlight)
self.mainForm.addRow(
self.tr("Highlight current line"), self.lineHighlight
)
# Show Tabs and Spaces
self.showTabsNSpaces = NSwitch(self)
self.showTabsNSpaces.setChecked(CONFIG.showTabsNSpaces)
@@ -993,18 +1001,23 @@ class GuiPreferences(NDialog):
# Appearance
guiLocale = self.guiLocale.currentData()
guiTheme = self.guiTheme.currentData()
lightTheme = self.lightTheme.currentData()
darkTheme = self.darkTheme.currentData()
iconTheme = self.iconTheme.currentData()
useCharCount = self.useCharCount.isChecked()
updateTheme |= CONFIG.guiTheme != guiTheme
updateTheme |= CONFIG.lightTheme != lightTheme
updateTheme |= CONFIG.darkTheme != darkTheme
updateTheme |= CONFIG.iconTheme != iconTheme
needsRestart |= CONFIG.guiLocale != guiLocale
needsRestart |= CONFIG.guiFont != self._guiFont
refreshTree |= CONFIG.useCharCount != useCharCount
updateSyntax |= CONFIG.lightTheme != lightTheme
updateSyntax |= CONFIG.darkTheme != darkTheme
CONFIG.guiLocale = guiLocale
CONFIG.guiTheme = guiTheme
CONFIG.lightTheme = lightTheme
CONFIG.darkTheme = darkTheme
CONFIG.iconTheme = iconTheme
CONFIG.hideVScroll = self.hideVScroll.isChecked()
CONFIG.hideHScroll = self.hideHScroll.isChecked()
@@ -1013,11 +1026,6 @@ class GuiPreferences(NDialog):
CONFIG.setGuiFont(self._guiFont)
# Document Style
guiSyntax = self.guiSyntax.currentData()
updateSyntax |= CONFIG.guiSyntax != guiSyntax
CONFIG.guiSyntax = guiSyntax
CONFIG.showFullPath = self.showFullPath.isChecked()
CONFIG.incNotesWCount = self.incNotesWCount.isChecked()
CONFIG.setTextFont(self._textFont)
@@ -1058,9 +1066,14 @@ class GuiPreferences(NDialog):
CONFIG.tabWidth = self.tabWidth.value()
# Text Editing
lineHighlight = self.lineHighlight.isChecked()
updateSyntax |= CONFIG.lineHighlight != lineHighlight
CONFIG.spellLanguage = self.spellLanguage.currentData()
CONFIG.autoSelect = self.autoSelect.isChecked()
CONFIG.cursorWidth = self.cursorWidth.value()
CONFIG.lineHighlight = lineHighlight
CONFIG.showTabsNSpaces = self.showTabsNSpaces.isChecked()
CONFIG.showLineEndings = self.showLineEndings.isChecked()
+67 -21
View File
@@ -33,14 +33,14 @@ from PyQt6.QtCore import Qt, pyqtSignal, pyqtSlot
from PyQt6.QtGui import QCloseEvent, QColor
from PyQt6.QtWidgets import (
QAbstractItemView, QApplication, QColorDialog, QDialogButtonBox,
QFileDialog, QGridLayout, QHBoxLayout, QLineEdit, QMenu, QStackedWidget,
QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget
QFileDialog, QGridLayout, QHBoxLayout, QLabel, QLineEdit, QMenu,
QStackedWidget, QTreeWidget, QTreeWidgetItem, QVBoxLayout, QWidget
)
from novelwriter import CONFIG, SHARED
from novelwriter.common import formatFileFilter, qtAddAction, qtLambda, simplified
from novelwriter.constants import nwLabels, trConst
from novelwriter.core.status import NWStatus, StatusEntry
from novelwriter.core.status import CUSTOM_COL, NWStatus, StatusEntry
from novelwriter.enum import nwStatusShape
from novelwriter.extensions.configlayout import NColorLabel, NFixedPage, NScrollableForm
from novelwriter.extensions.modified import NComboBox, NDialog, NIconToolButton
@@ -326,6 +326,7 @@ class _StatusPage(NFixedPage):
self._changed = False
self._color = QColor(100, 100, 100)
self._shape = nwStatusShape.SQUARE
self._theme = CUSTOM_COL
self._icons = {}
self._iPx = SHARED.theme.baseIconHeight
@@ -384,11 +385,26 @@ class _StatusPage(NFixedPage):
self.exportButton.clicked.connect(self._exportLabels)
# Edit Form
self.labelText = QLineEdit(self)
self.labelText.setMaxLength(40)
self.labelText.setPlaceholderText(self.tr("Select item to edit"))
self.labelText.setEnabled(False)
self.labelText.textEdited.connect(self._onNameEdit)
self.editName = QLineEdit(self)
self.editName.setMaxLength(40)
self.editName.setPlaceholderText(self.tr("Select item to edit"))
self.editName.setEnabled(False)
self.editName.textEdited.connect(self._onNameEdit)
self.labelName = QLabel(self.tr("Label"), self)
self.labelName.setBuddy(self.editName)
# Icon Colours
self.iconColor = NComboBox(self)
self.iconColor.setMinimumWidth(200)
self.iconColor.setEnabled(False)
self.iconColor.addItem(self.tr("Custom"), CUSTOM_COL)
for key, label in nwLabels.THEME_COLORS.items():
self.iconColor.addItem(trConst(label), key)
self.iconColor.currentIndexChanged.connect(self._onThemeSelect)
self.labelColor = QLabel(self.tr("Colour"), self)
self.labelColor.setBuddy(self.iconColor)
buttonStyle = (
"QToolButton {padding: 0 4px;} "
@@ -425,6 +441,9 @@ class _StatusPage(NFixedPage):
self.shapeButton.setStyleSheet(buttonStyle)
self.shapeButton.setEnabled(False)
self.labelShape = QLabel(self.tr("Shape"), self)
self.labelShape.setBuddy(self.iconColor)
# Assemble
self.listControls = QVBoxLayout()
self.listControls.addWidget(self.addButton)
@@ -435,10 +454,15 @@ class _StatusPage(NFixedPage):
self.listControls.addWidget(self.importButton)
self.listControls.addWidget(self.exportButton)
self.editBox = QHBoxLayout()
self.editBox.addWidget(self.labelText, 1)
self.editBox.addWidget(self.colorButton, 0)
self.editBox.addWidget(self.shapeButton, 0)
self.editBox = QGridLayout()
self.editBox.addWidget(self.labelName, 0, 0)
self.editBox.addWidget(self.editName, 0, 1, 1, 5)
self.editBox.addWidget(self.labelColor, 1, 0)
self.editBox.addWidget(self.iconColor, 1, 1)
self.editBox.addWidget(self.colorButton, 1, 2)
self.editBox.addWidget(self.labelShape, 1, 3)
self.editBox.addWidget(self.shapeButton, 1, 4)
self.editBox.setColumnStretch(5, 1)
self.innerBox = QGridLayout()
self.innerBox.addWidget(self.listBox, 0, 0)
@@ -496,11 +520,20 @@ class _StatusPage(NFixedPage):
self._changed = True
return
@pyqtSlot(int)
def _onThemeSelect(self, index: int) -> None:
"""Update the colour handling on theme selection change."""
self._theme = str(self.iconColor.currentData())
self._setButtonIcons()
self._updateIcon()
return
@pyqtSlot()
def _onColorSelect(self) -> None:
"""Open a dialog to select the status icon colour."""
if (color := QColorDialog.getColor(self._color, self, self.trSelColor)).isValid():
self._color = color
self._theme = CUSTOM_COL
self._setButtonIcons()
self._updateIcon()
return
@@ -511,7 +544,8 @@ class _StatusPage(NFixedPage):
color = QColor(100, 100, 100)
shape = nwStatusShape.SQUARE
icon = NWStatus.createIcon(self._iPx, color, shape)
self._addItem(None, StatusEntry(self.tr("New Item"), color, shape, icon, 0))
theme = str(self.iconColor.currentData())
self._addItem(None, StatusEntry(self.tr("New Item"), color, theme, shape, icon, 0))
self._changed = True
return
@@ -537,22 +571,26 @@ class _StatusPage(NFixedPage):
entry: StatusEntry = item.data(self.C_DATA, self.D_ENTRY)
self._color = entry.color
self._shape = entry.shape
self._theme = entry.theme
self._setButtonIcons()
self.labelText.setText(entry.name)
self.labelText.selectAll()
self.labelText.setFocus()
self.editName.setText(entry.name)
self.editName.selectAll()
self.editName.setFocus()
self.labelText.setEnabled(True)
self.editName.setEnabled(True)
self.iconColor.setEnabled(True)
self.colorButton.setEnabled(True)
self.shapeButton.setEnabled(True)
else:
self._color = QColor(100, 100, 100)
self._shape = nwStatusShape.SQUARE
self._theme = CUSTOM_COL
self._setButtonIcons()
self.labelText.setText("")
self.editName.setText("")
self.labelText.setEnabled(False)
self.editName.setEnabled(False)
self.iconColor.setEnabled(False)
self.colorButton.setEnabled(False)
self.shapeButton.setEnabled(False)
return
@@ -608,10 +646,11 @@ class _StatusPage(NFixedPage):
def _updateIcon(self) -> None:
"""Apply changes made to a status icon."""
if item := self._getSelectedItem():
icon = NWStatus.createIcon(self._iPx, self._color, self._shape)
icon = NWStatus.createIcon(self._iPx, self._pickColor(), self._shape)
entry: StatusEntry = item.data(self.C_DATA, self.D_ENTRY)
entry.color = self._color
entry.shape = self._shape
entry.theme = self._theme
entry.icon = icon
item.setIcon(self.C_LABEL, icon)
self._changed = True
@@ -658,11 +697,18 @@ class _StatusPage(NFixedPage):
def _setButtonIcons(self) -> None:
"""Set the colour of the colour button."""
icon = NWStatus.createIcon(self._iPx, self._color, nwStatusShape.SQUARE)
icon = NWStatus.createIcon(self._iPx, self._pickColor(), nwStatusShape.SQUARE)
self.iconColor.setCurrentData(self._theme, CUSTOM_COL)
self.colorButton.setIcon(icon)
self.shapeButton.setIcon(self._icons[self._shape])
return
def _pickColor(self) -> QColor:
"""Get the correct colour value based on selections."""
if self._theme == CUSTOM_COL:
return self._color
return SHARED.theme.getBaseColor(self._theme)
class _ReplacePage(NFixedPage):

Some files were not shown because too many files have changed in this diff Show More