improve detection and handling on headless systems

This commit is contained in:
Craig Raw 2022-10-25 08:34:31 +02:00
parent ab2c77695b
commit ed69a86529
2 changed files with 23 additions and 7 deletions

View file

@ -7,7 +7,15 @@ public enum Interface {
public static Interface get() {
if(currentInterface == null) {
currentInterface = DESKTOP;
if(java.awt.GraphicsEnvironment.isHeadless()) {
if("Monocle".equalsIgnoreCase(System.getProperty("glass.platform"))) {
currentInterface = TERMINAL;
} else {
throw new UnsupportedOperationException("Headless environment detected but Monocle platform not found");
}
} else {
currentInterface = DESKTOP;
}
}
return currentInterface;

View file

@ -86,13 +86,21 @@ public class SparrowWallet {
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
if(args.terminal || java.awt.GraphicsEnvironment.isHeadless()) {
if(args.terminal) {
Interface.set(Interface.TERMINAL);
PlatformImpl.setTaskbarApplication(false);
Drongo.removeRootLogAppender("STDOUT");
com.sun.javafx.application.LauncherImpl.launchApplication(SparrowTerminal.class, SparrowWalletPreloader.class, argv);
} else {
com.sun.javafx.application.LauncherImpl.launchApplication(SparrowDesktop.class, SparrowWalletPreloader.class, argv);
}
try {
if(Interface.get() == Interface.TERMINAL) {
PlatformImpl.setTaskbarApplication(false);
Drongo.removeRootLogAppender("STDOUT");
com.sun.javafx.application.LauncherImpl.launchApplication(SparrowTerminal.class, SparrowWalletPreloader.class, argv);
} else {
com.sun.javafx.application.LauncherImpl.launchApplication(SparrowDesktop.class, SparrowWalletPreloader.class, argv);
}
} catch(UnsupportedOperationException e) {
getLogger().error("Unable to launch application", e);
System.out.println("Use Sparrow Server on a headless (no display) system");
}
}