def main(): logger.info(f'\n#\n# Booting Kanmail {get_version()}\n#') init_window_hacks() boot() server_thread = Thread(name='Server', target=run_server) server_thread.daemon = True server_thread.start() run_thread(validate_or_remove_license) run_thread(run_cache_cleanup_later) # Ensure the webserver is up & running by polling it waits = 0 while waits < 10: try: response = requests.get( f'http://{SERVER_HOST}:{server.get_port()}/ping') response.raise_for_status() except requests.RequestException as e: logger.warning(f'Waiting for main window: {e}') sleep(0.1 * waits) waits += 1 else: break else: logger.critical('Webserver did not start properly!') sys.exit(2) create_window( unique_key='main', **get_window_settings(), ) # Let's hope this thread doesn't fail! monitor_thread = Thread( name='Thread monitor', target=monitor_threads, args=(server_thread, ), ) monitor_thread.daemon = True monitor_thread.start() if DEBUG: sleep(1) # give webpack a second to start listening # Start the GUI - this will block until the main window is destroyed webview.start(gui=GUI_LIB, debug=DEBUG) # Main window closed, cleanup/exit sys.exit()
def open_window(): link = request.args['url'] if not create_window( link, width=int(request.args['width']), height=int(request.args['height']), unique_key=request.args.get('unique_key'), ): return abort(500, f'Could not open {link} window') return '', 204
def open_window() -> Tuple[str, int]: link = request.args['url'] if not create_window( link, width=int(request.args['width']), height=int(request.args['height']), unique_key=request.args.get('unique_key'), confirm_close=request.args.get('confirm_close'), resizable=not (request.args.get('resizable') == 'false'), ): abort(500, f'Could not open {link} window') return '', 204