Merge branch 'develop' into feature/JAL-2422ChimeraX
[jalview.git] / src / jalview / bin / Launcher.java
index fb1c5cd..b8d31c2 100644 (file)
@@ -26,6 +26,8 @@ import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
 import java.util.List;
 
+import jalview.util.ChannelProperties;
+
 /**
  * A Launcher class for Jalview. This class is used to launch Jalview from the
  * shadowJar when Getdown is not used or available. It attempts to take all the
@@ -45,12 +47,13 @@ public class Launcher
 {
   private final static String startClass = "jalview.bin.Jalview";
 
-  private final static String dockIconPath = "JalviewLogo_Huge.png";
+  private final static String dockIconPath = ChannelProperties
+          .getProperty("logo.512");
 
   /**
    * 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 and
-   * -jvmmemmax application arguments. If on a Mac then extra dock:icon and
+   * the same arguments but with memory adjusted based on extracted -jvmmempc
+   * and -jvmmemmax application arguments. If on a Mac then extra dock:icon and
    * dock:name arguments are also set.
    * 
    * @param args
@@ -130,7 +133,7 @@ public class Launcher
     if (!memSet)
     {
       long maxMemLong = MemorySetting.getMemorySetting(jvmmemmax, jvmmempc);
-      
+
       if (maxMemLong > 0)
       {
         memSetting = "-Xmx" + Long.toString(maxMemLong);
@@ -149,20 +152,34 @@ public class Launcher
       {
         // -Xdock:name=... doesn't actually work :(
         // Leaving it in in case it gets fixed
-        command.add("-Xdock:name=" + "Jalview");
+        command.add(
+                "-Xdock:name=" + ChannelProperties.getProperty("app_name"));
       }
     }
 
+    String scalePropertyArg = HiDPISetting.getScalePropertyArg();
+    if (scalePropertyArg != null)
+    {
+      System.out.println("Running " + startClass + " with scale setting "
+              + scalePropertyArg);
+      command.add(scalePropertyArg);
+    }
+
     command.add(startClass);
     command.addAll(arguments);
 
     final ProcessBuilder builder = new ProcessBuilder(command);
 
-    // System.out.println("COMMAND: " + String.join(" ", builder.command()));
+    if (Boolean.parseBoolean(System.getProperty("launcherprint", "false")))
+    {
+      System.out.println(
+              "LAUNCHER COMMAND: " + String.join(" ", builder.command()));
+    }
     System.out.println("Running " + startClass + " with "
-            + (memSetting == null ? "no memory setting" : memSetting));
+            + (memSetting == null ? "no memory setting"
+                    : ("memory setting " + memSetting)));
 
-    if (Boolean.parseBoolean(System.getProperty("launcherstop")))
+    if (Boolean.parseBoolean(System.getProperty("launcherstop", "false")))
     {
       System.exit(0);
     }
@@ -176,7 +193,8 @@ public class Launcher
       if (e.getMessage().toLowerCase().contains("memory"))
       {
         System.out.println("Caught a memory exception: " + e.getMessage());
-        // Probably the "Cannot allocate memory" error, try without the memory setting
+        // Probably the "Cannot allocate memory" error, try without the memory
+        // setting
         ArrayList<String> commandNoMem = new ArrayList<>();
         for (int i = 0; i < command.size(); i++)
         {