@Override
	public void start(Stage stage) {
		// Notify the thread util that FX has been initialized
		FxThreadUtil.onInitialize();

		// Setup global style
		setUserAgentStylesheet(new RecafTheme().getUserAgentStylesheet());

		// Get services
		DockingLayoutManager dockingLayoutManager = recaf.get(DockingLayoutManager.class);
		KeybindingConfig keybindingConfig = recaf.get(KeybindingConfig.class);
		WindowManager windowManager = recaf.get(WindowManager.class);
		WorkspaceManager workspaceManager = recaf.get(WorkspaceManager.class);

		// Get components
		MainMenu menu = recaf.get(MainMenu.class);
		LoggingPane logging = recaf.get(LoggingPane.class);

		// Layout
		BorderPane wrapper = new BorderPane();
		wrapper.setTop(menu);
		wrapper.setCenter(dockingLayoutManager.getRoot().getBackingRegion());
		wrapper.getStyleClass().addAll("padded", "bg-inset");

		// Display
		WindowScaleConfig scaleConfig = recaf.get(WindowScaleConfig.class);
		Scene scene = new RecafScene(wrapper);
		scene.addEventFilter(KeyEvent.KEY_PRESSED, (KeyEvent event) -> {
			// Global keybind handling
			if (keybindingConfig.getQuickNav().match(event)) {
				Stage quickNav = windowManager.getQuickNav();
				quickNav.show();
				quickNav.requestFocus();
			} else if (keybindingConfig.getExport().match(event) && workspaceManager.hasCurrentWorkspace()) {
				recaf.get(PathExportingManager.class).export(workspaceManager.getCurrent());
			}
		});
		stage.setMinWidth(900 / scaleConfig.getScale());
		stage.setMinHeight(600 / scaleConfig.getScale());
		stage.setScene(scene);
		stage.getIcons().add(Icons.getImage(Icons.LOGO));
		stage.setTitle("Recaf");
		stage.setOnCloseRequest(e -> ExitDebugLoggingHook.exit(0));
		stage.show();

		// Register main window
		windowManager.register(WindowManager.WIN_MAIN, stage);

		// Publish UI init event
		recaf.getContainer().getBeanContainer().getEvent().fire(new UiInitializationEvent());
	}
JavaFX application entry point.

@author Matt Coley
recaf-ui/src/main/java/software/coley/recaf/RecafApplication.java