+ if (!assumeheadless)
+ {
+ for (String a : assumeHeadlessArgs)
+ {
+ if (arg.equals("--" + a) || arg.startsWith("--" + a + "="))
+ {
+ assumeheadless = true;
+ }
+ }
+ }
+
+ if (arg.equals("--output=-")
+ || (arg.equals("-") && "--output".equals(previousArg)))
+ {
+ stdout = true;
+ }
+
+ if (debug)
+ {
+ 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
+ if (arg.startsWith("--launcher"))
+ {
+ continue;
+ }
+ // jvmmempc and jvmmemmax args used to set memory and are not passed on to
+ // startClass
+ if (arg.startsWith(
+ "-" + MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME + "="))
+ {
+ jvmmempc = arg.substring(
+ MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME.length()
+ + 2);
+ }
+ else if (arg.startsWith(
+ "-" + MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME + "="))
+ {
+ jvmmemmax = arg.substring(
+ MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME.length() + 2);
+ }
+ // --doubledash versions
+ else if (arg.startsWith("--"
+ + MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME + "="))
+ {
+ jvmmempc = arg.substring(
+ MemorySetting.MAX_HEAPSIZE_PERCENT_PROPERTY_NAME.length()
+ + 3);
+ }
+ else if (arg.startsWith(
+ "--" + MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME + "="))
+ {
+ jvmmemmax = arg.substring(
+ MemorySetting.MAX_HEAPSIZE_PROPERTY_NAME.length() + 3);
+ }
+ // retain arg
+ else
+ {
+ arguments.add(arg);
+ }
+ }
+ 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");
+
+ // if we're using jalview.bin.Launcher we always assume a console is in use
+ final String javaBin = LaunchUtils.findJavaBin(true);
+
+ List<String> command = new ArrayList<>();