def display(self, stats, cs_status=None):
        """Display stats on the screen.

        :param stats: Stats database to display
        :param cs_status:
            "None": standalone or server mode
            "Connected": Client is connected to a Glances server
            "SNMP": Client is connected to a SNMP server
            "Disconnected": Client is disconnected from the server

        :return: True if the stats have been displayed else False if the help have been displayed
        """
        # Init the internal line/column for Glances Curses
        self.init_line_column()

        # Update the stats messages
        ###########################

        # Get all the plugins but quicklook and process list
        self.args.cs_status = cs_status
        __stat_display = self.__get_stat_display(stats, layer=cs_status)

        # Adapt number of processes to the available space
        max_processes_displayed = (
            self.term_window.getmaxyx()[0]
            - 11
            - (0 if 'docker' not in __stat_display else self.get_stats_display_height(__stat_display["docker"]))
            - (
                0
                if 'processcount' not in __stat_display
                else self.get_stats_display_height(__stat_display["processcount"])
            )
            - (0 if 'amps' not in __stat_display else self.get_stats_display_height(__stat_display["amps"]))
            - (0 if 'alert' not in __stat_display else self.get_stats_display_height(__stat_display["alert"]))
        )

        try:
            if self.args.enable_process_extended:
                max_processes_displayed -= 4
        except AttributeError:
            pass
        if max_processes_displayed < 0:
            max_processes_displayed = 0
        if glances_processes.max_processes is None or glances_processes.max_processes != max_processes_displayed:
            logger.debug("Set number of displayed processes to {}".format(max_processes_displayed))
            glances_processes.max_processes = max_processes_displayed

        # Get the processlist
        __stat_display["processlist"] = stats.get_plugin('processlist').get_stats_display(args=self.args)

        # Display the stats on the curses interface
        ###########################################

        # Help screen (on top of the other stats)
        if self.args.help_tag:
            # Display the stats...
            self.display_plugin(stats.get_plugin('help').get_stats_display(args=self.args))
            # ... and exit
            return False

        # =====================================
        # Display first line (system+ip+uptime)
        # Optionally: Cloud on second line
        # =====================================
        self.__display_header(__stat_display)
        self.separator_line()

        # ==============================================================
        # Display second line (<SUMMARY>+CPU|PERCPU+<GPU>+LOAD+MEM+SWAP)
        # ==============================================================
        self.__display_top(__stat_display, stats)
        self.init_column()
        self.separator_line()

        # ==================================================================
        # Display left sidebar (NETWORK+PORTS+DISKIO+FS+SENSORS+Current time)
        # ==================================================================
        self.__display_left(__stat_display)

        # ====================================
        # Display right stats (process and co)
        # ====================================
        self.__display_right(__stat_display)

        # =====================
        # Others popup messages
        # =====================

        # Display edit filter popup
        # Only in standalone mode (cs_status is None)
        if self.edit_filter and cs_status is None:
            new_filter = self.display_popup(
                'Process filter pattern: \n\n'
                + 'Examples:\n'
                + '- python\n'
                + '- .*python.*\n'
                + '- /usr/lib.*\n'
                + '- name:.*nautilus.*\n'
                + '- cmdline:.*glances.*\n'
                + '- username:nicolargo\n'
                + '- username:^root        ',
                popup_type='input',
                input_value=glances_processes.process_filter_input,
            )
            glances_processes.process_filter = new_filter
        elif self.edit_filter and cs_status is not None:
            self.display_popup('Process filter only available in standalone mode')
        self.edit_filter = False

        # Display kill process confirmation popup
        # Only in standalone mode (cs_status is None)
        if self.kill_process and cs_status is None:
            selected_process_raw = stats.get_plugin('processlist').get_raw()[self.args.cursor_position]
            confirm = self.display_popup(
                'Kill process: {} (pid: {}) ?\n\nConfirm ([y]es/[n]o): '.format(
                    selected_process_raw['name'], selected_process_raw['pid']
                ),
                popup_type='yesno',
            )
            if confirm.lower().startswith('y'):
                try:
                    ret_kill = glances_processes.kill(selected_process_raw['pid'])
                except Exception as e:
                    logger.error('Can not kill process {} ({})'.format(selected_process_raw['name'], e))
                else:
                    logger.info(
                        'Kill signal has been sent to process {} (return code: {})'.format(
                            selected_process_raw['name'], ret_kill
                        )
                    )

        elif self.kill_process and cs_status is not None:
            self.display_popup('Kill process only available in standalone mode')
        self.kill_process = False

        # Display graph generation popup
        if self.args.generate_graph:
            self.display_popup('Generate graph in {}'.format(self.args.export_graph_path))

        return True