{
private final static String startClass = "jalview.bin.Jalview";
+ private final static String headlessProperty = "java.awt.headless";
+
private static boolean checkJVMSymlink(String testBin)
{
File testBinFile = new File(testBin);
final String javaBinDir = System.getProperty("java.home")
+ File.separator + "bin" + File.separator;
String javaBin = null;
- if (javaBin == null && checkJVMSymlink(javaBinDir + appName))
- {
- javaBin = javaBinDir + appName;
- }
- if (javaBin == null && checkJVMSymlink(javaBinDir + "Jalview"))
+ for (String name : new String[] { appName, "Jalview", "java",
+ "java.exe" })
{
- javaBin = javaBinDir + "Jalview";
+ if (checkJVMSymlink(javaBinDir + name))
+ {
+ javaBin = javaBinDir + name;
+ break;
+ }
}
if (javaBin == null)
{
boolean debug = false;
boolean wait = true;
boolean quiet = false;
+ boolean headless = false;
+ boolean gui = false;
// must set --debug before --launcher...
boolean launcherstop = false;
boolean launcherprint = false;
{
quiet = true;
}
+ if (arg.equals("--headless"))
+ {
+ headless = true;
+ }
+ if (arg.equals("--gui"))
+ {
+ gui = true;
+ }
if (debug && arg.equals("--launcherprint"))
{
launcherprint = true;
arguments.add(arg);
}
}
+ if (gui)
+ {
+ // --gui takes precedence over --headless
+ headless = false;
+ }
// use saved preferences if no cmdline args
boolean useCustomisedSettings = LaunchUtils
boolean memSet = false;
boolean dockIcon = false;
boolean dockName = false;
+ boolean headlessProp = false;
for (int i = 0; i < command.size(); i++)
{
String arg = command.get(i);
{
dockName = true;
}
+ else if (arg.startsWith("-D" + headlessProperty + "="))
+ {
+ headlessProp = true;
+ }
}
if (!memSet)
+ appName);
}
}
+ if (headless && !headlessProp)
+ {
+ System.setProperty(headlessProperty, "true");
+ command.add("-D" + headlessProperty + "=true");
+ }
String scalePropertyArg = HiDPISetting.getScalePropertyArg();
if (scalePropertyArg != null)
ISMACOS=1
fi
+# check for headless mode
+HEADLESS=0
+for ARG in "${@}"; do
+ if [ "${ARG}" = "--headless" ]; then
+ HEADLESS=1
+ elif [ "${ARG}" = "--gui" ]; then
+ # --gui takes precedence over --headless
+ HEADLESS=0
+ break
+ fi
+done
+
declare -a JVMARGS=()
# set vars for being inside the macos App Bundle
JAVA="${APPDIR}/jre/bin/java"
fi
+if [ "${HEADLESS}" = 1 ]; then
+ # this suppresses the Java icon appearing in the macOS Dock and maybe other things in other OSes
+ JVMARGS=( "${JVMARGS[@]}" "-Djava.awt.headless=true" )
+fi
+
SYSJAVA=java
GETDOWNTXT="${APPDIR}/getdown.txt"