From f7b6bd8d7151ec7f8288b47dbf4847d5b01c492d Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Fri, 8 Apr 2022 10:29:52 +0200 Subject: [PATCH] Added configuration section to guide --- nomadnet/NomadNetworkApp.py | 3 + nomadnet/ui/textui/Extras.py | 2 +- nomadnet/ui/textui/Guide.py | 202 ++++++++++++++++++++++++++++++++++- 3 files changed, 205 insertions(+), 2 deletions(-) diff --git a/nomadnet/NomadNetworkApp.py b/nomadnet/NomadNetworkApp.py index 484e916..2a036c1 100644 --- a/nomadnet/NomadNetworkApp.py +++ b/nomadnet/NomadNetworkApp.py @@ -512,6 +512,9 @@ def applyConfig(self): else: self.config["textui"]["intro_time"] = self.config["textui"].as_int("intro_time") + if not "intro_text" in self.config["textui"]: + self.config["textui"]["intro_text"] = "Nomad Network" + if not "editor" in self.config["textui"]: self.config["textui"]["editor"] = "editor" diff --git a/nomadnet/ui/textui/Extras.py b/nomadnet/ui/textui/Extras.py index ce62430..f0314df 100644 --- a/nomadnet/ui/textui/Extras.py +++ b/nomadnet/ui/textui/Extras.py @@ -5,7 +5,7 @@ def __init__(self, app): font = urwid.font.HalfBlock5x4Font() - big_text = urwid.BigText(("intro_title", "Nomad Network"), font) + big_text = urwid.BigText(("intro_title", self.app.config["textui"]["intro_text"]), font) big_text = urwid.Padding(big_text, align="center", width="clip") intro = urwid.Pile([ diff --git a/nomadnet/ui/textui/Guide.py b/nomadnet/ui/textui/Guide.py index bae43f4..e7a02e6 100644 --- a/nomadnet/ui/textui/Guide.py +++ b/nomadnet/ui/textui/Guide.py @@ -110,6 +110,7 @@ def __init__(self, app, guide_display): GuideEntry(self.app, self, guide_display, "Introduction"), GuideEntry(self.app, self, guide_display, "Concepts & Terminology"), GuideEntry(self.app, self, guide_display, "Hosting a Node"), + GuideEntry(self.app, self, guide_display, "Configuration Options"), GuideEntry(self.app, self, guide_display, "Markup"), self.first_run_entry, GuideEntry(self.app, self, guide_display, "Network Configuration"), @@ -354,6 +355,204 @@ def focus_reader(self): ''' +TOPIC_CONFIG = '''>Configuration Options + +To change the configuration of Nomad Network, you must edit the configuration file. By default, this is located at `!~/.nomadnetwork/config`! on your system. You can open it in any text-editor, and change the options. You can also use the editor built in to this program, under the `![ Config ]`! menu item. The default configuration file contains comments on all the different configuration options present, and explains their possible settings. + +For reference, all the configuration options are listed and explained here as well. The configuration is divided into different sections, each with their own options. + +>> Logging Section + +This section hold configuration directives related to logging output, and is delimited by the `![logging]`! header in the configuration file. Available directives, along with their default values, are as follows: + +>>> +`!loglevel = 4`! +>>>> +Sets the verbosity of the log output. Must be an integer from 0 through 7. +>>>>> +0: Log only critical information +1: Log errors and lower log levels +2: Log warnings and lower log levels +3: Log notices and lower log levels +4: Log info and lower (this is the default) +5: Verbose logging +6: Debug logging +7: Extreme logging +< + +>>> +`!destination = file`! +>>>> +Determines the output destination of logged information. Must be `!file`! or `!console`!. +< + +>>> +`!logfile = ~/.nomadnetwork/logfile`! +>>>> +Path to the log file. Must be a writable filesystem path. +< + +>> Client Section + +This section hold configuration directives related to the client behaviour and user interface of the program. It is delimited by the `![client]`! header in the configuration file. Available directives, along with their default values, are as follows: + +>>> +`!enable_client = yes`! +>>>> +Determines whether the client part of the program should be started on launch. Must be a boolean value. +< + +>>> +`!user_interface = text`! +>>>> +Selects which interface to use. Currently, only the `!text`! interface is available. +< + +>>> +`!downloads_path = ~/Downloads`! +>>>> +Sets the filesystem path to store downloaded files in. +< + +>>> +`!announce_at_start = yes`! +>>>> +Determines whether your LXMF address is automatically announced when the program starts. Must be a boolean value. +< + +>>> +`!try_propagation_on_send_fail = yes`! +>>>> +When this option is enabled, and sending a message directly to a peer fails, Nomad Network will instead deliver the message to the propagation network, for later retrieval by the recipient. +< + +>>> +`!periodic_lxmf_sync = yes`! +>>>> +Whether the program should periodically download messages from available propagation nodes in the background. +< + +>>> +`!lxmf_sync_interval = 360`! +>>>> +The number of minutes between each automatic sync. The default is equal to 6 hours. +< + +>>> +`!lxmf_sync_limit = 8`! +>>>> +On low-bandwidth networks, it can be useful to limit the amount of messages downloaded in each sync. The default is 8. Set to 0 to download all available messages every time a sync occurs. +< + +>> Text UI Section + +This section hold configuration directives related to the look and feel of the text-based user interface of the program. It is delimited by the `![textui]`! header in the configuration file. Available directives, along with their default values, are as follows: + +>>> +`!intro_time = 1`! +>>>> +Number of seconds to display the intro screen. Set to 0 to disable the intro screen. +< + +>>> +`!intro_text = Nomad Network`! +>>>> +The text to display on the intro screen. +< + +>>> +`!editor = editor`! +>>>> +What editor program to use when launching a text editor from within the program. Defaults to the `!editor`! alias, which in turn will use the default editor of the operating system. +< + +>>> +`!glyphs = unicode`! +>>>> +Determines what set of glyphs the program uses for rendering the user interface. +>>>>> +The `!plain`! set only uses ASCII characters, and should work on all terminals, but is rather boring. +The `!unicode`! set uses more interesting glyphs and icons, and should work on most terminals. This is the default. +The `!nerdfont`! set allows using a much wider range of glyphs, icons and graphics, and should be enabled if you are using a Nerd Font in your terminal. +< + +>>> +`!mouse_enabled = yes`! +>>>> +Determines whether the program should react to mouse/touch input. Must be a boolean value. +< + +>>> +`!hide_guide = no`! +>>>> +This option allows hiding the `![ Guide ]`! section of the program. +< + +>>> +`!animation_interval = 1`! +>>>> +Sets the animation refresh rate for certain animations and graphics in the program. Must be an integer. +< + +>>> +`!colormode = 256`! +>>>> +Tells the program what color palette is supported by the terminal. Most terminals support `!256`! colors. If your terminal supports full-color / RGB-mode, set to `!24bit`!. Available options: +>>>>> +`!monochrome`! Single-color (black/white) palette, for monochrome displays +`!16`! Low-color mode for really old-school terminals +`!88`! Standard palletised color-mode for terminals +`!256`! Almost all modern terminals support this mode +`!24bit`! Most new terminals support this full-color mode +< + +>>> +`!theme = dark`! +>>>> +What color theme to use. Set it to match your terminal theme. Can be either `!dark`! or `!light`!. +< + +>> Node Section + +This section holds configuration directives related to the node hosting. It is delimited by the `![node]`! header in the configuration file. Available directives, along with their default values, are as follows: + +>>> +`!enable_node = yes`! +>>>> +Determines whether the node server should be started on launch. Must be a boolean value. +< + +>>> +`!node_name = DisplayName's Node`! +>>>> +Defines what the announced name of the node should be. +< + +>>> +`!announce_at_start = yes`! +>>>> +Determines whether your node is automatically announced on the network when the program starts. Must be a boolean value. +< + +>>> +`!announce_interval = 720`! +>>>> +Determines how often, in minutes, your node is announced on the network. Defaults to 12 hours. +< + +>>> +`!pages_path = ~/.nomadnetwork/storage/pages`! +>>>> +Determines where the node server will look for hosted pages. Must be a readable filesystem path. +< + +>>> +`!files_path = ~/.nomadnetwork/storage/files`! +>>>> +Determines where the node server will look for downloadable files. Must be a readable filesystem path. +< +''' + TOPIC_NETWORKS = '''>Network Configuration Nomad Network uses the Reticulum Network Stack for communication and encryption. This means that it will use any interfaces and communications channels already defined in your Reticulum configuration. @@ -733,9 +932,10 @@ def focus_reader(self): "Concepts & Terminology": TOPIC_CONCEPTS, "Conversations": TOPIC_CONVERSATIONS, "Hosting a Node": TOPIC_HOSTING, + "Configuration Options": TOPIC_CONFIG, "Markup": TOPIC_MARKUP, - "First Run": TOPIC_FIRST_RUN, "Display Test": TOPIC_DISPLAYTEST, "Network Configuration": TOPIC_NETWORKS, "Credits & Licenses": TOPIC_LICENSES, + "First Run": TOPIC_FIRST_RUN, }