Overview ======== The main component is :class:`alot.ui.UI`, which provides methods for user input and notifications, sets up the widget tree and maintains the list of active buffers. When you start up alot, :file:`init.py` initializes logging, parses settings and commandline args and instantiates the :class:`UI ` instance of that gets passes around later. From its constructor this instance starts the :mod:`urwid` :class:`mainloop ` that takes over. Apart from the central :class:`UI `, there are two other "managers" responsible for core functionalities, also set up in :file:`init.py`: * :attr:`ui.dbman `: a :class:`DBManager ` to access the email database and * :attr:`alot.settings.settings`: a :class:`SettingsManager ` oo access user settings Every user action, triggered either by key bindings or via the command prompt, is given as commandline string that gets :func:`translated ` to a :class:`Command ` object which is then :meth:`applied `. Different actions are defined as a subclasses of :class:`Command `, which live in :file:`alot/commands/MODE.py`, where MODE is the name of the mode (:class:`Buffer ` type) they are used in.