NeoMutt  2024-04-25-89-g194907
Teaching an old dog new tricks
No Matches
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 Window, 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().


Data Description Links
RootWindow Parent of all Windows


Function Description Links
rootwin_cleanup() Free all the default Windows
rootwin_config_observer() Notification that a Config Variable has changed observer_t, observer_api
rootwin_new() Create the default Windows
rootwin_resize_observer() Notification that the terminal has been resized observer_t, observer_api
rootwin_set_size() Set the dimensions of the Root Window
rootwin_window_observer() Notification that a Window has changed observer_t, observer_api