NeoMutt  2021-02-05-666-ge300cd
Teaching an old dog new tricks
Root Window


NeoMutt is built from a set of nested windows. Each window defines a region of the screen which is responsible for a single concept. This could be a high-level component like the Compose Email Dialog, or a single element like the Index Bar (status).

The Root Window is (grand-)parent of all those windows.

The Root Window is container window and not visible.


Every window in the hierarchy is struct MuttWindow, however in these docs they're often given different descriptions.

  • Window: A region of the screen. A Window can be: fixed size; set to maximise (as limited by its parent); set to minimise (around its children). Everything below is also a Window.
  • Dialog: A set of nested Windows that form an interactive component. This is the main way that users interact with NeoMutt. e.g. Index Dialog, Compose Email Dialog.
  • Panel A small sub-division of a Dialog. The Panels are sets of Windows that can be reused in other Dialogs.
  • Container: An invisible non-interactive Window used for shaping, aligning or limiting the size of its children.
  • Bar: A one-line high Window used for displaying help or status info, e.g. Help Bar, Index Bar (status).


Name Type Constructor
Root Window WT_ROOT rootwin_new()


  • None



The Root Window has no data.


Once constructed, it is controlled by the following events:

Event Type Handler
NT_CONFIG rootwin_config_observer()
NT_WINDOW rootwin_window_observer()
SIGWINCH rootwin_set_size() (called by mutt_resize_screen())

The Root Window does not implement MuttWindow::recalc() or MuttWindow::repaint().

| Function | Description | | :----— | :-------— |