docs: def msg_curse(self, args=None, max_width=None):
          """Return the dict to display in the curse interface."""
          # Init the return message
          ret = []
  
          # Only process if stats exist and display plugin enable...
          if not self.stats or self.is_disable():
              return ret
  
          # Max size for the interface name
          name_max_width = max_width - 12
  
          # Header
          msg = '{:{width}}'.format('NETWORK', width=name_max_width)
          ret.append(self.curse_add_line(msg, "TITLE"))
          if args.network_cumul:
              # Cumulative stats
              if args.network_sum:
                  # Sum stats
                  msg = '{:>14}'.format('Rx+Tx')
                  ret.append(self.curse_add_line(msg))
              else:
                  # Rx/Tx stats
                  msg = '{:>7}'.format('Rx')
                  ret.append(self.curse_add_line(msg))
                  msg = '{:>7}'.format('Tx')
                  ret.append(self.curse_add_line(msg))
          else:
              # Bitrate stats
              if args.network_sum:
                  # Sum stats
                  msg = '{:>14}'.format('Rx+Tx/s')
                  ret.append(self.curse_add_line(msg))
              else:
                  msg = '{:>7}'.format('Rx/s')
                  ret.append(self.curse_add_line(msg))
                  msg = '{:>7}'.format('Tx/s')
                  ret.append(self.curse_add_line(msg))
          # Interface list (sorted by name)
          for i in self.sorted_stats():
              # Do not display interface in down state (issue #765)
              if ('is_up' in i) and (i['is_up'] is False):
                  continue
              # Format stats
              # Is there an alias for the interface name ?
              ifrealname = i['interface_name'].split(':')[0]
              ifname = self.has_alias(i['interface_name'])
              if ifname is None:
                  ifname = ifrealname
              if len(ifname) > name_max_width:
                  # Cut interface name if it is too long
                  ifname = '_' + ifname[-name_max_width + 1:]
  
              if args.byte:
                  # Bytes per second (for dummy)
                  to_bit = 1
                  unit = ''
              else:
                  # Bits per second (for real network administrator | Default)
                  to_bit = 8
                  unit = 'b'
  
              if args.network_cumul:
                  rx = self.auto_unit(int(i['cumulative_rx'] * to_bit)) + unit
                  tx = self.auto_unit(int(i['cumulative_tx'] * to_bit)) + unit
                  sx = self.auto_unit(int(i['cumulative_rx'] * to_bit) +
                                      int(i['cumulative_tx'] * to_bit)) + unit
              else:
                  rx = self.auto_unit(int(i['rx'] // i['time_since_update'] * to_bit)) + unit
                  tx = self.auto_unit(int(i['tx'] // i['time_since_update'] * to_bit)) + unit
                  sx = self.auto_unit(int(i['rx'] // i['time_since_update'] * to_bit) +
                                      int(i['tx'] // i['time_since_update'] * to_bit)) + unit
  
              # New line
              ret.append(self.curse_new_line())
              msg = '{:{width}}'.format(ifname, width=name_max_width)
              ret.append(self.curse_add_line(msg))
              if args.network_sum:
                  msg = '{:>14}'.format(sx)
                  ret.append(self.curse_add_line(msg))
              else:
                  msg = '{:>7}'.format(rx)
                  ret.append(self.curse_add_line(
                      msg, self.get_views(item=i[self.get_key()], key='rx', option='decoration')))
                  msg = '{:>7}'.format(tx)
                  ret.append(self.curse_add_line(
                      msg, self.get_views(item=i[self.get_key()], key='tx', option='decoration')))
  
          return ret