def suspend_signal_handler(self, signo, frame):
        """
        By default, i3bar sends SIGSTOP to all children when it is not visible (for example, the screen
        sleeps or you enter full screen mode). This stops the i3pystatus process and all threads within it.
        For some modules, this is not desirable. Thankfully, the i3bar protocol supports setting the "stop_signal"
        and "cont_signal" key/value pairs in the header to allow sending a custom signal when these events occur.

        Here we use SIGUSR2 for both "stop_signal" and "cont_signal" and maintain a toggle to determine whether
        we have just been stopped or continued. When we have been stopped, notify the IntervalModule managers
        that they should suspend any module that does not set the keep_alive flag to a truthy value, and when we
        have been continued, notify the IntervalModule managers that they can resume execution of all modules.
        """
        if signo != signal.SIGUSR2:
            return
        self.stopped = not self.stopped
        if self.stopped:
            [m.suspend() for m in IntervalModule.managers.values()]
        else:
            [m.resume() for m in IntervalModule.managers.values()]