def METHOD_NAME(self) -> None:
    """Start application mode."""
    loop = asyncio.get_running_loop()
    def do_exit() -> None:
        """Callback to force exit."""
        asyncio.run_coroutine_threadsafe(
            self._app._post_message(messages.ExitApp()), loop=loop
        )
    if not WINDOWS:
        for _signal in (signal.SIGINT, signal.SIGTERM):
            loop.add_signal_handler(_signal, do_exit)
    self._write(b"__GANGLION__\n")
    self.write("\x1b[?1049h")  # Alt screen
    self._enable_mouse_support()
    self.write("\x1b[?25l")  # Hide cursor
    self.write("\033[?1003h\n")
    size = Size(80, 24) if self._size is None else Size(*self._size)
    event = events.Resize(size, size)
    asyncio.run_coroutine_threadsafe(
        self._app._post_message(event),
        loop=loop,
    )
    self._request_terminal_sync_mode_support()
    self._enable_bracketed_paste()
    self.flush()
    self._key_thread.start()