package jalview.bin; import java.awt.Toolkit; public class HiDPISetting { public static final int dpi; public static final int scale; private static final int hidpi = 110; private static final String scalePropertyName = "sun.java2d.uiScale"; private static final boolean isAMac; private static final boolean isLinux; private static final boolean isWindows; public static final String forceHiDPISettingPropertyName = "forceHiDPISetting"; private static final boolean forceHiDPISetting; static { isAMac = System.getProperty("os.name").indexOf("Mac") > -1; isLinux = System.getProperty("os.name").toLowerCase() .indexOf("linux") > -1; isWindows = System.getProperty("os.name").toLowerCase() .indexOf("windows") > -1; dpi = Toolkit.getDefaultToolkit().getScreenResolution(); scale = dpi / hidpi + 1; String forceHiDPISettingProperty = System .getProperty(forceHiDPISettingPropertyName); forceHiDPISetting = forceHiDPISettingProperty != null && forceHiDPISettingProperty.equalsIgnoreCase("true"); if (doCondition()) { System.out.println("Property '" + forceHiDPISettingPropertyName + "'=" + forceHiDPISettingProperty); System.out.println("boolean forceHiDPISetting=" + forceHiDPISetting); System.out.println("DPI detected as " + dpi + ". Scaling factor set to " + scale + "."); } } private static synchronized boolean doCondition() { return (scale > 1 && isLinux) || forceHiDPISetting; } public static synchronized String getScalePropertyArg() { // HiDPI setting. Just looking at Linux to start with. Test with Windows. if (doCondition()) { return "-D" + scalePropertyName + "=" + scale; } return null; } }