docs: def _run(self, stdscr):
          """Start the actual service monitor"""
          with self._lock:
              curses.use_default_colors()
              curses.curs_set(False)
              curses.init_pair(1, curses.COLOR_RED, -1)
              curses.init_pair(2, curses.COLOR_BLACK, -1)
              curses.init_pair(3, curses.COLOR_GREEN, -1)
              self._redraw_screen(stdscr)
  
          try:
              while not self.shutdown:
                  now = int(time.time())
                  with self._lock:
                      overview = self._node_status.copy()
                  cardnumber = 0
                  for host, status in overview.items():
                      age = now - int(status["last_seen"] / 1000)
                      with self._lock:
                          if age > 90:
                              del self._node_status[host]
                          else:
                              card = self._get_card(cardnumber)
                              card.erase()
                              card.move(0, 0)
                              card.addstr("Host: ", curses.color_pair(3))
                              card.addstr(host)
                              card.move(1, 0)
                              card.addstr("Service: ", curses.color_pair(3))
                              if "service" in status and status["service"]:
                                  card.addstr(status["service"])
                              else:
                                  card.addstr("---", curses.color_pair(2))
                              card.move(2, 0)
                              card.addstr("State: ", curses.color_pair(3))
                              if "status" in status:
                                  status_code = status["status"]
                                  state_string = CommonService.human_readable_state.get(
                                      status_code, str(status_code)
                                  )
                                  state_color = None
                                  if status_code in (
                                      CommonService.SERVICE_STATUS_PROCESSING,
                                      CommonService.SERVICE_STATUS_TIMER,
                                  ):
                                      state_color = curses.color_pair(3) + curses.A_BOLD
                                  if status_code == CommonService.SERVICE_STATUS_IDLE:
                                      state_color = curses.color_pair(2) + curses.A_BOLD
                                  if status_code == CommonService.SERVICE_STATUS_ERROR:
                                      state_color = curses.color_pair(1)
                                  if state_color:
                                      card.addstr(state_string, state_color)
                                  else:
                                      card.addstr(state_string)
                              card.move(3, 0)
                              if age >= 10:
                                  card.addstr(
                                      "last seen %d seconds ago" % age,
                                      curses.color_pair(1)
                                      + (0 if age < 60 else curses.A_BOLD),
                                  )
                              card.noutrefresh()
                              cardnumber = cardnumber + 1
                  if cardnumber < len(self.cards):
                      with self._lock:
                          self._erase_card(cardnumber)
                  with self._lock:
                      curses.doupdate()
                  time.sleep(0.2)
          except KeyboardInterrupt:
              pass  # User pressed CTRL+C
          self._transport.disconnect()