code: def notify(self, message, priority='normal', timeout=0, block=False):
          
          def build_line(msg, prio):
              cols = urwid.Columns([urwid.Text(msg)])
              att = settings.get_theming_attribute('global', 'notify_' + prio)
              return urwid.AttrMap(cols, att)
          msgs = [build_line(message, priority)]
  
          if not self._notificationbar:
              self._notificationbar = urwid.Pile(msgs)
          else:
              newpile = self._notificationbar.widget_list + msgs
              self._notificationbar = urwid.Pile(newpile)
          self.update()
  
          def clear(*_):
              self.clear_notify(msgs)
  
          if block:
              # put "cancel to continue" widget as overlay on main widget
              txt = build_line('(escape continues)', priority)
              overlay = urwid.Overlay(txt, self.root_widget,
                                      ('fixed left', 0),
                                      ('fixed right', 0),
                                      ('fixed bottom', 0),
                                      None)
              self.show_as_root_until_keypress(overlay, 'esc',
                                               afterwards=clear)
          else:
              if timeout >= 0:
                  if timeout == 0:
                      timeout = settings.get('notify_timeout')
                  self.mainloop.set_alarm_in(timeout, clear)
          return msgs[0]
docs: opens notification popup.
  
          :param message: message to print
          :type message: str
          :param priority: priority string, used to format the popup: currently,
                           'normal' and 'error' are defined. If you use 'X' here,
                           the attribute 'global_notify_X' is used to format the
                           popup.
          :type priority: str
          :param timeout: seconds until message disappears. Defaults to the value
                          of 'notify_timeout' in the general config section.
                          A negative value means never time out.
          :type timeout: int
          :param block: this notification blocks until a keypress is made
          :type block: bool
          :returns: an urwid widget (this notification) that can be handed to
                    :meth:`clear_notify` for removal