X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FLauncher.java;h=507f5013430b2b6e3c956f440382fd9cec5863ef;hb=a6715746d2537e715a08d4ca2a098e94d8d47f5c;hp=e1415beb5886bd37cff01c61209d0392d23f4fb2;hpb=a3f65dbb5ba8bd470a31ba2af72db6d8ddf60546;p=jalview.git diff --git a/src/jalview/bin/Launcher.java b/src/jalview/bin/Launcher.java index e1415be..507f501 100644 --- a/src/jalview/bin/Launcher.java +++ b/src/jalview/bin/Launcher.java @@ -50,8 +50,16 @@ public class Launcher { private final static String startClass = "jalview.bin.Jalview"; + // not setting this yet due to problem with Jmol private final static String headlessProperty = "java.awt.headless"; + // used for headless macOS + private final static String macosHeadlessProperty = "apple.awt.UIElement"; + + // arguments that assume headless mode + private final static String[] assumeHeadlessArgs = { "headless", "output", + "image", "structureimage" }; + /** * main method for jalview.bin.Launcher. This restarts the same JRE's JVM with * the same arguments but with memory adjusted based on extracted -jvmmempc @@ -77,7 +85,9 @@ public class Launcher boolean wait = true; boolean quiet = false; boolean headless = false; + boolean assumeheadless = false; boolean gui = false; + boolean help = false; boolean stdout = false; // must set --debug before --launcher... boolean launcherstop = false; @@ -85,45 +95,70 @@ public class Launcher boolean launcherwait = false; ArrayList arguments = new ArrayList<>(); String previousArg = null; + // set debug first for (String arg : args) { if (arg.equals("--debug")) { debug = true; } + } + for (String arg : args) + { if (arg.equals("--quiet")) { quiet = true; } - if (arg.equals("--headless")) - { - headless = true; - } - if (arg.equals("--gui")) + else if (arg.equals("--gui")) { gui = true; } - if (arg.equals("--output=-") - || (arg.equals("-") && "--output".equals(previousArg))) + else if (arg.equals("--help")) { - stdout = true; + help = true; } - if (debug && arg.equals("--launcherprint")) + else if (arg.equals("--version")) { - launcherprint = true; + help = true; } - if (debug && arg.equals("--launcherstop")) + + if (!assumeheadless) { - launcherstop = true; + for (String a : assumeHeadlessArgs) + { + if (arg.equals("--" + a) || arg.startsWith("--" + a + "=")) + { + assumeheadless = true; + } + } } - if (debug && arg.equals("--launcherwait")) + + if (arg.equals("--output=-") + || (arg.equals("-") && "--output".equals(previousArg))) { - launcherwait = true; + stdout = true; } - // this ends the launcher immediately - if (debug && arg.equals("--launchernowait")) + + if (debug) { - wait = false; + if (arg.equals("--launcherprint")) + { + launcherprint = true; + } + else if (arg.equals("--launcherstop")) + { + launcherstop = true; + } + else if (arg.equals("--launcherwait")) + { + launcherwait = true; + } + else + // this ends the launcher immediately + if (arg.equals("--launchernowait")) + { + wait = false; + } } previousArg = arg; // Don't add the --launcher... args to Jalview launch @@ -166,11 +201,21 @@ public class Launcher arguments.add(arg); } } - if (gui) + if (help) + { + // --help takes precedence over --gui + headless = true; + } + else if (gui) { // --gui takes precedence over --headless headless = false; } + else + { + // --output arguments assume headless mode + headless = assumeheadless; + } final String appName = ChannelProperties.getProperty("app_name"); @@ -212,6 +257,7 @@ public class Launcher boolean dockIcon = false; boolean dockName = false; boolean headlessProp = false; + boolean macosHeadlessProp = false; for (int i = 0; i < command.size(); i++) { String arg = command.get(i); @@ -236,6 +282,10 @@ public class Launcher { headlessProp = true; } + else if (arg.startsWith("-D" + macosHeadlessProperty + "=")) + { + macosHeadlessProp = true; + } } if (!memSet) @@ -263,9 +313,6 @@ public class Launcher // -Xdock:name=... doesn't actually work :( // Leaving it in in case it gets fixed command.add("-Xdock:name=" + appName); - // this launches WITHOUT an icon in the macOS dock. Could be useful for - // getdown? - // command.add("-Dapple.awt.UIElement=false"); // This also does not work for the dock command.add("-Dcom.apple.mrj.application.apple.menu.about.name=" + appName); @@ -274,7 +321,16 @@ public class Launcher if (headless && !headlessProp) { System.setProperty(headlessProperty, "true"); - command.add("-D" + headlessProperty + "=true"); + /* not setting this in java invocation of running jalview due to problem with Jmol */ + if (help) + { + command.add("-D" + headlessProperty + "=true"); + } + } + if (headless && LaunchUtils.isMac && !macosHeadlessProp) + { + System.setProperty(macosHeadlessProperty, "true"); + command.add("-D" + macosHeadlessProperty + "=true"); } String scalePropertyArg = HiDPISetting.getScalePropertyArg();