The first existing file of the following paths is loaded:
- /home/username/.config/config
- /etc/xdg/config

The config file may contain the following commands:

set
===
usage: set key1=val1 [key2=val2 ...] \\
       set key [=] val

Change the value of a setting.

In the first form set takes an arbitrary number of arguments, each argument sets one setting.
This has the advantage that several settings can be changed at once.
That is useful if you want to bind a set command to a key and process that command with ConfigFile.parse_line() if the key is pressed.

In the second form set takes two arguments, the key and the value. Optionally a single equals character may be added in between as third argument.
This has the advantage that key and value are separated by one or more spaces which can improve the readability of a config file.

data types:

  int:
    An integer number in python 3 syntax, as decimal (e.g. 42), hexadecimal (e.g. 0x2a), octal (e.g. 0o52) or binary (e.g. 0b101010).
    Leading zeroes are not permitted to avoid confusion with python 2's syntax for octal numbers.
    It is permissible to group digits with underscores for better readability, e.g. 1_000_000.

  str:
    A text. If it contains spaces it must be wrapped in single or double quotes.

application wide settings:

  answer:
    an int

    42: The answer to everything
    23: The natural number following 22
        and preceding 24

  color.background:
    one of red, green, blue

  color.foreground:
    one of red, green, blue

settings which can have different values for different objects:
  You can specify the object that a value shall refer to by inserting the line `[config-id]` above.
  `config-id` must be replaced by the corresponding identifier for the object.

  greeting:
    a str

    A text that may be displayed
    if your computer is in a good mood.

include
=======
usage: include [--reset-config-id-before | --no-reset-config-id-after] path

Load another config file.

This is useful if a config file is getting so big that you want to split it up
or if you want to have different config files for different use cases which all include the same standard config file to avoid redundancy
or if you want to bind several commands to one key which executes one command with ConfigFile.parse_line().

By default the loaded config file starts with which ever config id is currently active.
This is useful if you want to use the same values for several config ids:
Write the set commands without a config id to a separate config file and include this file for every config id where these settings shall apply.

After the include the config id is reset to the config id which was active at the beginning of the include
because otherwise it might lead to confusion if the config id is changed in the included config file.

positional arguments:
  path                  The config file to load

options:
  --reset-config-id-before
                        Ignore any config id which might be active when starting the include
  --no-reset-config-id-after
                        Treat the included lines as if they were written in the same config file instead of the include command
